MIDI Cueing
Основная задача MIDI Cueing — облегчить работу инженера в сложной системе, состоящей из звуковоспроизводящих и записывающих устройств, видеомагнитофонов, MIDI-секвенсоров, процессоров эффектов, тон-генераторов и другого оборудования, характерного для студий по озвучиванию кино-видеоматериалов и постпроизводства. Ручная настройка необходимых параметров в каждом устройстве (например, позиций начала и окончания записи, воспроизведения, смещения таймкода относительно мастера) отнимает значительное время, а при необходимости частого изменения превращается в головную боль. MIDI Cueing предлагает автоматизацию рабочего процесса. Центральным элементом системы является менеджер событий (Cue List Manager) — устройство или компьютерная программа, которая позволяет запрограммировать список событий, а затем послать этот список в подчиненные устройства. Для каждого события в списке задано SMPTE-время исполнения. При наступлении этого времени устройство выполняет событие (а если точнее, действие, сопоставленное с событием). Естественно, для этого необходимо получать от мастера таймкод. Если устройства не могут обрабатывать список событий самостоятельно, но имеют MIDI-интерфейс, то для управления ими может использоваться секвенсор, который принимает список событий, а затем, по наступлении указанного времени, преобразует событие в команды, понятные устройству (Note On, Note Off, Start, Stop и т. п.). Для реализации протокола MIDI Cueing используются так называемые сообщения настройки (Set-Up Messages). В каждом сообщении указывается тип события, его номер и время исполнения. Таким образом, список событий передается в виде сообщений настройки. Относятся они к группе универсальных сообщений SysEx (Non-Realtime) и имеют структуру, показанную на рис. 13. Байт Sub ID равен 4 (категория MIDI Time Code Setup), а из возможных 128 событий (байт Sub ID 2) в настоящий момент определены 19. После байта Sub ID 2 следует время SMPTE, к которому относится событие: часы, минуты, секунды, кадры и доли кадра. В сообщениях настройки каждый кадр подразделяется на 100 субкадров, что позволяет указать время наступления события с очень высокой точностью. Номер события (от 0 до 16383) передается в следующих двух байтах (LSB идет первым).
Далее может следовать дополнительная информация одного из двух видов: обычные сообщения MIDI или простой текст (набор ASCII-символов). Эта информация используется в некоторых сообщениях настройки для более тонкого управления устройством. Однако есть небольшая проблема — как передать сообщения MIDI в теле сообщения настройки? Если делать это непосредственно, то они сразу же начнут выполняться приемником, да еще и логика сообщения SysEx нарушится: перед завершающим байтом EOX появятся непредусмотренные статус-байты. Такая же проблема будет и с текстом. Поэтому используется своеобразное экранирование: исходные байты, которые нужно передать в качестве дополнительной информации, разбиваются на половины. К каждой половине слева приписываются четыре нулевых бита, в результате она становится разрешенным байтом данных MIDI. Сначала передается младшая половина исходного байта, затем старшая. Естественно, размер полученного потока будет вдвое превышать исходный. Например, сообщение о нажатии клавиши (три байта: 0x91 0x3A 0x1F) будет преобразовано в шесть байт данных: 0x01 0x09 0x0A 0x03 0x0F 0x01. А, скажем, английская заглавная буква "A" (ASCII-код 0x41) будет представлена двумя байтами: 0x01 0x04. Есть также группа сообщений настройки под общим названием Real Time MTC Cueing (относятся к типу универсальных сообщений SysEx реального времени, Sub ID равен 5). Если обычные сообщения настройки задают время наступления события в будущем, то при получении сообщений этой группы приемник должен выполнить событие немедленно.
|