package com.netthreads.network.osc.router.service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.sound.midi.MidiDevice; import javax.sound.midi.MidiDevice.Info; import javax.sound.midi.MidiSystem; import javax.sound.midi.MidiUnavailableException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Singleton; @Singleton public class MIDIManagerImpl implements MIDIManager { private Logger logger = LoggerFactory.getLogger(MIDIManagerImpl.class); /* * (non-Javadoc) * * @see com.netthreads.network.osc.service.MIDIService#getDevices() */ @Override public List<MidiDevice> getDevices() { List<MidiDevice> devices = new ArrayList<MidiDevice>(); MidiDevice.Info[] midiDeviceInfo = MidiSystem.getMidiDeviceInfo(); List<Info> infos = Arrays.asList(midiDeviceInfo); for (Info info : infos) { try { MidiDevice device = MidiSystem.getMidiDevice(info); devices.add(device); } catch (MidiUnavailableException e) { logger.error(e.getLocalizedMessage()); } } return devices; } /** * Open device. * * @param device * The device. * * @return True if successful. */ @Override public boolean openDevice(MidiDevice device) { boolean status = false; try { device.open(); status = true; } catch (MidiUnavailableException e) { logger.error(e.getLocalizedMessage()); } return status; } /** * Close device. * * @param device * The device. */ @Override public void closeDevice(MidiDevice device) { device.close(); } }