Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы MIDI 2.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
210 Кб
Скачать
☆

Данные сцены

Данные сцены показывают, к какой сцене из какого списка какого носителя относится команда. Сцена может быть задана как одним номером (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. Это уменьшает сложность расчетов, но требует соответствующих преобразований на входе при записи и на выходе при воспроизведении.