ReadonlyaudibleThe 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.
ReadonlybyHeld by at least one ACTIVE mute group. Owned by the mute-group entity; read-only here.
ReadonlybyHeld by the engaged panic latch. Owned by the safety/panic entity; read-only here.
ReadonlybyHeld 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.
ReadonlyindividualTHE state: the channel's own mute latch — ChannelStrip.mute. true = muted by hand.
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
truemeans 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 calledaudiblethat istruewhen 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.