Статус документа
Статус документа

ГОСТ Р 53556.5-2013 Звуковое вещание цифровое. Кодирование сигналов звукового вещания с сокращением избыточности для передачи по цифровым каналам связи. Часть III (MPEG-4 audio). Структурированное кодирование звуковых сигналов (SA) (Переиздание)

     14 Семантика MIDI

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.