⚠️ EXPERIMENTAL. Supersedes exp-2bc23c8. Adds the bandwidth-slider fill fix.
New in this build
- The low bandwidth slider filled the wrong way round. A native range input always fills from its minimum to the thumb — so the low slider (−5900…0) drew the bandwidth you were not using, while the high slider (0…+5900) drew the one you were. Both now fill outward from the carrier, so the orange means "this much bandwidth" on both sides.
Field-validated in this build (thanks to Stuart's testing)
- SSB voice restored. The channel filter was cutting at half the stated bandwidth (
chHalf = bw/2— right for AM/FM, wrong for Weaver SSB, where the sideband spans 0..bw). Set 2.7 kHz, got 1.4 kHz of audio. Measured against an UberSDR recording of the same signal we were 37 dB down across 2.0–2.7 kHz — the intelligibility band. Now +2.5 dB ahead of UberSDR there, and with a cleaner skirt above 2.7 kHz than they have. Put your bandwidth back to 2.7 kHz — the 4 kHz fudge is no longer needed. - Adjacent-channel rejection verified on air. A strong signal ~10 kHz away (the alias-fold frequency for a 12 kHz channel) is inaudible — even in the gaps when the wanted station stops speaking and the AGC winds the gain wide open. Nothing at 3 kHz either.
- WFM stereo works on a Moto G35 with the screen off — the harshest case, since the CPU clocks down.
- AM (648 kHz, Radio Caroline) confirmed working.
DSP is 2–8× cheaper (Pi 3, scalar, one user @ 2.4 MSPS)
| mode | before | after |
|---|---|---|
| WFM (stereo+RDS) | 286% of a core | 108% |
| SSB | 117% | 30% |
| AM | 53% | 28% |
| NFM | 61% | 27% |
Causes: WFM decimated to 3× its bandwidth (and at 1.024 MSPS, not at all — which is why lowering the sample rate made it more expensive); the channel filter decimated 50:1 in one step (~750 taps at 2.4 MSPS); and the channel rate was needlessly floored at the 48 kHz audio rate.
VibeServer fixes
- Learned RDS bookmarks were never saved (
bmLearnwas the one mutator that never persisted) — and the web client only fetched/bookmarksonce at page load, so a station learned 20s later could never appear. Both fixed. - Squelch no longer reports itself as a fault (was a pulsing red "IS THE TAB MUTED?" that hid the S-meter).