1 package com.jamesbryangraves.bob.midi;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 import javax.sound.midi.MidiDevice;
7 import javax.sound.midi.MidiMessage;
8 import javax.sound.midi.MidiSystem;
9 import javax.sound.midi.MidiUnavailableException;
10
11 import org.apache.log4j.Logger;
12
13 public class BobGenericReceiver extends BobMidiReceiver {
14
15 static Logger log = Logger.getLogger(BobGenericReceiver.class);
16
17 private MidiDevice device;
18
19 public void send(MidiMessage message, long ts) {
20 try {
21 if(device == null)
22 device = getDevice();
23 if(!device.isOpen())
24 device.open();
25 device.getReceiver().send(message, ts);
26 } catch(MidiUnavailableException mue) {
27 mue.printStackTrace();
28 System.exit(1);
29 }
30 }
31
32 public void close() {
33 device.close();
34 }
35
36 private MidiDevice getDevice() {
37 try {
38 return MidiSystem.getMidiDevice(MidiSystem.getMidiDeviceInfo()[getDeviceIndex()]);
39 } catch(MidiUnavailableException mue) {
40 mue.printStackTrace();
41 System.exit(1);
42 }
43 return null;
44 }
45
46 public static Collection<String> getDeviceNames() {
47 ArrayList<String> list = new ArrayList<String>();
48 MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
49 for(int i = 0; i < infos.length; i++)
50 list.add(infos[i].getName());
51 return list;
52 }
53 }