MIDI Machine Control , или MMC, подмножество спецификации MIDI , предоставляет специальные команды для управления записывающим оборудованием, таким как многодорожечные записывающие устройства. Сообщения MMC могут быть отправлены по стандартному MIDI-кабелю для дистанционного управления такими функциями, как воспроизведение, ускоренная перемотка вперед, перемотка назад, остановка, пауза и запись. Это « системные эксклюзивные » (SysEx) сообщения, в частности универсальные сообщения SysEx в реальном времени.
Универсальный MIDI-формат сообщений SysEx в реальном времени
MIDI включает в себя системные эксклюзивные сообщения, которые являются расширениями формата MIDI, реализованного производителями MIDI. Некоторые из расширений, «Универсальные», представляют собой набор одних и тех же функций, которые разные производители могут реализовать по-разному в деталях. Некоторые из них не в реальном времени , без надежных сроков доставки. Другие - в реальном времени, в том числе MMC, поэтому они доставляются более надежно, когда ожидается. Сообщения SysEx начинаются с ( шестнадцатеричной ) F0 и заканчиваются F7. Сообщения Universal Real Time SysEx начинаются с F0, за которым следует 7F, а затем включают другие поля перед завершающей F7.
Ниже показан формат сообщения Universal Real Time SysEx (все числа в шестнадцатеричном формате):
F0 7F
[ #1>[ #2>]] F7
где Device-ID
находится:
MMC device's ID#; value 00-7F (7F = all devices); AKA "channel number"
и Sub-ID#1:
является одним из следующих значений. Значения, выделенные жирным шрифтом, относятся к MIDI Machine Control:
01 = Длинная форма MTC |
02 = MIDI Show Control |
03 = Обозначение информации |
04 = Контроль устройства |
05 = MTC Cueing в реальном времени |
06 = MIDI Machine Control Command |
07 = Ответ MIDI Machine Control |
08 = Перенастройка одной ноты |
Формат сообщения MMC
Сообщение MMC - это либо команда MMC (Sub-ID # 1 = 06), либо ответ MMC (Sub-ID # 1 = 07). Как сообщение SysEx оно форматируется (все числа шестнадцатеричные):
F0 7F
<06|07> [ [ #2>]] F7
Device-ID: MMC device's ID#; value 00-7F (7F = all devices); AKA "channel number"
Дополнительный идентификатор # 1: 06 = команда Дополнительный идентификатор № 2: 01 Стоп 02 Играть 03 Отложенная игра (игра после того, как больше не занята) 04 Быстрая перемотка вперед 05 Перемотка назад 06 Запись строба (AKA [[Punch in / out | Punch In]]) 07 Выход из записи (AKA [[Punch out (музыка) | Punch out]]) 08 Запись паузы 09 Pause (приостановить воспроизведение) 0A Eject (отсоединить медиа-контейнер от устройства MMC) 0B Чейз 0D Сброс MMC (по умолчанию / состояние запуска) 40 записей (AKA Record Ready, AKA Arm Tracks) параметры:4F 44 Гото (также известный как найти) параметры: <длина> = 06 01 <часы> <минуты> <секунды> <кадры> <подкадры> 47 Шаттл параметры:= 03 (коды стандартной скорости MIDI)
Субидентификатор №1: 07 = ответ Субидентификатор # 2: состояние ответа параметры: значения, детализирующие состояние ответа
Команды MMC
Команды MMC - это либо транспортные сообщения MMC, содержащие один байт, представляющий команду, либо другие типы, содержащие байт команды, за которым следуют байты параметров. Некоторые параметры - это длины наборов байтов в сообщении, некоторые параметры - это константы, связанные с командой, другие параметры - это значения переменных данных, определяющие выполнение команды.
Готова к записи
Сообщение Готово к записи (Arm Tracks) включит запись треков. Он отформатирован (все числа в шестнадцатеричном формате):
F0 7F06 40 <длина1> 4F <длина2> <битовая карта трека> F7 устройства>
length1: количество байтов от length1 до F7length2: количество байтов в битовой карте дорожкиtrack-bitmap: каждой дорожке назначается бит в битовой карте дорожки.
Чтобы установить дорожку, вы должны знать как байт, в котором находится бит дорожки, так и бит, соответствующий этой дорожке. Обратите внимание, что каждый байт может содержать только 7 дорожек.
Дорожка 1: байт 1 + 0x20Дорожка 2: байт 1 + 0x40Дорожка 3: байт 2 + 0x01Дорожка 4: байт 2 + 0x02Дорожка 5: байт 2 + 0x04Дорожка 6: байт 2 + 0x08Дорожка 7: байт 2 + 0x10Дорожка 8: байт 2 + 0x20Дорожка 9: байт 2 + 0x40Дорожка 10: байт 3 + 0x01и так далее.
Перейти / Найти
Сообщение Goto (AKA Locate) указывает на запись или воспроизведение по времени SMPTE (конкретный час, минута, секунда, номер кадра SMPTE и код подкадра). Он отформатирован (все числа в шестнадцатеричном формате):
F0 7F06 44 <длина> = 06 01 устройства>
F7
Субидентификатор # 2 = 44: команда LOCATElength: 06 Количество байтов данных (всегда шесть байтов)подкоманда: 01 TARGEThr: часы и тип (как в MTC Fullframe); значения 0-17 (= 0-23 десятичный)мин: минуты; значения 0-3B (= 0-59 десятичный)sc: секунды; значения 0-3B (= 0-59 десятичный)fr: кадры; значения 0-1D (= 0-29 десятичный)ff: подкадры / дробные кадры (оставьте ноль, если не уверены); значения 0-63 (= 0-99 десятичный)
(некоторые производители кодируют значение подкадра по-разному с разной частотой кадров, чтобы указать подкадр 0)
Шаттл
Как при прямом, так и при обратном перемещении используется одно и то же сообщение MMC; направление кодируется как знаковое значение. Он отформатирован (все числа в шестнадцатеричном формате):
F0 7F06 47 Примечание: sh, sm и sl определены как стандартная скорость в Рекомендации по MIDI 1.0 RP-013.sh = Номинальная целая часть значения скорости: 0 g sss ppp g = знак (1 = обратный) sss = сдвинуть счетчик влево (см. ниже) ppp = старшие значащие биты целого числа, кратного скорости воспроизведенияsm = старший бит номинальной дробной части значения скорости: 0 qqqqqqqsl = младший бит номинальной дробной части значения скорости: 0 rrrrrrrЗначения скорости за смену слева отсчитывают:ДВОИЧНОЕ ПРЕДСТАВЛЕНИЕ ИСПОЛЬЗУЕМЫЕ ДИАПАЗОНЫ (ДЕСЯТИЧНОЕ)Целое кратное Дробное число Целое Дробное числоsss of play скорость воспроизведения разрешение диапазон скорости000 ppp - qqqqqqqrrrrrrr 0-7 1/16384001 pppq - qqqqqqrrrrrrr 0-15 1/8192010 pppqq - qqqqqrrrrrrr 0-31 1/4096011 pppqqq - qqqqrrrrrrr 0-63 1/2048100 pppqqqq - qqqrrrrrrr 0-127 1/1024101 pppqqqqq - qqrrrrrrr 0-255 1/512110 pppqqqqqq - qrrrrrrr 0-511 1/256111 pppqqqqqqq - rrrrrrr 0-1023 1/128F7