Changelog
v0.4.0-pre
Full DSP chain implementation, pre-hardware milestone.
Added
- RDS encoder rewrite: standards-grade group framing (0A for PS, 2A for RadioText), CRC-10 per IEC 62106 with offset words, differential encoding, group scheduler with PS/RT cycling and A/B flag toggle
- Stereo encoder: stateful 38 kHz DSB-SC subcarrier oscillator (phase-coherent across block boundaries), replaces fragile sample-indexed sin() in generator
- Pre-emphasis filter: first-order IIR high-shelf, configurable τ (50 µs EU, 75 µs US, 0=off), with complementary de-emphasis for verification
- FM modulator: composite-to-IQ via phase integration, configurable ±75 kHz deviation, unit-magnitude output guaranteed
- MPX limiter: smooth attack/release peak limiter with hard-clip safety net
- Linear-interpolation audio resampler (replaces nearest-neighbor)
- Robust WAV loader with RIFF chunk scanning (handles LIST, INFO, bext, etc.)
- New config fields: preEmphasisUS, maxDeviationHz, limiterEnabled, limiterCeiling, fmModulationEnabled
- New patchable runtime fields via HTTP: preEmphasisUS, limiterEnabled, limiterCeiling
- Comprehensive tests for all new DSP blocks
Changed
- Config defaults: pre-emphasis 50µs, limiter on, FM modulation on, deviation ±75kHz, RDS injection 0.05
- Offline generator wires full DSP chain: pre-emphasis → stereo encode → RDS → MPX combine → limiter → FM modulate
- Dry-run output includes all new config fields
- Status endpoint reports pre-emphasis, limiter, and FM modulation state
Fixed
- Stereo subcarrier phase discontinuity at block boundaries
- WAV loader breaking on files with extra metadata chunks before data
- Resampler aliasing artifacts from zero-order hold
v0.3.0-pre
Initial pre-v1 milestone for the licensed short-term FM/RDS transmitter project.
Included
- Windows-first Go project scaffold
- validated JSON config schema
- HTTP status/control surface with dry-run endpoint
- deterministic dry-run output
- offline composite/IQ-style file generation
- simulated transmit path in main CLI via Soapy-oriented backend abstraction
- automated no-hardware tests and smoke scripts
Not yet included
- real SoapySDR hardware driver integration
- full RDS group framing/CRC/timing correctness
- real audio ingestion pipeline
- release CI / packaged distribution