package org.herac.tuxguitar.player.impl.sequencer;
import org.herac.tuxguitar.player.base.MidiPlayerException;
public class MidiEventDispacher{
private MidiSequencerImpl sequencer;
public MidiEventDispacher(MidiSequencerImpl sequencer){
this.sequencer = sequencer;
}
public void dispatch(MidiEvent event) throws MidiPlayerException{
if(event.getType() == MidiEvent.MIDI_EVENT_NOTEON){
this.sequencer.getTransmitter().sendNoteOn(event.getData()[0],event.getData()[1],event.getData()[2]);
}
else if(event.getType() == MidiEvent.MIDI_EVENT_NOTEOFF){
this.sequencer.getTransmitter().sendNoteOff(event.getData()[0],event.getData()[1],event.getData()[2]);
}
else if(event.getType() == MidiEvent.MIDI_EVENT_CONTROL_CHANGE){
this.sequencer.getTransmitter().sendControlChange(event.getData()[0],event.getData()[1],event.getData()[2]);
}
else if(event.getType() == MidiEvent.MIDI_EVENT_PROGRAM_CHANGE){
this.sequencer.getTransmitter().sendProgramChange(event.getData()[0],event.getData()[1]);
}
else if(event.getType() == MidiEvent.MIDI_EVENT_PITCH_BEND){
this.sequencer.getTransmitter().sendPitchBend(event.getData()[0],event.getData()[1]);
}
else if(event.getType() == MidiEvent.MIDI_SYSTEM_EVENT){
if(event.getData()[0] == 0x51){
int usq = ((event.getData()[1] & 0xff) | ((event.getData()[2] & 0xff) << 8) | ((event.getData()[3] & 0xff) << 16));
this.sequencer.setTempo( (int)((60.00 * 1000.00) / (usq / 1000.00)) );
}
}
}
}