fix(web): keep the Rockbox DSP/EQ in the signal path + match CLI compressor
The EQ/DSP had no audible effect on most stations. Cross-origin radio hosts
rarely send CORS headers, so the decoder worker's direct fetch was blocked, the
engine errored, and playback silently fell back to a bare <audio> element that
is not in the Rockbox DSP graph — bypassing EQ, bass, crossfeed, everything.
The CLI decodes natively (no CORS), so it always applied the full chain.
- proxiedStreamUrl now routes every absolute http(s) stream through the
CORS-enabled /api/stream proxy (except HLS and relative/same-origin URLs), so
the worker can always fetch it and the DSP stays in the path.
- Fix the compressor params to match the CLI: makeup=1, ratio as the 0–3 index
(compRatioIndex), knee=2, release=200ms, attack=5ms — was makeup=0, raw ratio,
and zeroed knee/attack/release. Shared via applyCompressor().
The EQ gain math itself was already correct/identical to the CLI (both
rockbox-dsp versions apply the ×10 fixed-point convention internally).