- •7. Midi Show Control. Часть 1
- •Появление midi Show Control
- •Основные принципы
- •Предосторожности и ограничения
- •Формат сообщений
- •Формат команды
- •Команды и данные
- •Данные сцены
- •Таймкод
- •Рекомендованные наборы команд
- •Общие команды
- •Команды звука
- •7. Midi Show Control. Часть 2
- •Сообщения 2pc
- •Номер секвенции
- •Контрольные суммы
- •Коды состояния
- •Данные сцены
- •Взаимодействие устройств
- •Тайм-ауты
- •Ожидание сообщений
- •Обработка исключительных ситуаций
- •Пример работы 2pc
- •Обмен сообщениями без ошибок
- •Ошибки, обнаруженные на ранней стадии
- •Ошибки, произошедшие во время выполнения сцены
- •Сравнительная характеристика 2pc и msc
Рекомендованные наборы команд
Протокол MIDI Show Control не требует от устройств поддерживать какие-то определенные команды и структуры данных, но рекомендует некоторые минимальные их наборы. Если устройства поддерживают один или несколько таких наборов, то совместимость их повышается, а объединение в единую систему упрощается. В спецификации определены четыре минимальных набора: 1. Таймкод не поддерживается, воспринимаются только базовые данные и команды (простое управляемое устройство). 2. Таймкод не поддерживается, но воспринимаются все стандартные команды и данные сообщения. 3. Полный таймкод, полное понимание данных. 4. Поддерживаются команды двухэтапного подтверждения. Минимальные наборы следует понимать лишь в духе наименьшего общего знаменателя, они ни в коей мере не ограничивают функциональность устройств. В следующих таблицах перечислены две категории стандартных команд, предлагаемых в MSC. Напротив каждой команды указан соответствующий минимальный набор, к которому она относится.
Общие команды
Набор общих команд (рис. 9) заимствован из базового набора команд управления светом, и, вероятно, применим для общих задач в любых шоу-системах.
Команды GO, STOP, RESUME, LOAD и GO_OFF имеют одинаковую структуру и отличаются только кодом (рис. 10).
Команда GO (0x01) запускает указанную сцену на выполнение. Время перехода к сцене программируется в управляемом устройстве. Если необходимо задать время перехода из главного контроллера, следует использовать команду TIMED_GO. Если номер сцены не указан, а управляемое устройство имеет несколько списков сцен, то вызывается следующая по номеру сцена из активного списка. Команда STOP (0x02) останавливает процесс перехода к указанной сцене. Если номер сцены не задан, все текущие процессы перехода останавливаются. Команда RESUME (0x03) приводит к продолжению остановленного перехода к сцене. Если номер сцены не указан, все остановленные переходы продолжаются. Команда TIMED_GO (0x04), рис. 11, запускает сцену на исполнение и задает время перехода. Если сцена не указана, вызывается следующая по номеру. Время задается в упомянутом выше пятибайтовом формате, обеспечивая переходы от мгновенных до продолжительных (вплоть до 24 часов).
Если управляемое устройство не поддерживает эту команду, оно должно выполнять ее как простую команду GO, игнорируя данные времени, но обрабатывая номер сцены как обычно. Команда LOAD (0x05) помещает сцену в состояние "подготовиться". Номер сцены должен быть указан обязательно. Эта команда используется в том случае, если для доступа к желаемой сцене требуется время. Таким образом, LOAD посылается заблаговременно, а последующая команда GO выполняется устройством мгновенно. Если номер сцены указан без номера списка, то сцены из всех списков с такими же номерами должны быть подготовлены к запуску. Команда SET (0x06), рис. 12, задает значение какого-либо внутреннего параметра устройства, аналогично группе MIDI-сообщений канала General Purpose Controller (см. вторую статью цикла). Номер параметра и его значение — 14-битные числа, LSB которых передается первым. Управляемое устройство может передавать этот параметр для записи в главный контроллер (и, соответственно, получать его при воспроизведении). В качестве параметра могут быть использованы внутренние переменные, атрибуты, скорости, уровни, режимы, функции, эффекты, каналы, субканалы, переключатели и т. п.
В качестве необязательных данных сообщения SET может использоваться время, за которое данный параметр должен достигнуть указанного значения. Время передается обычным способом, см. ранее. Если управляемое устройство не поддерживает данные времени в этом сообщении, оно должно их игнорировать. Для систем управления светом MSC предлагает стандартный набор параметров, который, как и все в этом протоколе, может быть расширен в зависимости от потребностей. Номера параметров для света приведены в таблице на рис. 13.
Команда FIRE (0x07), рис. 14, запускает клавиатурный макрос. Номер макроса задается семибитным числом mm. Макросы могут программироваться непосредственно в управляемом устройстве, а могут загружаться по протоколу MIDI File Dump, используя ASCII-формат данных сцены, или любым другим методом.
В следующих трех командах данные отсутствуют. Команда ALL_OFF (0x08) отключает все функции и выходы устройства без изменения настроек управляющих параметров. Состояние устройства перед запуском этой команды может быть восстановлено командой RESTORE (0x09). Команда RESET (0x0A) переводит шоу в начало, то есть завершает все исполняемые сцены, устанавливает функции, использующие время, в начальное состояние (эквивалентное тому, которое наступает после включения питания) и загружает первую сцену в каждом доступном списке в режим ожидания. Команда RESET может также приводить к автоматическому открытию закрытых списков сцен и закрытых путей, но это определяется производителем устройства. Реакция на команду должна быть описана в документе MIDI-реализации (MIDI Implementation) устройства. Команда GO_OFF (0x0B) начинает выключение сцены. Время выключения задается в управляемом устройстве. Если номер сцены не указан, выключается текущая сцена. Если указан только номер списка, выключаются все активные сцены этого списка. Это сообщение применяется для совместимости с устройствами, которые не замещают активную сцену новой по получении команды GO. Перед запуском новой сцены они требуют обязательного выключения текущей.
