openmixer — generated API reference
    Preparing search index...

    Interface MixerAdapter

    interface MixerAdapter {
        clipCapture?: ClipCapture;
        keepAliveInterval: number;
        meterTick?: MeterTick;
        model: string;
        role: AdapterRole;
        assignDca?(
            dca: ChannelId,
            member: ChannelId,
            assigned: boolean,
        ): Promise<void>;
        assignMuteGroup?(
            group: ChannelId,
            member: ChannelId,
            assigned: boolean,
        ): Promise<void>;
        checkConnection(signal: AbortSignal): Promise<boolean>;
        connect(signal: AbortSignal): Promise<void>;
        detectTopology(signal: AbortSignal): Promise<MixerTopology>;
        dispose(): Promise<void>;
        faderScale(channel: ChannelId): FaderScale;
        hotUnpatchedInputs?(): readonly string[];
        monitorTakeoverAvailable?(
            output: ChannelId | undefined,
        ): boolean | undefined;
        refreshSourceCapsSignature?(): Promise<string | undefined>;
        registerReceiver(receiver: MixerReceiver): void;
        requestAllData(channels: readonly ChannelId[]): Promise<void>;
        sendKeepAlive(): Promise<void>;
        setAlign?(channel: ChannelId, delayMs: number): Promise<void>;
        setComp?(channel: ChannelId, comp: CompState): Promise<void>;
        setCueMode?(mode: "pfl" | "afl" | "sip"): Promise<void>;
        setDelay?(channel: ChannelId, ms: number): Promise<void>;
        setEq?(channel: ChannelId, eq: EqState): Promise<void>;
        setFader(channel: ChannelId, level: FaderLevel): Promise<void>;
        setGain(channel: ChannelId, gain: GainLevel): Promise<void>;
        setGate?(channel: ChannelId, gate: GateState): Promise<void>;
        setHeadAmpGain?(channel: ChannelId, gainDb: number): Promise<void>;
        setMatrix?(
            source: ChannelId,
            output: ChannelId,
            level: FaderLevel,
        ): Promise<void>;
        setMonitorDim?(dim: boolean): Promise<void>;
        setMonitorLevel?(level: number): Promise<void>;
        setMonitorOutput?(
            output: ChannelId | undefined,
            takeover?: boolean,
        ): Promise<void>;
        setMute(channel: ChannelId, muted: boolean): Promise<void>;
        setName(channel: ChannelId, name: string): Promise<void>;
        setPad?(channel: ChannelId, on: boolean): Promise<void>;
        setPan(channel: ChannelId, pan: number): Promise<void>;
        setPhantom?(channel: ChannelId, on: boolean): Promise<void>;
        setPolarity?(channel: ChannelId, inverted: boolean): Promise<void>;
        setSend(
            input: ChannelId,
            output: ChannelId,
            level: FaderLevel,
        ): Promise<void>;
        setSendEnable?(
            input: ChannelId,
            output: ChannelId,
            enabled: boolean,
        ): Promise<void>;
        setSendTap?(
            input: ChannelId,
            output: ChannelId,
            tap: SendTap,
        ): Promise<void>;
        setSolo(channel: ChannelId, soloed: boolean): Promise<void>;
        setSoloSafe?(channel: ChannelId, safe: boolean): Promise<void>;
        setStereoLink?(channel: ChannelId, linked: boolean): Promise<void>;
        soloClear?(): Promise<void>;
    }
    Index
    clipCapture?: ClipCapture

    The adapter's clip CAPTURE — the read-and-clear door onto the native RT thread's sticky over flags, offered where the engine measures one (2026-08-29-clip-latch.md §3). The console drives it on its own always-on observation cadence, independent of the meter tick: a latch exists to catch an over nobody is metering. A remote desk latches nothing here.

    keepAliveInterval: number
    meterTick?: MeterTick

    The adapter's meter read as a tick the console drives on demand — see MeterTick. Optional BECAUSE it is a capability: the software adapter reads a meter source and offers the read; a remote desk pushes its own meters over its transport and has nothing here.

    model: string

    Who owns the DSP behind this adapter — see AdapterRole. Declared statically per adapter family (software/mock → 'server'; midas/x32/roland → 'client'), never inferred from model/type string matching.

    • Assign / unassign a channel to a DCA/VCA group.

      Parameters

      Returns Promise<void>

    • Assign / unassign a channel to a mute group.

      Parameters

      Returns Promise<void>

    • surfaces device readiness, e.g. Midas "no show loaded" -> false.

      Parameters

      • signal: AbortSignal

      Returns Promise<boolean>

    • Parameters

      • signal: AbortSignal

      Returns Promise<void>

    • Returns Promise<void>

    • The physical inputs this adapter last asserted +48 V on that NO channel sources any more — a socket left hot by a re-patch (#384). Optional, like the head-amp verbs: an adapter with no phantom to switch omits it and the server reports nothing.

      Head-amp belongs to the physical input, not the channel, so re-patching a channel away legitimately leaves the vacated preamp holding its own state — a desk does not drop phantom because you moved a patch. What is NOT legitimate is that the state becomes unreachable: the strip that showed it now reads its new input, and nothing else says the voltage is there, which is how a ribbon mic meets 48 V. This is the read that makes it reachable.

      Reporting only — never a release. Dropping phantom as a side effect of a patch edit is a physical act on live hardware, and silently unpowering a condenser someone is still using is a worse failure than the one it would fix. Release stays an explicit operator action on the input itself. A SPLIT is orphaned only by ALL its channels (see orphanedHotInputs).

      Returns readonly string[]

    • Whether mode B could actually be ESTABLISHED for this monitor destination — the query half of setMonitorOutput's takeover (southbound contract §6c: ask, never assume).

      Mode B is not a flag the console owns; it is a flag on an OUTPUT ROUTE. The crossfade lives on a MAIN out_route, so it exists only when MAIN is ALSO fanned out to the sink the monitor destination lands on — and never on MAIN's PRIMARY, which is the house. Where that route is absent the designation reaches nothing at all, which is why this is asked before the flag is recorded instead of being discovered later as silence.

      Absent, or undefined, means this desk cannot say: never a licence to report either answer, and never grounds to refuse (the discipline's "unknown never blocks").

      Parameters

      Returns boolean | undefined

    • Refresh the adapter's view of its remote head-amp device(s) and return a stable fingerprint of what is out there (device identity + declared width + capability set), or undefined when this adapter has no remote head-amp fabric at all. Optional, like the head-amp verbs themselves. The server polls this to notice a device RECREATION (a reac-pw restart, a stagebox swap): the remote's head-amp state resets with it, so a fingerprint change is the signal to re-advertise capabilities to open surfaces and re-apply the recorded scene (phantom/pad/SENS) — the UI must never show a phantom the box is not actually providing.

      Returns Promise<string | undefined>

    • request a (re)send of full state for these channels; results arrive via the receiver.

      Parameters

      Returns Promise<void>

    • Returns Promise<void>

    • Set this channel's INPUT ALIGNMENT delay (ms) — the input-stage latency that pushes one microphone back to meet another on the same source.

      Parameters

      Returns Promise<void>

    • Set the console-wide cue mode: PFL (default) / AFL / SIP.

      Parameters

      • mode: "pfl" | "afl" | "sip"

      Returns Promise<void>

    • Set the channel's signal delay, in milliseconds.

      Parameters

      Returns Promise<void>

    • Set the whole channel EQ (bands + pass filters).

      Parameters

      Returns Promise<void>

    • Set the HEAD-AMP GAIN in dB on a channel — the box's analog gain ahead of the A/D, not the console's own digital stage. Optional: only an adapter with a real preamp behind it carries one.

      This is the seam the unit conversion lives at, and the only one (operator ruling, 2026-08-12). Everything north of here — the row, the session, OPTIONS, every client — is in dB of gain; an adapter is free to keep its fabric's own encoding internally and converts here. A REAC-backed adapter writes the box's SENS VALUE byte over PipeWire Props (the #147 pattern, never a subprocess); an RME's Mic-AN<n> Gain is already dB and passes straight through.

      Parameters

      Returns Promise<void>

    • Engage / release the monitor DIM — an extra attenuation on the routed monitor output (#191).

      Parameters

      • dim: boolean

      Returns Promise<void>

    • Set the monitor LEVEL (0..1) — the cue-bus master fader (#191).

      Parameters

      • level: number

      Returns Promise<void>

    • Designate the monitor destination, or clear it with undefined. takeover selects mode B (the sink carries MAIN and switches to cue on solo) vs mode A (pure cue), #191.

      Parameters

      • output: ChannelId | undefined
      • Optionaltakeover: boolean

      Returns Promise<void>

    • Parameters

      Returns Promise<void>

    • Parameters

      Returns Promise<void>

    • Engage / release the −20 dB analog PAD on a channel's head-amp (a REAC box control). Optional for the same reason as setPhantom: only a REAC-backed adapter carries an analog pad. Engaging it shifts what the SENS byte means by 20 dB (the BOX applies the offset — see @freemixer/core's head-amp.ts), so a surface pairs pad with sens.

      Parameters

      Returns Promise<void>

    • Parameters

      Returns Promise<void>

    • Set 48 V phantom power on a channel's head-amp. Optional BECAUSE it is a capability, not a universal control: a REAC-backed adapter drives the box's +48 V; a PipeWire / software adapter has no pin to power and omits this method entirely (its absence — not a silently-ignored call — is the honest "no phantom here"). See AdapterInput's phantomCapable/padCapable/sensCapable for the per-input source-layer view.

      Parameters

      Returns Promise<void>

    • Set input polarity / phase invert.

      Parameters

      Returns Promise<void>

    • Turn a send cross-point on/off (independent of its level).

      Parameters

      Returns Promise<void>

    • Parameters

      Returns Promise<void>

    • Per-channel solo-safe (SIP-mute exemption only — cue/solo-to-monitor spec, resolved Open Question #2). Absent on desks with no cue/SIP concept.

      Parameters

      Returns Promise<void>

    • Link / unlink a channel as a stereo strip.

      Parameters

      Returns Promise<void>

    • Clear every soloed channel in one shot (the console-wide solo-clear).

      Returns Promise<void>