MIDI Machine Control - MIDI Machine Control
MIDI Machine Control neboli MMC, podmnožina specifikace MIDI , poskytuje specifické příkazy pro ovládání záznamového zařízení, jako jsou vícestopé rekordéry. Zprávy MMC lze odesílat pomocí standardního kabelu MIDI pro dálkové ovládání funkcí jako Play, Fast Forward, Rewind, Stop, Pause a Record. Jedná se o zprávy „ System Exclusive “ (SysEx), konkrétně zprávy Universal Time SysEx v reálném čase.
Obsah
MIDI univerzální formát zprávy SysEx v reálném čase
MIDI zahrnuje zprávy System Exclusive, které jsou rozšířením formátu MIDI implementovaného výrobci MIDI. Některá rozšíření, „univerzální“, jsou sadou stejných funkcí, které mohou různí výrobci podrobně implementovat odlišně. Některé z nich jsou v reálném čase bez spolehlivého načasování doručení. Jiné jsou v reálném čase, včetně MMC, takže jsou spolehlivější, když se očekávají. Zprávy SysEx začínají ( hexadecimálně ) F0 a končí F7. Univerzální zprávy SysEx v reálném čase začínají F0, poté 7F, poté obsahují další pole před ukončovací F7.
Následující ukazuje univerzální formát zprávy SysEx v reálném čase (všechna čísla šestnáctková):
F0 7F <Device-ID> <Sub-ID#1> [<Sub-ID#2> [<parameters>]] F7
kde Device-ID
je:
MMC device's ID#; value 00-7F (7F = all devices); AKA "channel number"
a Sub-ID#1:
je jednou z následujících hodnot. Tučné hodnoty souvisí s MIDI Machine Control:
01 = MTC dlouhé formy |
02 = MIDI Show Control |
03 = Informace o notaci |
04 = Ovládání zařízení |
05 = CTC v reálném čase |
06 = MIDI Machine Control Command |
07 = MIDI Machine Control Response |
08 = Přeladění jedné poznámky |
Formát zprávy MMC
Zpráva MMC je buď příkaz MMC (Sub-ID # 1 = 06), nebo odpověď MMC (Sub-ID # 1 = 07). Jako zpráva SysEx je naformátovaná (všechna čísla šestnáctková):
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
Příkazy MMC
Příkazy MMC jsou buď dopravní zprávy MMC obsahující jeden bajt představující příkaz, nebo jiné typy obsahující bajt příkazu následované bajty parametrů. Některé parametry jsou délky sbírek bajtů ve zprávě, některé parametry jsou konstanty spojené s příkazem, jiné parametry jsou hodnoty proměnných dat specifikující provedení příkazu.
Záznam připraven
Zpráva Record Ready (Arm Tracks) zaznamená stopy umožňující záznam. Je formátován (všechna čísla šestnáctkově):
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.
Chcete-li nastavit stopu, musíte znát jak bajt, ve kterém bit stopy žije, tak i bit odpovídající této stopě. Všimněte si, že každý bajt může obsahovat pouze 7 stop.
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.
Přejít / vyhledat
Zpráva Goto (AKA Locate) nasměruje nahrávání nebo přehrávání na čas SMPTE (konkrétní hodinu, minutu, sekundu, číslo rámce SMPTE a kód podrámce). Je formátován (všechna čísla šestnáctkově):
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)
(Někteří výrobci kódují hodnotu podrámce odlišně při různých snímkových frekvencích, aby označili podrámeček 0)
Kyvadlová doprava
Přesměrování vpřed i vzad sdílí stejnou zprávu MMC; směr je zakódován jako hodnota znaménka. Je formátován (všechna čísla šestnáctkově):
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