MIDI-управление машиной
MIDI Machine Control , или MMC, подмножество спецификации MIDI , предоставляет специальные команды для управления записывающим оборудованием, например, многодорожечными рекордерами. Сообщения MMC можно отправлять по стандартному MIDI-кабелю для дистанционного управления такими функциями, как воспроизведение, перемотка вперед, перемотка назад, остановка, пауза и запись. Это « системные эксклюзивные » (SysEx) сообщения, а именно сообщения Universal SysEx в реальном времени.
Универсальный MIDI-формат сообщений SysEx в реальном времени
[ редактировать ]MIDI включает в себя эксклюзивные сообщения системы, которые являются расширениями формата MIDI, реализованными производителями MIDI. Некоторые из расширений, «Универсальные», представляют собой набор одинаковых функций, которые разные производители могут реализовать по-разному в деталях. Некоторые из них не в реальном времени , без точного времени доставки. Другие работают в режиме реального времени, включая MMC, поэтому они доставляются более надежно, когда это ожидается. Сообщения SysEx начинаются с ( шестнадцатеричного ) F0 и заканчиваются F7. Сообщения Universal Real Time SysEx начинаются с F0, за которым следует 7F, затем включаются другие поля перед завершающей F7.
Ниже показан формат сообщения Universal Real Time SysEx (все числа шестнадцатеричные):
F0 7F <Device-ID> <Sub-ID#1> [<Sub-ID#2> [<parameters>]] 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-шоу |
03 = Информация об обозначениях |
04 = Управление устройством |
05 = Сигнал MTC в реальном времени |
06 = MIDI-команда управления машиной |
07 = Ответ управления MIDI-машиной |
08 = Перенастройка одной ноты |
Формат сообщения MMC
[ редактировать ]Сообщение MMC представляет собой либо команду MMC (Sub-ID#1=06), либо ответ MMC (Sub-ID#1=07). Оно форматируется как сообщение SysEx (все числа шестнадцатеричные):
F0 7F <Device-ID> <06|07> [<Sub-ID#2> [<parameters>]] F7
Device-ID: MMC device's ID#; value 00-7F (7F = all devices); AKA "channel number"
Sub-ID#1: 06 = command Sub-ID#2: 01 Stop 02 Play 03 Deferred Play (play after no longer busy) 04 Fast Forward 05 Rewind 06 Record Strobe (AKA [[Punch in/out|Punch In]]) 07 Record Exit (AKA [[Punch out (music)|Punch out]]) 08 Record Pause 09 Pause (pause playback) 0A Eject (disengage media container from MMC device) 0B Chase 0D MMC Reset (to default/startup state) 40 Write (AKA Record Ready, AKA Arm Tracks) parameters: <length1> 4F <length2> <track-bitmap-bytes> 44 Goto (AKA Locate) parameters: <length>=06 01 <hours> <minutes> <seconds> <frames> <subframes> 47 Shuttle parameters: <length>=03 <sh> <sm> <sl> (MIDI Standard Speed codes)
Sub-ID#1: 07 = response Sub-ID#2: response state parameters: values detailing response state
Команды ММС
[ редактировать ]Команды MMC — это либо транспортные сообщения MMC, содержащие один байт , представляющий команду, либо другие типы, содержащие байт команды, за которым следуют байты параметров. Некоторые параметры — это длины наборов байтов в сообщении, некоторые параметры — это константы, связанные с командой, другие параметры — это значения переменных данных, определяющие выполнение команды.
Запись готова
[ редактировать ]Сообщение «Record Ready (Arm Tracks)» активирует запись треков. Форматируется (все числа шестнадцатеричные):
F0 7F <Device-ID> 06 40 <length1> 4F <length2> <track-bitmap> F7
length1: number of bytes between length1 and F7 length2: number of bytes in the track bitmap track-bitmap: Each track is assigned a bit in the track bitmap.
Чтобы установить дорожку, вы должны знать как байт, в котором находится бит дорожки, так и бит, соответствующий этой дорожке. Обратите внимание, что каждый байт может содержать только 7 дорожек.
Track 1: byte 1 + 0x20 Track 2: byte 1 + 0x40 Track 3: byte 2 + 0x01 Track 4: byte 2 + 0x02 Track 5: byte 2 + 0x04 Track 6: byte 2 + 0x08 Track 7: byte 2 + 0x10 Track 8: byte 2 + 0x20 Track 9: byte 2 + 0x40 Track 10: byte 3 + 0x01 and so on.
Перейти/Найти
[ редактировать ]Сообщение Goto (также известное как Locate) указывает на запись или воспроизведение по времени SMPTE (определенный час, минута, секунда, номер кадра SMPTE и код подкадра). Форматируется (все числа шестнадцатеричные):
F0 7F <Device-ID> 06 44 <length>=06 01 <hr> <mn> <sc> <fr> <ff> F7
Sub-ID#2 =44: LOCATE command length: 06 Data byte count (always six bytes) subcommand: 01 TARGET hr: hours and type (as with MTC Fullframe); values 0-17 (= 0-23 decimal) mn: minutes; values 0-3B (= 0-59 decimal) sc: seconds; values 0-3B (= 0-59 decimal) fr: frames; values 0-1D (= 0-29 decimal) ff: sub-frames / fractional frames (leave at zero if un-sure); values 0-63 (= 0-99 decimal)
(некоторые производители кодируют значение подкадра по-разному при разной частоте кадров, чтобы указать подкадр 0)
Трансфер
[ редактировать ]Как прямое, так и обратное переключение используют одно и то же сообщение MMC; направление кодируется как значение знака. Форматируется (все числа шестнадцатеричные):
F0 7F <Device0ID> 06 47 <length=03> <sh> <sm> <sl> F7 Note: sh, sm and sl are defined as Standard Speed in the MIDI 1.0 Recommended Practice RP-013. sh = Nominal Integer part of speed value: 0 g sss ppp g = sign (1 = reverse) sss = shift left count (see below) ppp = most significant bits of integer multiple of play-speed sm = MSB of nominal fractional part of speed value: 0 qqqqqqq sl = LSB of nominal fractional part of speed value: 0 rrrrrrr Speed values per shift left count: BINARY REPRESENTATION USABLE RANGES (DECIMAL) Integer multiple Fractional part Integer Fractional sss of play speed of play speed range resolution 000 ppp - qqqqqqqrrrrrrr 0-7 1/16384 001 pppq - qqqqqqrrrrrrr 0-15 1/8192 010 pppqq - qqqqqrrrrrrr 0-31 1/4096 011 pppqqq - qqqqrrrrrrr 0-63 1/2048 100 pppqqqq - qqqrrrrrrr 0-127 1/1024 101 pppqqqqq - qqrrrrrrr 0-255 1/512 110 pppqqqqqq - qrrrrrrr 0-511 1/256 111 pppqqqqqqq - rrrrrrr 0-1023 1/128