private function parseMessage($trackNumber, $tick, MidiMessage $message) { $parsedTick = $this->parseTick($tick + $this->resolution); //NOTE ON if ($message->getType() == MidiMessage::TYPE_SHORT && $message->getCommand() == MidiMessage::NOTE_ON) { $this->parseNoteOn($trackNumber, $parsedTick, $message->getData()); } else { if ($message->getType() == MidiMessage::TYPE_SHORT && $message->getCommand() == MidiMessage::NOTE_OFF) { $this->parseNoteOff($trackNumber, $parsedTick, $message->getData()); } else { if ($message->getType() == MidiMessage::TYPE_SHORT && $message->getCommand() == MidiMessage::PROGRAM_CHANGE) { $this->parseProgramChange($message->getData()); } else { if ($message->getType() == MidiMessage::TYPE_SHORT && $message->getCommand() == MidiMessage::CONTROL_CHANGE) { $this->parseControlChange($message->getData()); } else { if ($message->getType() == MidiMessage::TYPE_SHORT && $message->getCommand() == MidiMessage::PITCH_BEND) { $this->parsePitchBend($message->getData()); } else { if ($message->getType() == MidiMessage::TYPE_META && $message->getCommand() == MidiMessage::TIME_SIGNATURE_CHANGE) { $this->parseTimeSignature($parsedTick, $message->getData()); } else { if ($message->getType() == MidiMessage::TYPE_META && $message->getCommand() == MidiMessage::TEMPO_CHANGE) { $this->parseTempo($parsedTick, $message->getData()); } else { $logMessage = sprintf('track=%d, tick=%d, type=%s, command=%x, data=array(%s)', $trackNumber, $tick, $message->getType(), $message->getCommand(), implode(', ', $message->getData())); Log::add($logMessage, 'MIDI_SKIPPED_MESSAGE'); } } } } } } } }