External transport is composed of 2 different mechanisms:
- Transport position ( for example: measure 4, beat 2, or SMPTE location 00:05:01.5 )
- Transport speed ( for example: playing, stopped, or rewinding )
Methods of Transport and Timecode Sync using MIDI
MMC ( “midi machine control” ) sends commands like Play, Stop, Locate, and Rewind when they are initiated by the master.
MTC ( “midi transport control’” ) sends a continuous stream of the master’s position. From this, the playback speed can be derived.
Often MMC and MTC are combined in a single MIDI wire, to provide actions like “locating”, as well as continuous transport position of the master.
It is also common to send MMC commands from multiple machines to the Master machine. in this way, pressing the “Play” button on a remote machine can tell Mixbus to start playing. Mixbus then sends MTC timecode to all slave machines so they sync to the master’s position.
Methods of Transport and Timecode Sync using audio
LTC ( “Linear Time Code” ) typically uses the SMPTE protocol to provide the current position, like MTC. It is sent at a higher rate than MTC and can therefore provide more accurate time sync. LTC requires an audio port on the master & slave devices. LTC is common among professional video equipment, but not very prevalent among musical devices such as drum machines.
Factors that affect quality of synchronization
It is recommended that the digital recorder (usually Mixbus) is the master device, and sends a sync signal to the slave device(s).
To maintain “perfect” sync between 2 devices, you should use digital devices that are driven by a common master sample-rate clock. If 2 devices are using the same digital clock, then once sync is achieved, both devices will play at the same rate. This is why it is important to use a master sample-clock when possible.
The quality of the synchronization will be heavily dependent on the quality of the sync signal from the master machine, and the ability of the slave machine to follow the sync signal.
MIDI input&output from a computer suffers from problems of “latency” (delay) & “Jitter” (changing delay). This is worst with USB-connected devices which are subject to the USB protocol buffering. For this reason,
Generating an external clock from Mixbus ( Mixbus is Master )
This method is preferred when you’d like to sync an external device ( like a drum machine ) to Mixbus. This is the most common use for MTC/MMC synchronization.
By default, Mixbus is already configured to send MTC/MMC. To send the sync signal to an external device, the user must only connect Mixbus’s MTC+MMC ports to the appropriate MIDI wire. To do that, click on Window->MIDI Connections. Then select “Mixbus Misc” on the left tab, and “Hardware” on the bottom tab. Then click in the grid to make connections, as shown below:
Syncing Mixbus to an external clock ( Mixbus is Slave )
Mixbus can respond to external timecode control ( via MMC or OSC ) or timecode sync ( via MTC or LTC/SMPTE audio )
External Sync is initiated with the “Internal/External” sync button, to the right of the transport buttons on the editor.
Synchronization sources and options are set in the Preferences Window
When slaved to an external clock, Mixbus uses a high quality DLL (delay-locked-loop) to stabilize the incoming signal. This allows Mixbus to synchronize closely with an external signal, even if it has a lot of jitter.
If the sync source uses the same digital master clock as Mixbus, then once sync is achieved, they are guaranteed to continue playing & recording at the same rate.
If the 2 sources do NOT have the same sample-rate clock, then Mixbus’s behavior changes between playback and recording:
1) When playing back material, Mixbus will speed up & slow down to match the incoming clock position.
2) When recording material, Mixbus will achieve sync when recording starts, and recording will continue at the sample-clock rate, regardless of the changes in the incoming clock position.
Also see External Synchronization
Mixbus’s transport and timecode sync functions are largely developed by the Ardour open-source community. For more details, see the applicable chapters in the Ardour manual: