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 Sequencer connected to a default device using MidiSystem.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 MetaEventListener and override meta method. Use MetaMessage object 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.

Byron Kiourtzoglou

Byron is a master software engineer working in the IT and Telecom domains. He is an applications developer in a wide variety of applications/services. He is currently acting as the team leader and technical architect for a proprietary service creation and integration platform for both the IT and Telecom industries in addition to a in-house big data real-time analytics solution. He is always fascinated by SOA, middleware services and mobile development. Byron is co-founder and Executive Editor at Java Code Geeks.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button