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();