Skip to content

Add spectral noise reduction (NR2) with FFTW3 integration#79

Merged
ten9876 merged 1 commit into
aethersdr:mainfrom
EI6JGB:main
Mar 18, 2026
Merged

Add spectral noise reduction (NR2) with FFTW3 integration#79
ten9876 merged 1 commit into
aethersdr:mainfrom
EI6JGB:main

Conversation

@EI6JGB

@EI6JGB EI6JGB commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Implement Ephraim-Malah MMSE-LSA spectral noise reduction with OSMS floor tracking
  • Add FFTW3 support for optimized FFTs with a built-in radix-2 fallback
  • Add background FFTW wisdom generation with modal UI progress dialog
  • Add setup-fftw.ps1 script to automate Windows x64 dependency setup
  • Add NR2 toggle to VFO DSP panel and handle mono processing in AudioEngine

Files changed

Area Files
Core NR engine src/core/SpectralNR.cpp, src/core/SpectralNR.h
Audio integration src/core/AudioEngine.cpp, src/core/AudioEngine.h
GUI src/gui/MainWindow.cpp, src/gui/VfoWidget.cpp, src/gui/VfoWidget.h
Build CMakeLists.txt, setup-fftw.ps1
FFTW3 deps (Windows) third_party/fftw3/ (headers, lib, DLL)

Test plan

  • Build on Linux with system FFTW3 installed — verify CMake finds it
  • Build on Linux without FFTW3 — verify radix-2 fallback compiles and runs
  • Build on Windows with bundled third_party/fftw3 — verify DLL is copied to build dir
  • Connect to radio, enable NR2 toggle — verify noise floor drops on a quiet band
  • Disable NR2 — verify audio returns to unprocessed state
  • FFTW wisdom dialog appears on first run and completes without hang

🤖 Generated with Claude Code

- Implement Ephraim-Malah MMSE-LSA noise reduction with OSMS floor tracking
- Add FFTW3 support for optimized FFTs with a built-in radix-2 fallback
- Add background FFTW wisdom generation with modal UI progress dialog
- Add setup-fftw.ps1 script to automate Windows x64 dependency setup
- Add NR2 toggle to VFO DSP panel and handle mono processing in AudioEngine
@ten9876 ten9876 merged commit f3ab794 into aethersdr:main Mar 18, 2026
3 checks passed
@ten9876

ten9876 commented Mar 18, 2026

Copy link
Copy Markdown
Collaborator

Merged — excellent work @EI6JGB! The Ephraim-Malah implementation is clean and well-engineered. The FFTW3/radix-2 fallback architecture is exactly right.

See Discussion #77 for community input on optimizing the wisdom generation (background thread + lazy planning). Looking forward to hearing how NR2 performs on weak signals.

73 de KK7GWY

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants