sound
Handle Midi playing events
In this tutorial we are going to see how to handle MIDI playing events in a Java Desktop Application. You might find this particularly useful when you want to create a simple media player inside your application and you want to monitor the progress media playing.
In short, in order to handle MIDI playing events you should:
- Obtain the default
Sequencerconnected to a default device usingMidiSystem.getSequencer(). - Create a stream from a file to the MIDI file.
- Sets the current sequence on which the sequencer operates using sequencer.setSequence.
- Create a new
MetaEventListenerand overridemetamethod. UseMetaMessageobject to obtain information about the event.
package com.javacodegeeks.snippets.desktop;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.sound.midi.MetaEventListener;
import javax.sound.midi.MetaMessage;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequencer;
public class HandleMidiPlayingEvents {
public static void main(String[] args) throws Exception {
// Obtains the default Sequencer connected to a default device.
Sequencer sequencer = MidiSystem.getSequencer();
// Opens the device, indicating that it should now acquire any
// system resources it requires and become operational.
sequencer.open();
// create a stream from a file
InputStream is = new BufferedInputStream(new FileInputStream(new File("midifile.mid")));
// Sets the current sequence on which the sequencer operates.
// The stream must point to MIDI file data.
sequencer.setSequence(is);
sequencer.addMetaEventListener(new MetaEventListener() {
public void meta(MetaMessage event) {
if (event.getType() == 88) {
System.out.println("Sequencer started playing");
}
else if (event.getType() == 47) {
System.out.println("Sequencer finished playing");
}
}
});
// Starts playback of the MIDI data in the currently loaded sequence.
sequencer.start();
}
}
This was an example on how to handle MIDI playing events.

