openmixer — generated API reference
    Preparing search index...

    Function channelCapabilityOf

    • THE derivation: the contract's kind-level truth intersected with the patched instance's.

      Runs over CHANNEL_FEATURES — the contract's own vocabulary — so a word added to the fact table is carried here with no edit, and a word removed cannot linger. Two narrowings are per-instance, and both follow the PATCH rather than the kind:

      • the head-amp trio, because that is the only capability the measured evidence puts on the BOX (an internal spec: "only phantom / pad / gain are box-owned; EQ, gate, comp, polarity, trim, fader, pan, sends are desk DSP and work with no box attached");
      • WIDTH, because the patched source decides it — a pair of ports is a stereo strip, one port is mono — and the native strip is built with that leg count. It is a READ word: carried wherever the contract declares the fact, KNOWN once something feeds the head, and NEVER writable (operator ruling 2026-08-06, "it is RO never RW"). A surface renders the S/M distinction from it; there is no control to enable.

      GAIN is narrowed through the CONTRACT rather than by a rule of its own: ownerOf('gain', …) answers peer: headAmp exactly when the patched input carries an analog SENS, and the fact then rides the /headAmp row's gainDb field — so its writability, its known-ness and its travel are that field's. When no preamp claims it, gain is the desk's digital stage: always writable, always known, and travelling the desk's own declared span. One expression, both branches; a consumer cannot draw the knob against one owner while the write lands on another.

      Parameters

      • kind:
            | "input"
            | "fxReturn"
            | "aux"
            | "mix"
            | "matrix"
            | "cue"
            | "main"
            | "fxSend"
            | "dca"
            | "muteGroup"
            | "mixMinus"

        the channel's kind — the contract's kinds column is consulted through featureMatrixOf, the ONE place kind appears

      • head: HeadAmpInstance | undefined

        what the patched input declares and can do right now; undefined for a channel with no head stage at all (an unpatched input, a bus, a DCA)

      • Optionalsource: SourceWidthInstance

        what the patch says about this channel's width; undefined on a console with no crosspoint ledger — the word is then carried but never claimed KNOWN, which is the honest answer for a desk that cannot see its own patch

      Returns ChannelCapabilityState

      the live capability state, with writable ⊆ features and known ⊆ features