package org.herac.tuxguitar.player.base; import java.util.ArrayList; import java.util.List; public class MidiTransmitter { private class MidiReceiverItem { private String id; private MidiReceiver receiver; public MidiReceiverItem(String id, MidiReceiver receiver) { this.id = id; this.receiver = receiver; } public String getId() { return this.id; } public MidiReceiver getReceiver() { return this.receiver; } } private List<MidiReceiverItem> receivers; public MidiTransmitter() { this.receivers = new ArrayList<MidiReceiverItem>(); } public void addReceiver(String id, MidiReceiver receiver) { MidiReceiverItem item = getReceiver(id); if (item == null) { this.receivers.add(new MidiReceiverItem(id, receiver)); } } private MidiReceiverItem getReceiver(String id) { if (id != null) { for (int i = 0; i < this.receivers.size(); i++) { MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get(i); if (receiver.getId() != null && receiver.getId().equals(id)) { return receiver; } } } return null; } public void removeReceiver(String id) { MidiReceiverItem item = getReceiver(id); if (item != null) { this.receivers.remove(item); } } public void sendAllNotesOff() throws MidiPlayerException { for (int i = 0; i < this.receivers.size(); i++) { MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get(i); receiver.getReceiver().sendAllNotesOff(); } } public void sendControlChange(int channel, int controller, int value) throws MidiPlayerException { for (int i = 0; i < this.receivers.size(); i++) { MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get(i); receiver.getReceiver().sendControlChange(channel, controller, value); } } public void sendNoteOff(int channel, int key, int velocity) throws MidiPlayerException { for (int i = 0; i < this.receivers.size(); i++) { MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get(i); receiver.getReceiver().sendNoteOff(channel, key, velocity); } } public void sendNoteOn(int channel, int key, int velocity) throws MidiPlayerException { for (int i = 0; i < this.receivers.size(); i++) { MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get(i); receiver.getReceiver().sendNoteOn(channel, key, velocity); } } public void sendPitchBend(int channel, int value) throws MidiPlayerException { for (int i = 0; i < this.receivers.size(); i++) { MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get(i); receiver.getReceiver().sendPitchBend(channel, value); } } public void sendProgramChange(int channel, int value) throws MidiPlayerException { for (int i = 0; i < this.receivers.size(); i++) { MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get(i); receiver.getReceiver().sendProgramChange(channel, value); } } public void sendSystemReset() throws MidiPlayerException { for (int i = 0; i < this.receivers.size(); i++) { MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get(i); receiver.getReceiver().sendSystemReset(); } } }