Timecode and sync
Every file carries its own time — a time-of-day timecode track in video, a Broadcast Wave time reference in audio — so an editor lines them up without the manifest, and the manifest agrees with the files.
The cue starts every writer on the same tick, but that is not what makes the files sync. What makes them sync is that each one is stamped, from the host clock, with the time of day of its own first written frame. The files agree with each other because they agree with the clock.
What is in each file
| file | carries | as |
|---|---|---|
.mov (camera, display, window) |
a tmcd timecode track, one sample per frame |
local time of day at the first written frame, rounded to the nearest frame, counting at the integer frame rate |
.wav (microphone, system audio) |
a bext chunk |
TimeReference: samples since local midnight at the first sample, at 48 kHz |
Local, not UTC. Timecode is the machine’s own time of day — the
production convention, and what a camera on the same desk would stamp. The
manifest’s created, started and stopped are UTC; the manifest carries
the timecode string and the audio timeReference per stream as well, so
both readings are in one place.
Both are stamped from the same host clock at the same moment for a stream
that joins on the cue, and from that clock at the later moment for a stream
that joins late. A stream that started at 14:06:17 local carries
14:06:17:00 in its timecode track and 2 437 296 000 in its
TimeReference (50 777 s × 48 000), and an editor reading either lands it
in the same place.
Fractional rates count in the integer rate — 59.94 and 60.00024 both count in 60 — and the file’s own frame timing carries the exact rate, so the timecode names the frame and the container places it.
Why time-of-day
Take-relative timecode — every file starting at 00:00:00:00 — would sync
the cue’s files and nothing else. Time-of-day is the production standard
because:
- A late joiner needs no special case. Its first frame is stamped when it happened, and it lands where it happened.
- Everything from one day shares a timeline. Take 3’s B-camera sits after take 2’s without anyone doing arithmetic.
- Two machines line up. Two NTP-synced capture boxes — the camera on one, the prompter on the other — produce files that align to within the clocks’ agreement. That is the remote scenario, solved as a side effect of a decision made for other reasons.
Syncing in an editor
Select the take’s files and sync by timecode. Every NLE has the option; the name varies.
| editor | the option |
|---|---|
| DaVinci Resolve | Media pool → select → Auto Sync Audio → Based on Timecode; or Create Multicam Clip → Sync by Timecode |
| Premiere Pro | select → Synchronize… → Timecode; or a Multi-Camera Source Sequence with Timecode |
| Final Cut Pro | select → Synchronize Clips (timecode is used when present); or New Multicam Clip → Use timecode |
No manifest, no slate, no waveform matching. The files carry their own time, so the editor does the placing.
Drift
Drift is measured, not assumed. For a camera or a microphone, Rheocles
compares delivered frames × the nominal frame duration (samples ÷ rate for
audio) against the timeline they span and reports the difference in seconds
as drift — ~0 for a camera running at its rate, negative for a capture
card fed a slower signal than it advertises — in the manifest, and in
drift events while recording once step 6 lands.
A capture device’s clock is not the host’s clock, and a long take can drift by a frame or two. Whether a client does anything with the number is the client’s business; it costs nothing to emit, and an editor that wants to conform a long file has the figure to do it with.
framesDropped, on video, is a different thing: frames the encoder was not
ready for under load. The timeline stays correct — the frame is missing, not
shifted — and the field is absent when it is zero.
Midnight
Time-of-day wraps at midnight, and every camera and field recorder that uses it shares the consequence.
A take that starts before midnight and runs past it is fine. Every file that started before midnight agrees with every other, and editors handle the wrap on the timeline.
A stream that joins after midnight into a take that started before gets a
time-of-day stamp near zero — 00:03:10:00 — and an editor syncing by
timecode will place it twenty-four hours before the rest of the take rather
than three minutes after. Broadcast Wave’s TimeReference wraps the same
way, at the machine’s local midnight. There is no clean fix inside the
files.
The 4 GB ceiling
Broadcast Wave is WAV, and WAV stops at 4 GB. At 48 kHz, 24-bit, that is 144 kB a second per channel: about 8.3 hours mono, about 4.1 hours stereo. What Rheocles does at the limit is the engine’s to decide and this page will say when it is decided; until then, plan an all-day recording as more than one take.