Pan/EQ: add a per-peer volume slider (before pan)

Ed's request — an individual level fader per peer, sitting just before the pan control on the
Pan and EQ tab. New PeerShaping.Volume (0..1, default 1.0 = 100% = transparent), always applied
(no master switch — unity does nothing). It folds into PeerDspChain's L/R gain alongside pan
(gainL = panL*vol, gainR = panR*vol), so it's another per-sample multiply, zero added latency,
and multiplies with the global volume (per-peer fader -> mix -> master). Slider is 0-100%,
saved per profile, announces "Volume: N percent". Shaped recording captures it; raw (bypass)
recording doesn't. Held for next release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Ednunp
2026-07-06 10:45:52 +01:00
co-authored by Claude Opus 4.8
parent efa9435da7
commit 6b1e65f418
3 changed files with 54 additions and 22 deletions
+4
View File
@@ -16,6 +16,10 @@ public sealed class PeerShaping
/// <summary>-1 (full left) .. 0 (centre) .. +1 (full right).</summary>
public float Pan { get; set; }
/// <summary>Per-peer playback level, 0..1 (1 = 100%, unity). An individual fader for this peer,
/// on top of the global volume. Always applied (no master switch); 100% is transparent.</summary>
public float Volume { get; set; } = 1f;
/// <summary>Which EQ mode is currently active for this peer.</summary>
public PeerEqMode EqMode { get; set; } = PeerEqMode.Simple3Band;