MIDI Machine Control
Encyclopedia
MIDI Machine Control, or MMC, a subset of the MIDI specification, provides specific commands for controlling recording equipment such as multi-track recorders.
MMC messages can be sent along a standard MIDI cable for remote control of such functions as Play, Fast Forward, Rewind, Stop, Pause, and Record. These are "System Exclusive" (SysEx) messages.
F0, 7F, nn, sub-ID, data, F7
nn = channel number, 00 to 7F; 7F = global
sub-IDs:
01 = Long Form MTC
02 = MIDI Show Control
03 = Notation Information
04 = Device Control
05 = Real Time MTC Cueing
06 = MIDI Machine Control Command
07 = MIDI Machine Control Response
08 = Single Note Retune
F0 7F deviceID 06 command F7
The third byte is the Device ID.
The fifth byte is the command:
01 Stop
02 Play
03 Deferred Play
04 Fast Forward
05 Rewind
06 Record Strobe (Punch In)
07 Record Exit (Punch out)
08 Record Ready (Record Pause)
09 Pause
0A Eject
0B Chase
0D MMC Reset
40 Write
44 Locate/Go to
47 Shuttle
F0 7F deviceID 06 44 06 01 hr mn sc fr ff F7
Where, following the device ID and "MIDI Machine Control Command" (0x06) bytes:
And:
F0 7F deviceID 06 47 03 sh sm sl F7
Note: sh, sm and sl are defined as Standard Speed in the MIDI 1.0
Recommended Practice RP-013.
F0 7F deviceID 06 40 L1 4F L2 track bitmap F7
L1 equals the number of bytes between L1 and F7.
L2 equals the number of bytes in the track bitmap.
Each track is assigned a bit in the track bitmap. To set a track, you must know both the byte in which the track's bit lives, and also the bit corresponding to that track. Note that each byte can only hold 7 tracks.
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.
F0 7E channel 06 01 F7
The reply is device/manufacturer specific. For example, a tape recorder will return the following System Exclusive message:
F0, 7E, channel, 06 02 ID fc1 fc2 fn1 fn2 v1 v2 v3 v4 F7
parameters:
ID - Device's ID
fc1 fc2 - Device's family code
fn1 fn2 - Device's family number
v1 v2 v3 v4 - Software Version
MMC messages can be sent along a standard MIDI cable for remote control of such functions as Play, Fast Forward, Rewind, Stop, Pause, and Record. These are "System Exclusive" (SysEx) messages.
MIDI Universal Real Time SysEx Commands
All numbers are in hexadecimal notation. SysEx message format:F0, 7F, nn, sub-ID, data, F7
nn = channel number, 00 to 7F; 7F = global
sub-IDs:
01 = Long Form MTC
02 = MIDI Show Control
03 = Notation Information
04 = Device Control
05 = Real Time MTC Cueing
06 = MIDI Machine Control Command
07 = MIDI Machine Control Response
08 = Single Note Retune
MMC messages
An MMC message (that is sent to, or generated by, an MMC device) is:F0 7F deviceID 06 command F7
The third byte is the Device ID.
The fifth byte is the command:
01 Stop
02 Play
03 Deferred Play
04 Fast Forward
05 Rewind
06 Record Strobe (Punch In)
07 Record Exit (Punch out)
08 Record Ready (Record Pause)
09 Pause
0A Eject
0B Chase
0D MMC Reset
40 Write
44 Locate/Go to
47 Shuttle
The Goto MMC message
The Goto message cues recording or playback to an SMPTE time (a specific hour, minute, second, SMPTE frame number, and subframe number):F0 7F deviceID 06 44 06 01 hr mn sc fr ff F7
Where, following the device ID and "MIDI Machine Control Command" (0x06) bytes:
- 0x44 specifies the LOCATE command
- 0x06 specifies the data byte count
- 0x01 specifies the "TARGET" sub-command
And:
- hr is hours - from 0 to 23 (decimal)
- mn is minutes - from 0 to 59 (decimal)
- sc is seconds - from 0 to 59 (decimal)
- fr is frames - from 0 to 29 (decimal)
- ff is sub-frames / fractional frames (leave at zero if un-sure) - from 0 to 99 (decimal)
The Shuttle MMC message
Both forward and backward shuttling share the following MMC message:F0 7F deviceID 06 47 03 sh sm sl F7
Note: sh, sm and sl are defined as Standard Speed in the MIDI 1.0
Recommended Practice RP-013.
The Record Ready MMC message
The Record Ready (Arm Tracks) message will record-enable tracks:F0 7F deviceID 06 40 L1 4F L2 track bitmap F7
L1 equals the number of bytes between L1 and F7.
L2 equals the number of bytes in the track bitmap.
Each track is assigned a bit in the track bitmap. To set a track, you must know both the byte in which the track's bit lives, and also the bit corresponding to that track. Note that each byte can only hold 7 tracks.
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.
Identity Request
Query an MMC device to find out its identity. Identity Request message (note that this is equal to a 'stop' message):F0 7E channel 06 01 F7
The reply is device/manufacturer specific. For example, a tape recorder will return the following System Exclusive message:
F0, 7E, channel, 06 02 ID fc1 fc2 fn1 fn2 v1 v2 v3 v4 F7
parameters:
ID - Device's ID
fc1 fc2 - Device's family code
fn1 fn2 - Device's family number
v1 v2 v3 v4 - Software Version