The render loop now tracks each bus's post-fader/post-FX peak per block and folds it into a decaying meter value (instant attack, ~300 ms release) plus a clip latch (~0.8 s when the bus crosses 0 dBFS). Exposed via channelMeter / channelClipped and surfaced on the ViewModel. Each mixer fader paints, in one drawBehind, a VU meter inside its volume fill: rising from the bottom, coloured green -> amber by absolute level with a red tip, and solid red while the bus clips. A per-frame ticker writes into stable state objects read only in the fader's draw phase, so meter movement repaints just the four faders (no recomposition); an unchanged write is a no-op, so a silent mixer costs nothing but the frame tick. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.1 KiB
5.1 KiB