/* * Created on Apr 14, 2009 by Nick * */ package jmsltestsuite; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MidiDevice; import javax.sound.midi.MidiSystem; import javax.sound.midi.MidiUnavailableException; import javax.sound.midi.ShortMessage; public class SendJavaMidiNoteToExternalDevice { public static void main(String args[]) throws InvalidMidiDataException, MidiUnavailableException, IOException { MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); for (int i = 0; i < infos.length; i++) { System.out.print(i + ": " + infos[i]); System.out.print(MidiSystem.getMidiDevice(infos[i])); String devName = MidiSystem.getMidiDevice(infos[i]) + ""; if (devName.indexOf("MidiInDevice") != -1) { System.out.println("This is an INPUT device"); } else if (devName.indexOf("MidiOutDevice") != -1) { System.out.println("This is an OUTPUT device"); } else if (devName.indexOf("MixerSynth") != -1) { System.out.println("This is the Java Sound Synthesizer"); } else { System.out.println("unrecognized device"); } } BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Which device?"); int n = 0; try { n = Integer.parseInt(bf.readLine()); } catch (NumberFormatException e) { } MidiDevice device = null; try { device = MidiSystem.getMidiDevice(infos[n]); } catch (MidiUnavailableException e) { } if (!(device.isOpen())) { try { device.open(); } catch (MidiUnavailableException e) { // Handle or throw exception... } } long timeStamp = device.getMicrosecondPosition(); System.out.println("device.getMicrosecondPosition()=" + device.getMicrosecondPosition()); for (int i = 0; i < 10; i++) { ShortMessage msg = new ShortMessage(); msg.setMessage(ShortMessage.NOTE_ON, 0, 40, 93); timeStamp += 1000; javax.sound.midi.Receiver rcvr = device.getReceiver(); rcvr.send(msg, timeStamp); } try { Thread.sleep(2000); } catch (InterruptedException e) { } System.out.println("byebye"); System.exit(0); } }