1 package org.herac.tuxguitar.player.impl.sequencer;
2 
3 import org.herac.tuxguitar.player.base.MidiPlayerException;
4 
5 public class MidiEventDispacher{
6 	private MidiSequencerImpl sequencer;
7 
MidiEventDispacher(MidiSequencerImpl sequencer)8 	public MidiEventDispacher(MidiSequencerImpl sequencer){
9 		this.sequencer = sequencer;
10 	}
11 
dispatch(MidiEvent event)12 	public void dispatch(MidiEvent event) throws MidiPlayerException{
13 		if(event.getType() == MidiEvent.MIDI_EVENT_NOTEON){
14 			this.sequencer.getTransmitter().sendNoteOn(event.getData()[0],event.getData()[1],event.getData()[2]);
15 		}
16 		else if(event.getType() == MidiEvent.MIDI_EVENT_NOTEOFF){
17 			this.sequencer.getTransmitter().sendNoteOff(event.getData()[0],event.getData()[1],event.getData()[2]);
18 		}
19 		else if(event.getType() == MidiEvent.MIDI_EVENT_CONTROL_CHANGE){
20 			this.sequencer.getTransmitter().sendControlChange(event.getData()[0],event.getData()[1],event.getData()[2]);
21 		}
22 		else if(event.getType() == MidiEvent.MIDI_EVENT_PROGRAM_CHANGE){
23 			this.sequencer.getTransmitter().sendProgramChange(event.getData()[0],event.getData()[1]);
24 		}
25 		else if(event.getType() == MidiEvent.MIDI_EVENT_PITCH_BEND){
26 			this.sequencer.getTransmitter().sendPitchBend(event.getData()[0],event.getData()[1]);
27 		}
28 		else if(event.getType() == MidiEvent.MIDI_SYSTEM_EVENT){
29 			if(event.getData()[0] == 0x51){
30 				int usq = ((event.getData()[1] & 0xff) | ((event.getData()[2] & 0xff) << 8) | ((event.getData()[3] & 0xff) << 16));
31 				this.sequencer.setTempo( (int)((60.00 * 1000.00) / (usq / 1000.00)) );
32 			}
33 		}
34 	}
35 }
36