1
package org.herac.tuxguitar.player.impl.jsa.midiport;
3
import java.util.ArrayList;
4
import java.util.Iterator;
7
import javax.sound.midi.MidiDevice;
8
import javax.sound.midi.MidiSystem;
9
import javax.sound.midi.MidiUnavailableException;
10
import javax.sound.midi.Sequencer;
11
import javax.sound.midi.Synthesizer;
13
import org.herac.tuxguitar.gui.TuxGuitar;
14
import org.herac.tuxguitar.player.base.MidiPlayerException;
15
import org.herac.tuxguitar.player.base.MidiPort;
16
import org.herac.tuxguitar.player.base.MidiPortProvider;
18
public class MidiPortProviderImpl implements MidiPortProvider{
20
public MidiPortProviderImpl(){
24
public List listPorts() throws MidiPlayerException{
26
List ports = new ArrayList();
27
MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
28
for(int i = 0; i < infos.length; i++){
30
Iterator it = ports.iterator();
31
boolean exists = false;
33
if( ((MidiPort)it.next()).getKey().equals(infos[i].getName()) ){
39
MidiDevice device = MidiSystem.getMidiDevice(infos[i]);
40
if(device.getMaxReceivers() == 0 || device instanceof Sequencer){
43
if(device instanceof Synthesizer){
44
ports.add(new MidiPortSynthesizer((Synthesizer)device));
47
ports.add(new MidiPortOut(device));
50
} catch (MidiUnavailableException e) {
51
throw new MidiPlayerException(TuxGuitar.getProperty("jsa.error.midi.unavailable"),e);
55
}catch (Throwable t) {
56
throw new MidiPlayerException(TuxGuitar.getProperty("jsa.error.unknown"),t);
60
public void closeAll() {