Created
April 8, 2010 21:10
-
-
Save indy/360540 to your computer and use it in GitHub Desktop.
java code to play a midi file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* 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