mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-10 15:11:58 +01:00
Review follow-ups for the apply slice. The parse guard in the base branch keeps non-finite gains and peaks out of the library, but nothing here should depend on that: a value already stored, or written by a future caller, must not be able to silence a track or blast it at full scale. - the gain maths ignores a non-finite peak and falls back to unity when the result is not finite. - the processor falls back to unity for a non-finite gain, so `roundToInt` can never be handed a NaN. - the preamp is sanitised on both read and write, since `coerceIn` passes NaN straight through. - the renderers factory is pulled out of `PlaybackService` into `ReplayGainRenderersFactory` so a test can assert the sink really is built with the processor in its chain; the wiring was otherwise untested. - a null active source clears the gain rather than leaving the previous track's applied.