- •7. Midi Show Control. Часть 1
- •Появление midi Show Control
- •Основные принципы
- •Предосторожности и ограничения
- •Формат сообщений
- •Формат команды
- •Команды и данные
- •Данные сцены
- •Таймкод
- •Рекомендованные наборы команд
- •Общие команды
- •Команды звука
- •7. Midi Show Control. Часть 2
- •Сообщения 2pc
- •Номер секвенции
- •Контрольные суммы
- •Коды состояния
- •Данные сцены
- •Взаимодействие устройств
- •Тайм-ауты
- •Ожидание сообщений
- •Обработка исключительных ситуаций
- •Пример работы 2pc
- •Обмен сообщениями без ошибок
- •Ошибки, обнаруженные на ранней стадии
- •Ошибки, произошедшие во время выполнения сцены
- •Сравнительная характеристика 2pc и msc
Данные сцены
Данные сцены показывают, к какой сцене из какого списка какого носителя относится команда. Сцена может быть задана как одним номером (Q_number), так и с указанием листа (списка сцен) и пути — поля Q_list и Q_path соответственно. Между каждым полем помещается байт-разделитель (нулевой символ, 0x00). Полный формат номера сцены выглядит так, как показано на рис. 5.
Допускается посылать только номер сцены или номер сцены с номером списка, рис. 6.
Поля Q_number, Q_list и Q_path передаются в виде ASCII-цифр от 0 до 9 (коды от 0x30 до 0x39), а для разделения секций используется символ десятичной точки (0x2E). Например, номер сцены 235.6 в списке 36.6 и пути 59 будет представлен в шестнадцатеричном виде так, как показано на рис. 7.
Между точками находится как минимум одна цифра, но устройства должны быть готовы к таким ошибкам, когда посылаются две и более точки друг за другом. Количество точек, разделяющих секции, не ограничивается. Устройства, которые не поддерживают Q_list и/или Q_path, должны "отлавливать" нулевой байт после поля Q_number (или Q_list) и затем пропускать все данные, до байта 0xF7. Если в сообщении сцена задана только полем Q_number, а устройство поддерживает списки и пути, то используются списки и пути по умолчанию, либо текущие. MSC рекомендует производителям публиковать сведения по реакции устройств на вышеперечисленные поля.
Таймкод
В MIDI Show Control используются те же единицы времени, что и таймкоде MTC (часы, минуты, секунды, кадры, доли кадра и пользовательские биты). Передаются они почти тем же способом, что и в сообщении Full Frame (см. четвертую статью цикла), только содержат не четыре, а пять байт данных. В пятом байте помещаются либо доли кадра ff, либо статус-байт st. Расшифровка байт таймкода показана на рис. 8.
Статус-байт содержит дополнительную информацию о таймкоде. Например, при чтении данных с ленты полезно знать: это реально прописанный таймкод или просто данные времени, обновляемые от импульсов тахометра во время высокоскоростной перемотки. В последнем случае данные о долях кадра практически бесполезны, их трудно как получить, так и передать обычным методом. При записи данных времени тип таймкода (drop-frame или non-drop-frame) может изменяться конечным устройством. Например, если управляемый контроллер получил от главного команду SET_CLOCK с кадра типа non-drop frame, а в устройстве используется таймкод с кадрами drop-frame, то данный кадр может просто интерпретироваться как drop-frame, без всяких математических преобразований. Если же команда SET_CLOCK получена с несуществующим числом кадров drop-frame (например, момент времени 00:22:00:00), то данное число должно быть заменено на следующее действительное число (в данном случае 00:22:00:02). Расчет разности между двумя значениями времени в таймкоде может привести к неточностям, когда оба или одно значение имеют выпадающие кадры. В MSC перед расчетом любых смещений drop-frame кадры должны быть сначала преобразованы в non-drop frame. Итоговая разность всегда выражается в таймкоде типа non-drop frame. Для преобразования из формата drop-frame в non-drop frame необходимо отнять число выпавших кадров с момента 00:00:00:00. Например, для преобразования числа 00:22:00:02 в формат non-drop нужно отнять 40 кадров, в результате получится 00:21:58:22. Число 40 получилось в результате того, что два кадра выпали на каждой минуте с 01 по 09, с 11 по 19 и с 21 по 22. Некоторые производители предпочитают хранить таймкод внутри устройства просто как количество кадров с момента 00:00:00:00. Это уменьшает сложность расчетов, но требует соответствующих преобразований на входе при записи и на выходе при воспроизведении.
