When designing preplanned shows and working alongside other software, one of the common tasks is keeping the timing of everything in sync. Within VDMX there are two main ways of working with time – the Clock plugin which is used for working in measures and beats and the Timecode plugin which counts in SMPTE time.
In this set of tutorials we'll cover the basics of using the Timecode plugin which publishes several data sources in VDMX, and is capable of both receiving and sending SMPTE timecode in a several of common formats.
- A single Timecode plugin can only receive from one source at a time- it can receive from MTC (MIDI Timecode), LTC (Linear timecode), or from any data source in VDMX (including any MIDI/OSC/DMX data VDMX receives). Timecode plugins can also generate their own timecode locally, using a variety of framerates.
- The values received by a Timecode plugin are published in VDMX as a data source as a floating-point number describing the time in seconds.
- These values can be used to drive Cue Lists, LFOs, control movie playback directly, etc.
- A single timecode plugin can have multiple reference times, which are configured in its inspector- the time passed since the last reference time is published as a data source in VDMX, along with the index and name of the reference time.
- A single timecode plugin can publish its value to multiple destinations, in multiple formats. Values can be sent to other devices using MTC, LTC, and OSC.
Introduction to Timecode
To begin we will look at some of the ways that Timecode plugin can be used to directly control parameters within VDMX. Like most plugins this is accomplished by linking sliders, buttons and other interface items to the data-sources published by the Timecode plugin.
Receiving Timecode from MTC
One of the more common protocols for passing timecode between different software is known as MTC (MIDI Timecode) which can be both sent and received from the Timecode plugin in VDMX.
In this quick example we will use QLab to generate a MTC signal that will be received by VDMX over the system MIDI IAC Driver Bus.
Tip: For simple cases MTC can also be directly received by sliders without using the Timecode plugin.
Receiving Timecode from LTC
Another common way to send timecode between systems is using LTC (Linear Timecode) which encodes the values as sound over a standard audio connection.
In this example we will be receiving LTC being sent from another computer and being received through a USB audio interface. The sample rate of the device and the framerate of the signal will be displayed when values are being received. If needed multiple LTC signals can be received on different audio channels by adding more Timecode plugins to your VDMX project.
Tip: For working with LTC between applications on a single computer you can use SoundFlower to patch the audio.
Receiving Timecode from OSC
Though there is no formal protocol for sending timecode over OSC, you can send time values (in seconds) as float values to drive a Timecode plugin.
Like with the internally generated timecode when using OSC you can set the framerate that should be used locally.
Tip: When working with OSC the Console plugin can be used to view a log of incoming values.
Using a Backing Track Movie to Drive Timecode
In addition to slaving a Timecode plugin to external sources you can use any internal data-source to set the current time in seconds.
For this example we will use a backing track movie playing on a layer as the value that is used to drive the timing for other controls in our project.
Sending Timecode from VDMX as LTC, MTC, and OSC
Each Timecode plugin can be set to publish its current time position out to one or more other systems simultaneously in three different supported protocols: LTC, MTC, and OSC.
- For LTC, select an audio interface and channel.
- For MTC, select a MIDI device / bus.
- For OSC, select a OSC output and address path.
In this example on the receiving side we will use Horae for LTC, MIDI Monitor for MTC and our own OSC Test App to print out OSC values.