package org.herac.tuxguitar.player.impl.jsa.sequencer; import java.util.ArrayList; import java.util.List; import javax.sound.midi.MidiDevice; import javax.sound.midi.MidiSystem; import javax.sound.midi.MidiUnavailableException; import javax.sound.midi.Sequencer; import org.herac.tuxguitar.gui.TuxGuitar; import org.herac.tuxguitar.player.base.MidiPlayerException; import org.herac.tuxguitar.player.base.MidiSequencer; import org.herac.tuxguitar.player.base.MidiSequencerProvider; public class MidiSequencerProviderImpl implements MidiSequencerProvider { public MidiSequencerProviderImpl() { super(); } public void closeAll() throws MidiPlayerException { // Not implemented } public List<MidiSequencer> listSequencers() throws MidiPlayerException { try { List<MidiSequencer> sequencers = new ArrayList<MidiSequencer>(); MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); for (int i = 0; i < infos.length; i++) { try { boolean exists = false; for (final MidiSequencer sequencer : sequencers) { if (sequencer.getKey().equals(infos[i].getName())) { exists = true; break; } } if (!exists) { MidiDevice device = MidiSystem.getMidiDevice(infos[i]); if (device instanceof Sequencer) { sequencers.add(new MidiSequencerImpl((Sequencer) device)); } } } catch (MidiUnavailableException e) { throw new MidiPlayerException(TuxGuitar .getProperty("jsa.error.midi.unavailable"), e); } } return sequencers; } catch (Throwable t) { throw new MidiPlayerException(TuxGuitar.getProperty("jsa.error.unknown"), t); } } }