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