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))); } } } }