14.1 Введение
Этот подпункт описывает процесс декодирования для реализаций объектов типа 1 и отображение событий MIDI в заголовке информации о потоке и данных потока битов в семантику SAOL для реализаций объектов типа 3 и 4.
14.2 Процесс декодирования объектов типа 1
В потоке битов объекта типа 1 должны быть только элементы потока битов midi и midi_file.
14.3 Отображение событий MIDI в управление оркестра
14.3.1 Введение
Для объектов типа 3 и 4 кодированные события, когда они будут получены в терминале как часть события стандартного MIDI FILE или MIDI, должны быть преобразованы в данные MIDI и соответствующую семантику планировщика. Эта семантика применяется только к объектам типа 3 и 4, и не к объектам типа 1 и 2.
14.3.2 События MIDI
14.3.2.1 Введение
Этот подпункт описывает семантику событий различных типов, которые могут быть в потоке битов объекта MIDI_event.
14.3.2.2 Расширенные значения канала
У фактического события MIDI Channel есть номер канала в диапазоне 0 ... 15. Каждый MIDI имеет входной порт, выходной порт или отслеживаемый блок, связывается с потоком или набором событий MIDI и соответствующим набором 16 каналов (некоторые из которых могут быть не использованы). Приложения MIDI обычно используют имена порта, отслеживают имена или другие метки для идентификации различных каналов.
Чтобы избежать потребности в таких метках набора канала, в MPEG-4 используются расширенные номера каналов. В MPEG-4 значение channel MIDI_event не ограничивается диапазоном 0 ... 15. Вместо этого сгенерировано расширенное значение канала, основанное на исходном номере канала MIDI и на числе, связанном с портом или потоком, который является источником события.
14.3.2.3 NoteOn
noteon channel note velocity
Когда будет получено событие noteon с ненулевой скоростью, канал инструмента в оркестре нужно инстанцировать с продолжительностью - 1 и первыми двумя p-fields наборами note и velocity. Каждое значение MIDIctrl [] в инструменте устанавливается в новое значение изменения контроллера или в значение по умолчанию, если не было никаких изменений контроллера на том канале. Значение MIDIbend устанавливается в новое значение изменения MIDI. Значение MIDItouch устанавливается в новое значение корректировки на канале.
Инструмент, создаваемый в ответ на сообщение noteon на канале, упоминается как находящийся на этом канале.
Сообщения noteon со скоростью 0 должны быть обработаны как noteoff сообщения.
14.3.2.4 NoteOff
noteoff channel note velocity
Когда будет получено событие noteoff, каждый инструмент на канале, который инстанцировали со звуковым числом note, планируется для завершения в конце k цикла. То есть устанавливается флаг released, и инструмент не вызывает extend, его нужно деинстанцировать после текущего k цикла вычисления.
Если MIDIctrl [64] на обозначенном канале будет ненулевым, то выполнение события noteoff должно быть задержано, пока MIDIctrl [64] на обозначенном канале не станет нулем. Это поддерживается установкой значения MIDIctrl [64] в потоке битов или присвоением ему стандартного имя MIDIctrl.
14.3.2.5 Control change
cc channel controller value
Когда изменяется управление событием cc, новое значение контроллера устанавливается в value. Это значение должно кэшироваться так, чтобы на данном канале у будущих инструментов к нему был доступ. У всех активных в настоящий момент на канале инструментов должно быть стандартное имя MIDIctrl [controller] обновленное value.
14.3.2.6 Aftertouch
touch channel note velocity
Когда будет получено событие touch, значение переменной MIDItouch каждого инструмента на канале, который инстанцировали со звуковым числом note, устанавливается в value.