|
|
- package lookbook.midi;
- import javax.sound.midi.*;
- import java.io.*;
- import java.net.*;
- /**
- * <p>Title: </p>
- * <p>Description: how to use java midi from javax.sound.midi's Package</p>
- * <p>Copyright: Copyright (c) 2003</p>
- * <p>Company: </p>
- * @author lookbook
- * @version 1.0
- */
-
- public class MidiMain {
- private static String midiFile = "town.mid";
- private static String midiURI = "http://hostname/midifile";
- private Sequence sequence =null;
- public MidiMain() {
- this.loadAndPlay();
- }
- public void loadAndPlay(){
- try {
- // From file
- sequence = MidiSystem.getSequence(new File(midiFile));
-
- // From URL
- // sequence = MidiSystem.getSequence(new URL("http://hostname/midifile"));
-
- // Create a sequencer for the sequence
- Sequencer sequencer = MidiSystem.getSequencer();
- sequencer.open();
- sequencer.setSequence(sequence);
-
- //Determining the Duration of a Midi Audio File
- double durationInSecs = sequencer.getMicrosecondLength() / 1000000.0;
- System.out.println("the duration of this audio is "+durationInSecs+"secs.");
-
- //Determining the Position of a Midi Sequencer
- double seconds = sequencer.getMicrosecondPosition() / 1000000.0;
- System.out.println("the Position of this audio is "+seconds+"secs.");
-
- //Setting the Volume of Playing Midi Audio
- if (sequencer instanceof Synthesizer) {
- Synthesizer synthesizer = (Synthesizer)sequencer;
- MidiChannel[] channels = synthesizer.getChannels();
-
- // gain is a value between 0 and 1 (loudest)
- double gain = 0.9D;
- for (int i=0; i<channels.length; i++) {
- channels[i].controlChange(7, (int)(gain * 127.0));
- }
- }
-
- // Start playing
- sequencer.start();
-
- //Determining the Position of a Midi Sequencer
- Thread.currentThread().sleep(5000);
- seconds = sequencer.getMicrosecondPosition() / 1000000.0;
- System.out.println("the Position of this audio is "+seconds+"secs.");
-
- //Add a listener for meta message events
- sequencer.addMetaEventListener(
- new MetaEventListener() {
- public void meta(MetaMessage event) {
- // Sequencer is done playing
- if (event.getType() == 47) {
- System.out.println("Sequencer is done playing.");
- }
- }
- });
- }catch (MalformedURLException e) {
- }catch (IOException e) {
- }catch (MidiUnavailableException e) {
- }catch (InvalidMidiDataException e) {
- }catch (InterruptedException e){
- }
- }
-
- public static void main(String[] args) {
- MidiMain midi = new MidiMain();
-
- }
-
- }
|
|