ba2fbed7c3
Tech 1: replace one-pole baseband LPF with FIR RRC matched filter (alpha=0.75, 4-chip span) — largest single measured improvement per empirical comparison (gr-rds RRC vs plain FIR: 32/38 vs 18/38 stations). Tech 2: 19 kHz pilot x3 -> 57 kHz coherent carrier reference via the triple-angle formula; fed from the WFM pilot Costas PLL when pilot_lock_level > 0.5, clearing to NCO fallback otherwise. Tech 3/7/8: OSD(2) soft-decision block decoder replaces hard CRC check. Per-bit soft magnitudes accumulated in Candidate::block_soft[26]. decode_block_soft() searches Hamming distance 0/1/2 (352 trials total) and returns the minimum Euclidean-cost valid codeword; ~2-3 dB gain. Tech 4: 8th-order 57 kHz BPF (4 cascaded biquads at Q=5) in wfm.rs replaces the previous single Q=10 biquad; ~6x steeper ACI stopband. Tech 5: Costas loop with tanh soft phase detector drives the RDS carrier NCO when no pilot reference is available (P+I, B_L ~20 Hz). Tech 6: Block A PI field LLR accumulation — signed per-bit LLR summed over 3 independent Block A observations before committing the PI value, correcting weak-signal false locks without delaying strong-signal lock. Tech 9: 8-tap complex CMA blind equalizer applied to IQ samples before FM discrimination; constant-modulus error (|y|^2 - R^2) drives tap adaptation without a training sequence, suppressing adjacent-channel interference at the source. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Stan Grams <sjg@haxx.space>