- •7. Midi Show Control. Часть 1
- •Появление midi Show Control
- •Основные принципы
- •Предосторожности и ограничения
- •Формат сообщений
- •Формат команды
- •Команды и данные
- •Данные сцены
- •Таймкод
- •Рекомендованные наборы команд
- •Общие команды
- •Команды звука
- •7. Midi Show Control. Часть 2
- •Сообщения 2pc
- •Номер секвенции
- •Контрольные суммы
- •Коды состояния
- •Данные сцены
- •Взаимодействие устройств
- •Тайм-ауты
- •Ожидание сообщений
- •Обработка исключительных ситуаций
- •Пример работы 2pc
- •Обмен сообщениями без ошибок
- •Ошибки, обнаруженные на ранней стадии
- •Ошибки, произошедшие во время выполнения сцены
- •Сравнительная характеристика 2pc и msc
Появление midi Show Control
В конце 80-х годов прошлого века протокол MIDI стал привлекать внимание театральных инженеров и специалистов по концертному свету в качестве альтернативы существовавшим на тот момент протоколам управления. И хотя MIDI-секвенсоры и средства ввода (контроллеры) не очень подходили для задач театральной автоматизации, сам протокол подходил вполне, как по возможностям, так и из-за невысокой стоимости и широкой распространенности. Основная задача состояла в вызове сцены, запрограммированной в световом пульте. На всякий случай уточню, что сцена — это фиксированное состояние функций осветительных приборов. Сцена могла быть сколь угодной сложной (с закольцовками, связанными макросами, подпрограммами и т. п.), но для ее вызова требовалось нажатие всего пары кнопок светового пульта: LOAD (загрузить) и GO (запустить). Очевидно, MIDI здесь вполне мог заменить оператора пульта. Все, что нужно передавать в сообщении, — это номер сцены и саму команду. А данные, связанные со сценой, находились бы в памяти светового пульта. Постепенно производители светового оборудования стали использовать MIDI в своей продукции. Но, как это часто бывает, возникла проблема совместимости. Компании, занимающиеся театральным светом, производили системы, в которых сцены менялись MIDI-сообщением Program Change, а компании, производящие концертное световое оборудование, использовали команды Note On. В 1989 году Andy Meldrum, сотрудник фирмы Vari-Lite, предложил разработать открытый протокол, который позволял бы соединять шоу-системы разного назначения и разных производителей, и управлять ими с помощью любого MIDI-контроллера. К концу 1989 года Charlie Richmond из компании Richmond Sound Design организовал рабочую группу в составе MMA (MIDI Manufactures Association) и открыл форум на электронной доске объявлений. Созданный в результате проект стандарта был утвержден MMA и JMSC (Japanese MIDI Standard Committee) и 25 июля 1991 года превратился в "Рекомендованную практику RP-002", или, иначе, в MIDI Show Control версии 1.0.
Основные принципы
Протокол MIDI Show Control (MSC) предназначен для объединения интеллектуальных систем управления шоу-техникой (контроллеров) в единую сеть. MSC напрямую не управляет конечными приборами и не заменяет такие протоколы класса "контроллер-прибор", как DMX-512 или Strand. Это очень похоже на соединение MIDI-секвенсора и синтезатора. Секвенсор посылает синтезатору высокоуровневую команду "взять ноту", а синтезатор в ответ запускает заложенную в его недрах программу формирования звука, то есть целый набор низкоуровневых операций. В спецификации MSC используются термины Controller и Controlled Device. Обычно MSC-система состоит из одного, главного контроллера — им чаще всего является обычный компьютер (PC или Mac) с соответствующей программой управления и MIDI-интерфейсом. Этот компьютер и называется в спецификации словом Controller. А световой пульт в данном случае является управляемым устройством (Controlled Device), которое выполняет команды главного контроллера, переводя их в команды типа "контроллер-прибор" и посылая последние к световым приборам по своим коммутационным каналам, независящим от MIDI (в случае DMX-512 — это витая пара с земляным проводом в оплетке). Схожим образом к главному контроллеру подключаются по MIDI остальные шоу-системы (механика сцены, пиротехника и тому подобное). Набор команд MSC основан на структуре команд существовавших в то время шоу-систем. Управляемое устройство (например, световой пульт) может также передавать команды MSC через свой MIDI-выход. Это позволяет записывать действия, производимые оператором на пульте — примерно так же, как происходит запись в секвенсор с MIDI-клавиатуры. Только в данном случае используется программа, оперирующая не треками, а списками сцен (Cue List). При записи она фиксирует все события, приходящие от управляемых устройств, и размещает их в списке сцен со своей позицией на шкале времени. Таким образом, можно заранее прописать нужную последовательность событий с каждого пульта управления, используемого в шоу, отредактировать полученные данные, а во время шоу запустить список на воспроизведение. В MSC используется таймкод MTC, а это значит, что управляемые устройства можно синхронизировать с главным контроллером. Свет со звуком, изображение со светом, и всю систему в целом. При этом точность выдачи команд по времени равна одному кадру (то есть около 1/30 секунды). Кроме того, по MSC можно связать несколько контроллеров одного типа. Так, например, если две световые консоли соединены по MIDI, то нажатие кнопки GO на одной из них приведет к тому, что вторая консоль отработает ту же команду GO, но уже без оператора. Здесь все довольно очевидно и напоминает первоначальное предназначение MIDI — управлять с одной клавиатуры несколькими синтезаторами одновременно. Важный принцип управления "живым" шоу состоит в том, что сбой одного управляемого устройства не должен привести к сбою в управлении другими устройствами. Этот принцип может быть реализован с помощью открытой или закрытой петли. В системе "открытая петля" подтверждение команд от управляемого устройства к контроллеру не требуется. Используется однонаправленная передача данных и, соответственно, одностороння коммутация. То есть, MIDI-выход главного контроллера соединяется с MIDI-входом управляемого шоу-устройства, и только. Этот экономичный способ был выбран в MSC в качестве основного. В системе "закрытая петля" используется взаимная коммутация устройств и ожидается стандартизированный ответ от управляемого устройства. Такая система требует более интеллектуальных контроллеров и занимает большую полосу пропускания, но при этом достигается большая точность во взаимодействии устройств, обнаружение, коррекция ошибок и прочие прелести. Метод закрытой петли предложен в версии MSC 1.1, появившейся в феврале 1996 года (документ RP-014). Для работы в режиме закрытой петли используется двухэтапный протокол подтверждения (2 Phase Commit), о котором поговорим в следующей статье.
