Skip to content

Speaker Range Crop v0.2.0

Choose a tag to compare

@kidoz kidoz released this 11 Jun 19:23
· 10 commits to main since this release

Features

  • Vicanek matched (decramped) filter design replaces RBJ-cookbook biquads - the Linkwitz-Riley 4th-order response now tracks the analog prototype all the way to Nyquist
  • LFE channels keep their low-frequency content - the high-pass side is bypassed on channels foobar2000 marks as LFE
  • Component version is injected from the Meson project version
  • just build-debug, just build-release and just release commands for one-step plugin builds

Sound

  • 20 kHz low-pass stays active and accurate at 44.1 kHz, where the old bilinear design had to disable it above 0.45 x sample rate
  • Exact -6.02 dB Linkwitz-Riley crossover point at the cutoff frequency
  • Minimum-phase IIR processing with zero latency, double-precision state at all sample rates

Fixes

  • Gapless playback no longer glitches at track transitions - filter state is kept across on_endoftrack/on_endofplayback and only reset on seek/stop
  • No allocations or exceptions can cross the foobar2000 SDK audio callback - reconfiguration failures pass audio through and retry
  • Config dialog uses an invariant numeric locale, resyncs edits with sliders on focus loss, and reports preset save errors instead of crashing

Other

  • Unit tests migrated to Catch2 v3 via Meson WrapDB (decramping, LFE bypass, channel isolation, preset table coverage)
  • Meson wrap SDK mode is now the default build flow
  • LF line endings enforced repo-wide; clang-tidy output filtered to project code

Full Changelog: https://github.com/kidoz/foo-dsp-speaker-range/commits/v0.2.0