Ecasound Response to MMC Transport Messages
This article provides an overview of how the Ecasound digital audio workstation processes and responds to incoming MIDI Machine Control (MMC) transport messages. By acting as an MMC-capable target (slave), Ecasound translates standard MIDI SysEx transport commands sent from external hardware controllers or software sequencers directly into internal engine operations, allowing seamless remote control of multitrack playback, recording, and timeline navigation.
The MMC Control Architecture in Ecasound
Ecasound receives MMC messages through its configured MIDI input
subsystem, typically via the ALSA sequencer interface
(alsaseq) or raw MIDI devices. When configured to listen
for external transport commands, Ecasound functions as an MMC receiver.
It filters incoming MIDI system exclusive (SysEx) messages matching the
MMC device ID (or the all-call/broadcast ID 0x7F) and
parses the standard command byte to alter its playback engine state.
Response to Specific MMC Transport Commands
- Stop (
0x01): Upon receiving an MMC Stop command, Ecasound immediately halts the audio processing engine. The position cursor remains at the exact timecode where the command was received, equivalent to executing thestopcommand in Ecasound’s interactive mode. - Play / Deferred Play (
0x02/0x03): When an MMC Play message arrives, Ecasound initiates processing and starts stream playback across all active chains and outputs. If configured with processing buffers, playback begins immediately from the current cursor position, mirroring thestartinteractive command. - Fast Forward (
0x04) and Rewind (0x05): Ecasound interprets these messages by advancing or reversing the timeline position cursor by a predefined offset or scrubbing rate. - Record Strobe / Punch In (
0x06) and Record Exit (0x07): When tracks (chains) are routed to write destinations and armed for recording, Ecasound toggles recording state dynamically in response to record strobing commands without requiring a complete stop of the engine. - Locate / Target Seek (
0x44): Ecasound parses the standard standard MMC Locate command (sub-command0x01for target timecode). It extracts the SMPTE/MIDI timecode data, translates the hours, minutes, seconds, and frames into standard sample-accurate timeline units, and updates the internal position pointer (cs-set-position), ensuring subsequent play commands resume from the targeted offset.
Operational Behavior and Latency Handling
When handling incoming MMC commands, Ecasound applies state transitions between processing buffer cycles. This ensures audio engine stability and prevents audio buffer underruns or clicks during rapid state changes. While MMC does not provide continuous clock synchronization (unlike MIDI Time Code or MIDI Beat Clock), Ecasound relies on MMC strictly for non-continuous transport events, leaving continuous sample alignment to the underlying audio hardware clock.