package org.herac.tuxguitar.player.base;
import java.util.ArrayList;
import java.util.List;
public class MidiTransmitter {
private List receivers;
public MidiTransmitter(){
this.receivers = new ArrayList();
}
public void sendSystemReset() throws MidiPlayerException {
for( int i = 0 ; i < this.receivers.size() ; i ++ ){
MidiReceiverItem receiver = (MidiReceiverItem) this.receivers.get( i );
receiver.getReceiver().sendSystemReset();
}
}
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 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 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 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 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 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 addReceiver(String id, MidiReceiver receiver){
MidiReceiverItem item = getReceiver( id );
if( item == null ){
this.receivers.add( new MidiReceiverItem( id , receiver ) );
}
}
public void removeReceiver(String id){
MidiReceiverItem item = getReceiver( id );
if( item != null ){
this.receivers.remove( item );
}
}
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;
}
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;
}
}
}