package org.herac.tuxguitar.player.impl.jsa.sequencer; import java.util.ArrayList; import java.util.Iterator; 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.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 List listSequencers() throws MidiPlayerException { try { List sequencers = new ArrayList(); MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); for(int i = 0; i < infos.length; i++){ try { Iterator it = sequencers.iterator(); boolean exists = false; while(it.hasNext()){ if( ((MidiSequencer)it.next()).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) { e.printStackTrace(); } } return sequencers; }catch (Throwable t) { throw new MidiPlayerException(t.getMessage(),t); } } public void closeAll() throws MidiPlayerException { // Not implemented } }