What the PATCH says about ONE channel's width at this instant — the other per-instance half,
supplied by whoever holds the crosspoint ledger (channelSourceStereo).
Two questions, deliberately distinct, and the same pair the head stage answers:
stereo — is this channel a stereo strip right now? Decided by the source: a pair of
ports makes it so, one port does not, and the native strip is BUILT with that leg count
(SoftwareMixer.stripStereo → applyNativeStripWidth). The value the /width row serves.
patched — is anything feeding this head at all? An unpatched channel has no source to
decide a width, so the desk holds no real answer for it — known, not features, is where
that absence belongs. It reads mono because a strip with nothing on it plays nothing.
There is no writable here on purpose: nothing may write a channel's width (operator ruling
2026-08-06, "it is RO never RW"). The only way it changes is the patch changing.
What the PATCH says about ONE channel's width at this instant — the other per-instance half, supplied by whoever holds the crosspoint ledger (
channelSourceStereo).Two questions, deliberately distinct, and the same pair the head stage answers:
stereo— is this channel a stereo strip right now? Decided by the source: a pair of ports makes it so, one port does not, and the native strip is BUILT with that leg count (SoftwareMixer.stripStereo→applyNativeStripWidth). The value the/widthrow serves.patched— is anything feeding this head at all? An unpatched channel has no source to decide a width, so the desk holds no real answer for it —known, notfeatures, is where that absence belongs. It reads mono because a strip with nothing on it plays nothing.There is no
writablehere on purpose: nothing may write a channel's width (operator ruling 2026-08-06, "it is RO never RW"). The only way it changes is the patch changing.