github gbozo/no-sdr v2.6.4
v2.6.4 — RDS PS decode, state sync, audio drift correction

latest releases: v2.10.5, v2.10.4, v2.10.3...
4 months ago

Fixes

RDS Station Name (PS) Now Decodes Correctly

The pilot-locked NCO mixer was using cos(3φ) but the RDS subcarrier is sin(3φ) per IEC 62106. The 90° phase error routed the entire BPSK signal into the discarded Q channel, producing zero PS output on the coherent path. Changed to sin(3φ) — station names now appear reliably.

Server/Client State Synchronization

  • Server-side defaultBandwidthForMode() prevents over-wide IQ filtering on first tune and profile switch
  • handleMode always applies bandwidth (explicit or mode default) — no more silent over-wide filter
  • createClientPipeline uses stored client bandwidth if available
  • SwitchProfile atomically updates ws.Client state, resets tune offset, and updates all pipelines
  • Client resets tune offset on profile change, re-sends NB state on reconnect
  • Reconnect sends mode+bandwidth atomically (eliminates race condition)

Audio Quality — Clock Drift Correction

  • Continuous proportional controller replaces the dead-zone threshold that caused periodic micro-glitches every 10-30 seconds from silent drift accumulation
  • Linear interpolation resampling for rate adjustment (was nearest-neighbor)
  • Transferable ArrayBuffers for zero-copy postMessage to AudioWorklet (reduces GC pauses)
  • 64-sample fade-in ramp on playback resume after underrun (eliminates pop)
  • minBuffer increased to 200ms (3+ Opus frames of jitter tolerance)

Don't miss a new no-sdr release

NewReleases is sending notifications on new releases.