How to Chase External Timecode with a Cue Stack
Most guides cover generating timecode. Following someone else's is the harder half — locating, re-syncing, and deciding what happens when it stops.
CueSync TeamStage Automation Engineers
The Half Nobody Documents
Search for timecode guidance and you will find generation: how to get LTC out of a DAW, how to configure MTC, which port to use. Following someone else's clock gets far less coverage, and it is the harder problem — because a generator only has to be right, while a follower has to be right about someone else, including when that someone else misbehaves.
Three things separate a real chase implementation from one that works in the shop.
1. It Has to Locate
Locating means jumping to the correct state for an arbitrary position, without having played through the material before it.
If the follower joins at 00:42:17, it must immediately be in whatever state the show should be in at 00:42:17 — not the state it will reach once the next cue fires.
This sounds like an edge case and is the single most-used feature in the building. Tech rehearsal is twenty runs of the same eight bars from twenty different entry points. A follower that can only advance forward from zero turns every one of those into a full replay, and a rehearsal day evaporates.
It also matters exactly once in performance, catastrophically, if anything restarts mid-show.
2. Liveness Is Frame Arrival, Not Frame Change
This is the bug that gets shipped most often, including by us.
A master parked at one position — paused, held at the top of a cue, waiting on a standby — keeps transmitting frames at its normal rate, carrying an identical value. An implementation that measures freshness by watching the value change concludes the source has died while its frames are still arriving, and falls back to another clock in the middle of a show.
Freshness must follow arrival. CueSync had this defect and fixed it by emitting every accepted frame to freshness consumers rather than only the ones whose contents differ — a distinction that sounds pedantic until a paused master silently demotes your timecode source during a hold.
3. It Has to Have an Answer for Silence
When timecode stops, a follower does one of two things, and both are defensible:
Freewheel — continue on an internal clock at the last known rate, assuming the master will return. Correct when a visible stall is worse than a small drift: continuous music-driven sequences, anything where the audience would notice the show stopping.
Freeze — hold the last known state and wait. Correct when running blind is worse than stopping: scene changes, automation, anything where being wrong about position is dangerous rather than merely untidy.
The failure is choosing neither, discovering the default during a performance, and finding that the operator could not tell which mode was active.
The Frame Rate Is Not Reliably in the Signal
LTC carries limited rate information; MTC's is easy to misconfigure. In practice you declare the rate on both ends and verify on the follower.
A follower running 30 against a 29.97 master looks fine and drifts roughly a frame every 33 seconds. That is invisible for the first minute and unmistakable by the interval — the worst possible failure profile, because it passes every quick check.
Set it on the generator. Set the same value on every follower. Then check the followers, rather than assuming they inherited anything.
How CueSync Chases
Sources are ranked by priority — CDJ, then MTC, then LTC, then TCNet — with an internally generated clock appended last, so a self-generated clock fills a vacuum but never pre-empts a live master. A forced-source override pins the input when you want the rig to stop negotiating and simply obey one thing.
Rate changes are handled as label-preserving reseats: when the declared rate changes, the position label is preserved rather than re-derived, so a mid-show rate correction does not jump the show to a different place. This is a deliberate invariant and not an implementation detail worth "simplifying" away.
The same service that chases also generates, which means CueSync can sit in the middle of a chain — chase MTC from a DAW while generating LTC and Art-Net timecode outward for departments that need a different carrier.
A Commissioning Checklist
- Locate test. Start the master at five arbitrary positions. The follower should be correct immediately at each, not after the next cue.
- Hold test. Pause the master for thirty seconds. The source must stay live — frames are still arriving.
- Silence test. Pull the cable. Confirm the behaviour is the one you chose, and that the operator can see it.
- Rate test. Deliberately misconfigure the follower by one rate step, run five minutes, and watch it drift. Now you know what that failure looks like when it happens for real.
- Rejoin test. Restart the follower mid-show. It should locate and carry on.
Five tests, twenty minutes, and they cover essentially every timecode fault that shows up on a real production.
Further Reading
- Where Should Your Show's Timecode Come From? — choosing the master in the first place
- How to Convert TCNet to SMPTE Timecode — when the source is not timecode yet
- How to Send Timecode to GrandMA3 — the generation side
- CueSync for Theatre Operators — cue stacks, Show Editor, Run Mode
Frequently Asked Questions
It means jumping to the correct state for an arbitrary timecode position without having played through the material before it. If a follower joins at 00:42:17 it must immediately be in whatever state the show should be in at that moment — not the state it would reach after the next cue fires. This matters constantly in rehearsal, where you will run the same eight bars twenty times from different entry points, and it matters once catastrophically in performance if anything restarts mid-show. A follower that can only advance forward from zero is not really chasing.
Keep Reading
Where Should Your Show's Timecode Come From?
Reaper, QLab, the console's internal clock, a hardware generator, or the live performance itself. Four architectures, and how to pick between them.
ReadHow to Convert TCNet to SMPTE Timecode
TCNet carries deck position over UDP 60000, but no lighting console reads it. How to turn it into LTC, MTC or Art-Net timecode a desk can actually chase.
ReadHow to Send Timecode to GrandMA3: LTC, MTC, Art-Net and TCNet
GrandMA3 can follow SMPTE/LTC, MIDI timecode or Art-Net timecode. How each reaches the console, which to choose, and what happens when the source drops.
Read