Skip to content

Timecode & ArtNet Sync

Exaplay 3 can synchronise to external timecode sources for frame-accurate integration with lighting consoles, audio systems, and show-control systems — and it can also act as a timecode master that sends LTC and OSC out to drive other equipment.

Transport bar with TC: Locked indicator and jitter graph

Supported Sync Sources

SourceProtocolTypical Use
ArtNetUDP/IP (ArtNet 4)Lighting consoles, timecode distribution
LTCAudio signalTraditional linear timecode on tape or audio output
OSCUDP/IPSoftware timecode, custom show control
MTCMIDIHardware MIDI controllers, legacy DAW integration

Timecode Modes

The global mode is set in Config → Timecode → Timecode Mode:

ModeDirectionBehaviour
DisabledExaplay drives its own clock; no external TC is consumed or emitted.
OSC Timecode (slave)ReceiveLocks to OSC timecode received on the configured listen port.
LTC (slave)ReceiveDecodes LTC from an audio input channel.
MTC (slave)ReceiveLocks to MIDI Timecode from a Windows MIDI device.
Master (send TC)SendA chosen composition becomes the timecode source. Exaplay broadcasts that timecode as OSC and/or LTC to other equipment.

Changing the mode shows the relevant settings group below it. After editing settings, click Apply & Restart Timecode.

Framerate & Global Offset

These two settings apply in every mode:

  • Framerate24, 25, 29.97 DF, or 30 fps. Must match the timecode framerate of your sync source (or, in Master mode, the rate you want to send).
  • Global Offset — seconds (positive or negative) added to the timecode value before it is consumed (slave modes) or sent (master mode). Use this to slip Exaplay against an external source.

Receive: ArtNet Timecode

Not available in this build

ArtNet timecode receive is not yet wired up in the current build — there is no UI control to enable it, and incoming ArtNet timecode is not consumed. Use OSC, LTC, or MTC (below) for external timecode sync. This section documents the planned behaviour.

When available, the flow will be:

  1. Open Config → Network → ArtNet.
  2. Enable Receive ArtNet Timecode.
  3. Ensure the Exaplay machine is on the same subnet as the ArtNet source.

ArtNet timecode (OpTimeCode) is not addressed to a universe, so there is nothing to match on the Exaplay side — any timecode broadcast on the network is received.

When valid ArtNet timecode is received, the Transport bar shows a green TC: Locked indicator and the playhead locks to the incoming timecode.

Receive: LTC

  1. Connect the LTC source to an audio input on your audio interface.
  2. Open Config → Timecode, set Timecode Mode to LTC (slave).
  3. Pick the Input Channel (ASIO devices list named channels; the PortAudio path shows numbered channels).
  4. Choose the Sample Rate that matches the audio input (44.1 / 48 / 96 kHz).

Receive: OSC Timecode

  1. Open Config → Timecode, set Timecode Mode to OSC Timecode (slave).
  2. Adjust OSC Address if your sender uses something other than the default /timecode.
  3. The OSC listen port is configured globally under Config → Communication → OSC.

Receive: MTC

  1. Connect a MIDI interface that emits MTC.
  2. Open Config → Timecode, set Timecode Mode to MTC (slave).
  3. Pick the MIDI Input Device from the drop-down.

Chase Settings (slave modes)

When a slave mode is active, the Chase Settings group controls how the playhead follows external TC:

SettingWhat it does
Jump ThresholdIf incoming TC differs from the local clock by more than this many seconds, Exaplay jumps instead of smoothing.
Smoothing0 = hard follow, 1 = heavy averaging. Higher values mask jitter at the cost of latency.
Freewheel TimeIf the TC signal disappears, keep running on the local clock for this many seconds before stopping.

Send: Master Timecode Mode

In Master mode Exaplay generates timecode from a chosen composition and transmits it to other equipment. This lets Exaplay act as the show's timecode source — useful when you want a media composition to drive lighting, audio, or other media servers.

Setup

  1. Open Config → Timecode, set Timecode Mode to Master (send TC).
  2. Master Composition — pick the composition whose playhead drives the outgoing timecode. The composition's transport (play/pause/seek) is what listeners follow.
  3. Set Framerate to the rate you want to send (24 / 25 / 29.97 DF / 30). Note that 29.97 DF is reported on the wire as 30.
  4. Set Global Offset if you need the outgoing timecode to lead or trail the composition (for cueing other devices early).
  5. Enable one or both of:
    • OSC Timecode Out — sends a tightly-paced OSC bundle to all OSC clients configured under Communication → OSC Clients.
    • LTC Timecode Out — encodes LTC onto an audio output channel.
  6. Click Apply & Restart Timecode to commit and start the broadcaster.

OSC Output

When OSC Timecode Out is enabled, every tick sends an OSC bundle to the configured OSC Address (default /timecode) carrying three arguments:

TypeValue
float32Master composition time in seconds (including the Global Offset).
int32Framerate as 24, 25, or 30 (29.97 DF reports as 30).
stringWall-clock timecode formatted as HH:MM:SS:FF.

The bundle is sent to every client listed in Communication → OSC Clients — there is no per-client toggle, so the same timecode reaches all of them. To deliver to a single target only, leave just that one client enabled.

LTC Output

When LTC Timecode Out is enabled, Exaplay encodes LTC onto a chosen audio output channel:

  • LTC Output Channel — when the engine runs on ASIO, this is a named channel of the active ASIO device. On PortAudio, it is a numbered channel of the selected device.
  • LTC Output Device (PortAudio only) — pick the output device. Default Output Device follows the Windows default.
  • The encoder automatically tracks the engine's audio sample rate, so changing the audio rate at runtime restarts the encoder at the new rate (no pitch shift on the LTC carrier).

Wire the right channel to your destination

LTC is a square-wave audio signal — route the chosen channel to a balanced output and feed it into the LTC input of the receiving device. Mixing LTC into a program-audio bus will produce audible noise.

Master + Slave at the same machine

Master mode is mutually exclusive with the slave modes — Exaplay is either consuming external timecode or generating its own, not both. To have Exaplay's master TC drive a second Exaplay instance as a slave, point the second instance's OSC or LTC receiver at the first.


Sending Timecode (legacy OSC-out for slave modes)

Even when running in a slave mode, Exaplay can be configured to forward the locked timecode as OSC:

  1. Open Config → Communication → OSC Clients.
  2. Add the destination IP, port, and OSC address.

Slave-mode forwarding does not include the framerate or formatted-string fields used by Master mode — only the seconds value at the configured address.


Frame Rate

Set the project frame rate in Config → Video Settings → Frame Rate. This must match the timecode frame rate of your sync source (slave modes) or your downstream consumers (master mode).

Exaplay 3 User Documentation