Controle MIDI Machine - MIDI Machine Control

MIDI de controle da máquina , ou MMC, um subconjunto do MIDI especificação, fornece comandos específicos para controlar o equipamento de gravação, tais como gravadores de vias múltiplas. Mensagens MMC podem ser enviadas ao longo de um cabo MIDI padrão para controle remoto de funções como play, avançar, retroceder, parar, pausar, e Record. Estes são " System Exclusive " mensagens (SysEx), especificamente reais mensagens Tempo Universal SysEx.

Formato MIDI Universal Tempo real SysEx Mensagem

MIDI inclui mensagens System Exclusive, que são extensões do formato MIDI implementados pelos fabricantes MIDI. Algumas das extensões, os "universal" queridos, são um conjunto das mesmas funções que diferentes fabricantes podem implementar de forma diferente em detalhe. Alguns deles são Non Tempo real , sem prazos de entrega confiável. Outros são Tempo real, incluindo MMC, então eles estão mais confiável entregue quando o esperado. Mensagens SysEx começar com ( hexadecimal ) F0 e terminam com F7. Mensagens Tempo Universal real SysEx começar com F0, seguido por 7F, em seguida, incluir outros campos antes do F7 terminar.

O seguinte mostra Universal Tempo real formato de mensagem SysEx (todos os números hexadecimal):

F0 7F <Device-ID> <Sub-ID#1> [<Sub-ID#2> [<parameters>]] F7

onde Device-IDé:

MMC device's ID#; value 00-7F (7F = all devices); AKA "channel number"

e Sub-ID#1:é um dos seguintes valores. Os valores em negrito estão relacionados MIDI Machine Control:

01 = formulário longo MTC
02 = MIDI Mostrar Controlo
03 = Informação Notation
04 = Dispositivo de Controlo
05 = Tempo real MTC Cueing
06 = MIDI Comando de controlo de máquina
07 = MIDI Response Controle da Máquina
08 = única nota retune

MMC Message Format

Uma mensagem MMC seja um comando MMC (Sub-ID # 1 = 06) ou uma resposta MMC (Sub-ID # 1 = 07). Como uma mensagem de SysEx ele é formatado (todos os números hexadecimal):

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

Comandos MMC

Comandos MMC MMC são ou mensagens de transporte contendo um byte , representando o comando, ou de outros tipos que contenham o byte de comando seguido por bytes de parâmetros. Alguns parâmetros são comprimentos de coleções de bytes na mensagem, alguns parâmetros são constantes associadas com o comando, outros parâmetros são valores de dados variáveis especificando a execução do comando.

Record Ready

A mensagem Record Ready (ARM Tracks) irá gravar habilitar faixas. É formatado (todos os números hexadecimal):

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.

Para definir uma faixa, você deve saber tanto o byte no qual pouco da faixa vive, e também o bit correspondente a essa faixa. Note que cada byte só pode conter 7 faixas.

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 / Localize

O Goto (AKA Localizar) mensagem cues de gravação ou de reprodução para uma SMPTE tempo (uma hora, minuto, segundo, SMPTE número de quadro, e código subtrama específica). É formatado (todos os números hexadecimal):

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)

(Alguns fabricantes de codificar o valor subtrama de forma diferente em diferentes taxas de frame para indicar subtrama 0)

Transporte

Ambos frente e para trás vaivém share a mesma mensagem MMC; direção é codificado como um valor de sinal. É formatado (todos os números hexadecimal):

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

links externos