A multi-format audio plugin (VST3, AU, LV2) for real-time spectral noise reduction, built with JUCE and powered by the libspecbleach DSP engine.
- 2D Non-Local Means (NLM): Uses spectral-temporal pattern matching to suppress musical noise while preserving high-frequency detail and textures.
- Manual Profiling: Classic noise reduction using a user-captured noise profile from a silent section.
- Adaptive Estimation: Real-time noise floor tracking with multiple algorithms.
- Hybrid Operation: Works on top of manual profiles to refine captured snapshots in real-time.
- SPP-MMSE: Robust, unbiased estimation for complex noise environments (best for voice).
- Brandt (Trimmed Mean): Efficient estimation for steady-state broadband noise.
- Martin Minimum Statistics: Reliable tracking for slowly varying noise.
- Tonal separation: Independent reduction of harmonic content and tonal noise (hum, resonance).
- Intelligent Steering: Adjustable aggressiveness to balance between different noise profile statistics (Mean, Median, Max).
- Adaptive Whitening: Reshapes the residual noise floor to prevent coloring and artifacts.
- Masking Transparency (Veto): Protects transients and delicate details by balancing reduction against signal energy.
- Adjustable Smoothing: Fine-tune the balance between artifact suppression and transient clarity.
- Standard Denoising: Uses temporal smoothing for stable noise reduction.
- 2D Denoising: Uses NLM smoothing for pattern-based artifact removal.
- Interactive Spectral Visualizer: Real-time FFT visualization of input, noise floor profile, and processed output spectrums with detected tonal peak markers.
- Residual Listening: Hear exactly what is being filtered out to fine-tune your settings.
- Soft Bypass: Seamless, click-free A/B testing with cross-faded bypass and latency compensation.
- Full State Saving: Noise profiles and all APVTS parameters are saved with the host session.
- Formats: VST3, AU, and LV2.
- Platforms: Optimized for Linux, macOS, and Windows.
- Stereo Support: Full multi-channel processing ready for modern stereo production workflows.
Pre-built installers and packages for Linux, macOS, and Windows are available on the GitHub Releases page.
- Download
NoiseRepellent-Win64-Installer.exefrom the latest release. - Run the installer to automatically place the VST3 and LV2 formats into your standard System plugin directories (
C:\Program Files\Common Files\).
- Download
NoiseRepellent-macOS-Universal.pkg. - Right-Click (or Ctrl + Click) the
.pkgfile and choose Open from the menu to bypass the initial Gatekeeper prompt. - Follow the installation wizard.
Note
The macOS installer automatically strips Gatekeeper quarantine flags during installation, so your installed VST3, AU, and LV2 formats will load immediately inside your DAW without requiring any Terminal commands!
- Download
noise-repellent_0.3.1_amd64.deb. - Install via software center or terminal:
sudo apt install ./noise-repellent_0.3.1_amd64.deb
- Download
noise-repellent-linux-x86_64.tar.gz - tar -xvf noise-repellent-linux-x86_64.tar.gz
- cd noise-repellent-linux-x86_64
- ./install.sh
Requirements:
- CMake >= 3.22
- C11 / C++17 Compiler (GCC 10+, Clang 12+, or MSVC 2019+)
- Ninja or Make
- Linux GUI build dependencies (Linux only):
libasound2-dev,libgl1-mesa-dev,libx11-dev,libxcomposite-dev,libxcursor-dev,libxext-dev,libxinerama-dev,libxrandr-dev,libfontconfig1-dev,libfreetype6-dev
By default, CMake fetches and statically embeds dependencies (FFTW3, FreeType, libspecbleach) to produce standalone, portable release binaries that prevent symbol conflicts across different DAWs and Linux distributions.
# Clone the repository including submodules
git clone --recurse-submodules https://github.com/lucianodato/noise-repellent.git
cd noise-repellent
# Configure build with static bundled dependencies
cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release
# Compile all plugin formats (VST3, AU, LV2)
cmake --build build --config Release --parallel
# Install plugins to standard system plugin locations
sudo cmake --install buildLinux distribution packagers (Arch, Debian, Fedora, etc.) can configure the build to dynamically link against host system libraries (libfftw3f, libfreetype, libspecbleach, JUCE) using CMake build options.
Note: Requires system development packages installed on the host (e.g.,
libfftw3-dev,libfreetype6-dev,libspecbleach-dev,juce).
# Configure build using system-installed shared libraries
cmake -B build -G "Ninja" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DUSE_SYSTEM_FFTW=ON \
-DUSE_SYSTEM_FREETYPE=ON \
-DUSE_SYSTEM_SPECBLEACH=ON \
-DUSE_SYSTEM_JUCE=ON
# Compile all plugin formats
cmake --build build --config Release --parallel
# Install to packaging staging area or system
cmake --install buildThe compiled plugin targets (VST3, AU, LV2) will be generated in build/NoiseRepellent_artefacts/Release/ and installed to system plugin locations (/usr/lib/vst3, /usr/lib/lv2, /Library/Audio/Plug-Ins/, etc.).
You can override the installation destination for specific formats using -Doption=VALUE:
| Option | Default | Description |
|---|---|---|
INSTALL_VST3_DIR |
OS Standard (${CMAKE_INSTALL_LIBDIR}/vst3 on Linux, /Library/Audio/Plug-Ins/VST3 on macOS) |
Destination path for VST3 plugin bundle |
INSTALL_AU_DIR |
OS Standard (/Library/Audio/Plug-Ins/Components on macOS) |
Destination path for AU component bundle |
INSTALL_LV2_DIR |
OS Standard (${CMAKE_INSTALL_LIBDIR}/lv2 on Linux, /Library/Audio/Plug-Ins/LV2 on macOS) |
Destination path for LV2 plugin bundle |
Important
Noise Repellent relies heavily on real-time FFT processing and AVX vectorization routines. Always configure CMake with -DCMAKE_BUILD_TYPE=Release to prevent CPU spikes and audio buffer xruns in your DAW.
Please refer to the Project Wiki for detailed usage instructions.
Contributions are welcome! Please read CONTRIBUTING.md for details on our development workflow and standards.
This project is licensed under the GNU General Public License v3.0 (GPL-3.0-or-later) - see the LICENSE file for details.