// Here is some code you may wish to use. You’ll have to look at it and figure // out the details. If you do, you’ll probably also want to use the // file "tetris.midi" (hint, hint…). import java.net.*; import java.io.*; import java.applet.*; import javax.sound.midi.*; import javax.sound.sampled.*; class TetrisMidi { public static void main(String[] args) throws Exception { new TetrisMidi().doPlayMidi("tetris.midi", true); } /////////////////// // For: midi files /////////////////// private Sequencer sequencer = null; private void doPlayMidi(String path, boolean loop) throws Exception { doPlayMidi(new FileInputStream(new File(path)), loop); } private void doPlayMidi(InputStream is, boolean loop) { try { doStopMidiSounds(); sequencer = MidiSystem.getSequencer(); sequencer.setSequence(MidiSystem.getSequence(is)); if (loop) sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY); sequencer.open(); sequencer.start(); } catch (Exception e) { midiError("" + e); } } private void midiError(String msg) { System.err.println("Midi error: " + msg); sequencer = null; } private void doStopMidiSounds() { try { if ((sequencer == null) || (!sequencer.isRunning())) return; sequencer.stop(); sequencer.close(); } catch (Exception e) { midiError("" + e); } sequencer = null; } }