MIDI Machine Control
In-game article clicks load inline without leaving the challenge.
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, specifically Real Time Universal SysEx messages.
MIDI Universal Real Time SysEx message format
MIDI includes System Exclusive messages that are extensions of the MIDI format implemented by MIDI manufacturers. Some of the extensions, the "Universal" ones, are a set of the same functions that different manufacturers can implement differently in detail. Some of them are Non Real Time, with no reliable delivery timing. Others are Real Time, including MMC, so they are more reliably delivered when expected. SysEx messages start with (hexadecimal) F0 and end with F7. Universal Real Time SysEx messages start with F0, followed by 7F, then include other fields before the terminating F7.
The following shows Universal Real Time SysEx message format (all numbers hexadecimal):
F0 7F <Device-ID> <Sub-ID#1> [<Sub-ID#2> [<parameters>]] F7
where Device-ID is:
MMC device's ID#; value 00-7F (7F = all devices); AKA "channel number"
and Sub-ID#1: is one of the following values. The bolded values are MIDI Machine Control related:
| 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 message format
An MMC message is either an MMC command (Sub-ID#1=06) or an MMC response (Sub-ID#1=07). As a SysEx message it is formatted (all numbers 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"
MMC commands
MMC Commands are either MMC transport messages containing one byte representing the command, or other types containing the command byte followed by parameter bytes. Some parameters are lengths of collections of bytes in the message, some parameters are constants associated with the command, other parameters are variable data values specifying command execution.
Record Ready
The Record Ready (Arm Tracks) message will record-enable tracks. It is formatted (all numbers hexadecimal):
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.
Goto/Locate
The Goto (AKA Locate) message cues recording or playback to an SMPTE time (a specific hour, minute, second, SMPTE frame number, and subframe code). It is formatted (all numbers hexadecimal):
(some manufacturers encode the subframe value differently at different frame rates to indicate subframe 0)
Shuttle
Both forward and backward shuttling share the same MMC message; direction is encoded as a sign value. It is formatted (all numbers hexadecimal):
External links
- 2016-06-01 at theWayback Machine