openmixer — generated API reference
    Preparing search index...

    Interface ChannelMuteState

    A channel's mute, as the console holds it: the one writable latch, the two latches owned by other entities, and the composed value the audio must follow.

    Every field is a boolean where true means SILENCED — including audibleMute, which is named for the audit's phrase "audible truth" (the quantity that decides what is heard), not for "this channel is audible". A boolean called audible that is true when the channel is silent is the inverted-sense trap this layer exists to remove.

    Only individual is state. The other four are derived on every read from the one state plus the mute-group, panic and cue entities' own state, so they cannot go stale and cannot be written back.

    interface ChannelMuteState {
        audibleMute: boolean;
        byGroup: boolean;
        byPanic: boolean;
        bySip: boolean;
        individual: boolean;
    }
    Index
    audibleMute: boolean

    The composed value that decides audibility — individual OR byGroup OR byPanic, computed by effectiveChannelMute. true = SILENCED. This is what reaches the audio, and the only quantity a backend may be given.

    bySip is deliberately outside this OR: a SIP silence is a console-wide condition somebody else's solo imposes, and it clears when that solo clears. A surface reads the two separately because it draws them differently.

    byGroup: boolean

    Held by at least one ACTIVE mute group. Owned by the mute-group entity; read-only here.

    byPanic: boolean

    Held by the engaged panic latch. Owned by the safety/panic entity; read-only here.

    bySip: boolean

    Held out of MAIN by a solo-in-place: the console is in SIP mode, some channel is soloed, and this strip is neither soloed nor solo-safe. Owned by the cue entity (/cue, /channel/{kind}/{index}/solo, /channel/{kind}/{index}/soloSafe); read-only here.

    It is NOT part of audibleMute and never reaches ChannelMuteSink. The RT graph evaluates the same condition every block from its own console-wide any_solo, so a projection carrying the term would be a second writer of one bit — and a re-projection that failed to land would leave a strip muted at the lane after the solo cleared. The C actuates it; this row reports it.

    individual: boolean

    THE state: the channel's own mute latch — ChannelStrip.mute. true = muted by hand.