Receiving MIDI SMPTE Time Code (MTC) in VDMX

Download the completed project file and sample media for this tutorial.

For more advanced use cases also see the Timecode plugin.

MIDI Time Code (MTC) is a specification for sending SMPTE values from a master playback application such as QLab or Apple Logic to keep the play time of other real-time music and visuals software in sync over MIDI. While MTC has a few drawbacks it can be very useful when setting up live performances where VDMX is being used alongside audio software that can send it.

In this tutorial we'll look at how to receive MTC in VDMX in two ways: First, the classic example of syncing the time position of a QuickTime movie to the incoming timecode.

In the second case instead of a traditional movie, a simple Quartz Composer patch will receive the MTC and render a real-time animated read out of the values in standard SMPTE format.

Since MTC can be accessed anywhere, it can also be used to control the time position in the LFO and Step Sequencer plugins, or sent back out over OSC to other software that can not directly receive timecode.

Movie 'Time Slider' in VDMX slave to MTC from QLab.

Materials and Prerequisites:

  1. Download QLab, or other software capable of sending MTC.
  2. Read the tutorial on MIDI setup in VDMX.

Step 1: Send 'MTC' from QLab.

  1. Double click or drag 'MTC' in the sidebar to add a new 'MTC Cue' to the project.
  2. Select the MTC Cue and under 'Settings' in the MIDI Destination menu choose 'To VDMX'.
  3. If needed, set the SMPTE Format to your movie frame rate.

Once the MTC Cue is set up in QLab, start sending timecode by clicking the 'Load' button and then the 'GO' button.

QLab with an active MTC Cue sending 'To VDMX'

Step 2: Sync sliders in VDMX to the MTC source.

Setting up a slider or other UI item to receive MTC works just like any other MIDI data-source. You can either use the 'Detect MIDI' option from the right-click menu or enter the appropriate address path (eg. '/MIDI/ch. 0/MTC') in the UI Inspector window as shown below.

When MIDI Time Code is received by a slider in VDMX it is interpreted in number of seconds. Unlike other MIDI data such as note velocity or control values, MTC may not have an explicit maximum value- as such, sliders receiving MTC will automatically attempt to set their ranged value to this exact value in seconds- this differs from the normal default slider behavior which is to  scale to the incoming MIDI data to the range of the min and max envelopes on the slider.


Using the 'UI Inspector' to manually set up MTC receiving on the 'Time Slider' of 'Layer 1'

Quartz Composer composition with 'MTC Input' slider to set the rendered SMPTE time.