The LCR pan law (archive §3.1, carried verbatim by 2026-09-08-lcr-mains.md): a mono source
panned across an LCR bus splits between the discrete C speaker and a phantom L/R pair by
divergence, constant-power at every position.
phantomScale = sqrt(1 − cW²) is the renormalisation the archive's comment names: the
phantom pair carries whatever power C did not take, and panGains's own invariant
(l0² + r0² = 1) makes the total exactly phantomScale² · 1 + cW² = (1 − cW²) + cW² = 1.
At divergence = 1, cW = 0 and this returns EXACTLY panGains(pan) — phantomScale = 1,
C = 0. At divergence = 0 and pan = 0 (dead centre), cW = 1 and this returns
{ l: 0, r: 0, c: 1 } — the centre image is entirely discrete.
pan and divergence are both clamped to their ranges (divergence to [0, 1]; panGains
clamps pan itself). Pure.
The LCR pan law (archive §3.1, carried verbatim by
2026-09-08-lcr-mains.md): a mono source panned across an LCR bus splits between the discreteCspeaker and a phantom L/R pair bydivergence, constant-power at every position.phantomScale = sqrt(1 − cW²)is the renormalisation the archive's comment names: the phantom pair carries whatever powerCdid not take, andpanGains's own invariant (l0² + r0² = 1) makes the total exactlyphantomScale² · 1 + cW² = (1 − cW²) + cW² = 1.At
divergence = 1,cW = 0and this returns EXACTLYpanGains(pan)—phantomScale = 1,C = 0. Atdivergence = 0andpan = 0(dead centre),cW = 1and this returns{ l: 0, r: 0, c: 1 }— the centre image is entirely discrete.pananddivergenceare both clamped to their ranges (divergence to[0, 1];panGainsclampspanitself). Pure.