Esempio n. 1
0
 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');
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Esempio n. 2
0
 protected function writeMetaMessage(MidiMessage $message)
 {
     $length = 0;
     $data = $message->getData();
     $this->writeUnsignedBytes(array(255));
     $this->writeUnsignedBytes(array($message->getCommand()));
     $length += 2;
     if (is_array($data)) {
         $length += $this->writeVariableLengthQuantity(count($data));
         $this->writeUnsignedBytes($data);
         $length += count($data);
     } else {
         $length += $this->writeVariableLengthQuantity(strlen($data));
         $this->writeUnsignedBytes(array($data));
         $length += strlen($data);
     }
     return $length;
 }