MIDI-таймкод

Временной код SMPTE в виде MIDI-сообщений

Временной код MIDI ( MTC ) встраивает ту же информацию о синхронизации, что и стандартный временной код SMPTE, в виде серии небольших сообщений MIDI «четверть кадра» . В стандартных сообщениях временного кода MIDI не предусмотрено пользовательских битов, и вместо этого для передачи этой информации используются сообщения SysEx . Сообщения четверть кадра передаются последовательностью из восьми сообщений, таким образом, полное значение временного кода указывается каждые два кадра. Если поток данных MIDI работает близко к емкости, данные MTC могут прибывать с небольшим отставанием от графика, что приводит к появлению небольшого количества джиттера. Чтобы избежать этого, идеально использовать полностью отдельный порт MIDI для данных MTC. Более крупные полнокадровые сообщения, которые инкапсулируют значение кадра временного кода в одном сообщении, используются для определения времени, пока временной код не запущен.

В отличие от стандартного тайм-кода SMPTE, сообщения четвертькадрового и полнокадрового тайм-кода MIDI содержат двухбитное значение флага, которое идентифицирует скорость тайм-кода, указывая ее как:

  • 24 кадра/с (стандартная скорость для киносъемки )
  • 25 кадров/с (стандартная скорость для видео PAL )
  • 29,97 кадра/с (тайм-код с пропуском кадров для видео NTSC )
  • 30 кадров/с (без пропусков тайм-кода для видео NTSC)

MTC различает скорость фильма и скорость видео только по скорости, с которой продвигается тайм-код, а не по информации, содержащейся в сообщениях тайм-кода; таким образом, пропуск кадров со скоростью 29,97 кадра/с представляется как пропуск кадров со скоростью 30 кадров/с при понижении на 0,1%.

MTC позволяет синхронизировать секвенсор или DAW с другими устройствами, которые могут синхронизироваться с MTC, или для этих устройств, чтобы они «подчинялись» ленточному аппарату, который имеет полосу SMPTE. Для этого необходимо использовать преобразователь SMPTE в MTC. Ленточный аппарат может синхронизироваться с сигналом MTC (если он преобразован в SMPTE), если ленточный аппарат может «подчиняться» входящему таймкоду через управление двигателем, что является редкой функцией.

Формат временного кода

Длина кода времени MIDI составляет 32 бита, из которых 24 используются, а 8 бит не используются и всегда равны нулю. Поскольку сообщения полного кода требуют, чтобы самые значимые биты каждого байта были равны нулю (действительные байты данных MIDI), на самом деле доступно только 28 бит и 4 запасных бита.

Как и большинство аудиовизуальных таймкодов, таких как таймкод SMPTE , он кодирует только время суток, повторяясь каждые 24 часа. Время указывается в единицах часов, минут, секунд и кадров . В секунду может быть 24, 25 или 30 кадров.

В отличие от большинства других таймкодов, компоненты кодируются в прямом двоичном формате, а не в двоично-десятичном .

Каждому компоненту присваивается один байт:

Байт 0
0rrhhhhh: Скорость (0–3) и час (0–23).
Байт 1
00mmmmmm: Минута (0–59)
Байт 2
00ssssss: Секунда (0–59)
Байт 3
000fffff: Кадр (0–29 или меньше при более низкой частоте кадров )

Полный рабочий код

При скачке временного кода отправляется один полный временной код для синхронизации подключенного оборудования. Это принимает форму специального глобального системного эксклюзивного сообщения:

F0 7F 7F 01 01 hh mm ss ff F7

Идентификатор производителя 7Fуказывает на универсальное сообщение в реальном времени, канал 7Fуказывает на глобальную трансляцию. Следующий идентификатор 01указывает на то, что это сообщение типа временного кода, а второй 01указывает на то, что это сообщение полного временного кода. Далее следуют 4 байта временного кода. Хотя MIDI обычно имеет порядок байтов little-endian, 4 байта временного кода следуют в порядке big-endian, за которыми следует F7байт «end of exclusive».

После перехода таймер останавливается до тех пор, пока не будет получено первое следующее сообщение в четверть кадра.

Сообщения в четверть кадра

Когда время идет непрерывно, 32-битный временной код разбивается на 8 4-битных частей, и одна часть передается в каждом четверть кадра. То есть 96—120 раз в секунду, в зависимости от частоты кадров. Поскольку для полного сообщения временного кода требуется восемь четвертных кадров, полное время SMPTE обновляется каждые два кадра. Сообщения в четверть кадра состоят из байта состояния 0xF1, за которым следует одно 7-битное значение данных: 3 бита для идентификации части и 4 бита частичного временного кода. Когда время идет вперед, номера частей увеличиваются от 0 до 7; со временем, когда передается часть 0, это закодированный момент, а остальные части передаются позже.

Если поток MIDI-данных перематывается, номера частей отсчитываются в обратном порядке. Опять же, часть 0 передается в закодированный момент.

Временной код делится в порядке от младшего к старшему следующим образом:

Фрагменты MIDI-тайм-кода
Кусок #Байт данныхЗначение
00000 ffffНомер кадра lsbits
10001 000fНомер кадра msbit
20010 ssssВторые лсбиты
30011 00ssВторые мсбиты
40100 mmmmМинутные lsbits
50101 00mmМинута мсбит
60110 hhhhЧасовые лсбиты
70111 0rrhСкорость и час мбит

Смотрите также

  • Информация о временном коде MIDI
  • Спецификация временного кода MIDI 12 февраля 1987 г.
  • Руководство по спецификации программного обеспечения MIDI
Retrieved from "https://en.wikipedia.org/w/index.php?title=MIDI_timecode&oldid=1237188420"