Skip to content

Instantly share code, notes, and snippets.

@indy
Created April 8, 2010 21:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save indy/360540 to your computer and use it in GitHub Desktop.
Save indy/360540 to your computer and use it in GitHub Desktop.
java code to play a midi file
/* http://blog.taragana.com/index.php/archive/how-to-play-a-midi-file-from-a-java-application/ */
import javax.sound.midi.*;
import java.io.*;
/** Plays a midi file provided on command line */
public class MidiPlayer {
public static void main(String args[]) {
// Argument check
if(args.length == 0) {
helpAndExit();
}
String file = args[0];
if(!file.endsWith(".mid")) {
helpAndExit();
}
File midiFile = new File(file);
if(!midiFile.exists() || midiFile.isDirectory() || !midiFile.canRead()) {
helpAndExit();
}
// Play once
try {
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.setSequence(MidiSystem.getSequence(midiFile));
sequencer.open();
sequencer.start();
while(true) {
if(sequencer.isRunning()) {
try {
Thread.sleep(1000); // Check every second
} catch(InterruptedException ignore) {
break;
}
} else {
break;
}
}
// Close the MidiDevice & free resources
sequencer.stop();
sequencer.close();
} catch(MidiUnavailableException mue) {
System.out.println("Midi device unavailable!");
} catch(InvalidMidiDataException imde) {
System.out.println("Invalid Midi data!");
} catch(IOException ioe) {
System.out.println("I/O Error!");
}
}
/** Provides help message and exits the program */
private static void helpAndExit() {
System.out.println("Usage: java MidiPlayer midifile.mid");
System.exit(1);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment