ReadonlychannelReadonlychannelsThe FILE's own channel count, which the recorder writes as 1: capture is per-channel mono
files (§2.1), so a STEREO strip contributes TWO tracks sharing one channel, left first.
The field is 1 | 2 because §4 leaves the stereo strip's other option open — one
two-channel file — and a reader must not assume a track it did not write is mono.
ReadonlyfileThe track's file inside the take folder, e.g. ch01.wav.
Optional ReadonlyframesHOW MANY FRAMES THIS TRACK ACTUALLY HOLDS, as the node reported them at close.
Added 2026-09-01, after the first real take: two channels that were armed and patched but whose source was not making a sound produced 94-byte, header-only files, and they listed in the take exactly like the ones carrying the show. Nothing in the sidecar could tell them apart, so the soundcheck loaded them, engaged two channels onto nothing, and the desk looked perfectly normal while two microphones were replaced by silence.
A COUNT RATHER THAN AN empty: boolean, because the count answers more questions with the
same field and cannot disagree with itself: emptiness is frames === 0, a truncated track
is one whose count falls short of SavedTake.lengthFrames, and a reader that wants
seconds has the take's rate on the same document.
OPTIONAL, and absence means UNMEASURED rather than zero. A take written before the recorder carried this — the operator's first real take among them — says nothing here, and a reader that read absence as "empty" would refuse to play a perfectly good show. Anything that needs to know for certain measures the file.
ReadonlylabelThe channel's name at record time, so the take reads on a desk since re-patched.
Optional ReadonlylegWHICH LEG OF THE STRIP THIS FILE HOLDS — left or right.
Capture is one mono file per leg (§2.1), so a stereo strip contributes two tracks sharing a
channel and a tap, and without this the only thing separating them is their ORDER in the
array. A sidecar reordered by any hand or tool swaps a stereo channel's legs with nothing to
catch it, and a reader that wants a named leg cannot have one.
A MONO strip writes left, which is the convention the RT already uses: the capture call
fills leg 0 and passes nothing for leg 1 on a mono lane.
OPTIONAL for the same reason frames is — takes already on the platter do not carry it, and a reader falls back to array position for those rather than refuse a real show.
ReadonlytapWHERE IN THE STRIP THIS TRACK WAS TAKEN FROM — a TapPointId from the ONE
catalogue (tap-points.ts), never a name of the recorder's own.
A channel contributes SEVERAL tracks now (§0.3: input and post-fader by default, pre-fader
on request, simultaneously), so channel no longer identifies a track and this is the field
that finishes the job. It is what makes a folder of ch01.wav … ch06.wav readable six
months later, and — the part that is not cosmetic — it is how the virtual soundcheck knows
which of a channel's files is the one it may replay into the strip head. Replaying a
post-fader track there would run the fader twice and the processing on a signal that had
already been through it, and nothing in the room would look wrong.
Required, not optional. A track whose tap is unstated is one a reader has to guess about, and the guess is exactly the mistake above.
ReadonlyxrunWhether the capture dropped frames on this track. Capture is best-effort by design — the recording is sacrificed before the live audio ever is — so a track that lost frames says so rather than presenting as complete.
The console channel this track was captured from.