openmixer — generated API reference
    Preparing search index...

    Interface TakeTrack

    interface TakeTrack {
        channel: ChannelId;
        channels: 1 | 2;
        file: string;
        frames?: number;
        label: string;
        leg?: TakeTrackLeg;
        tap: string;
        xrun: boolean;
    }
    Index
    channel: ChannelId

    The console channel this track was captured from.

    channels: 1 | 2

    The 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.

    file: string

    The track's file inside the take folder, e.g. ch01.wav.

    frames?: number

    HOW 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.

    label: string

    The channel's name at record time, so the take reads on a desk since re-patched.

    WHICH 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.

    tap: string

    WHERE 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.

    xrun: boolean

    Whether 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.