C++

noise-repellent

A JUCE plugin for broadband noise reduction

L

lucianodato

Dernière activité 27 sept. 2026
lucianodato/noise-repellent

558

étoiles

41

forks

1

issues ouvertes

auaudiobroadband-noise-reductionjucejuce-frameworkjuce-pluginslv2noise-reductionnoise-removalvst3

Ce README est souvent en anglais.

Noise Repellent

CI Build Quality Gate Status CodeRabbit Pull Request Reviews

A multi-format audio plugin (VST3, AU, LV2) for real-time spectral noise reduction, built with JUCE and powered by the libspecbleach DSP engine.

Screenshots

Basic Controls Advanced Controls Reduction Curve

Features

Advanced Denoising Algorithms

  • 2D Non-Local Means (NLM): Uses spectral-temporal pattern matching to suppress musical noise while preserving high-frequency detail and textures.
  • NLM + DFTT Refinement: Post-NLM DFTT refinement stage on top of 2D NLM, suited to tonal and difficult material. Mode switches within the NLM family are instant (shared history and latency); the engine crossfades gaplessly with no allocations.
  • Collaborative BM3D: Block-matching collaborative smoothing, suited to steady noise. Each smoothing method has its own character — none outranks the others, pick per material.
  • Transient Protection: Onset-based transient veto that freezes gain updates on transient bins, backed by masking veto and per-bin adaptive smoothing — toggle it from the visualizer LED.
  • Adaptive Wiener Knee & Release Shaper: Per-bin decay-evidence knee with shaped release tails for smoother suppression without pumping.
  • 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.

Precision Controls

  • Tonal separation: Independent reduction of harmonic content and tonal noise (hum, resonance), with unlinkable tonal threshold offset and engine-detected peak markers.
  • Threshold Offsets & Reduction Curve: Broadband and tonal threshold offsets plus a custom per-bin reduction bias curve for fine-grained control.
  • Stepped STFT Frame Sizes: 23 / 32 / 46 / 64 / 93 ms options from the Options menu (short frames for transient material, long frames for frequency resolution). Switching rebuilds from a clean slate and re-reports latency (~2x frame); latency stays constant across smoothing modes for a given frame size.
  • 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.
    • Patch-Based Denoising: Uses NLM smoothing for pattern-based artifact removal.
    • Patch-Based + Refinement: Adds the post-NLM DFTT refinement stage for maximum quality.

Workflow & Integration

  • Low-Latency Mode: Causal 1D-only path with a fixed 512-sample frame for live scenarios (~10.7 ms at 48 kHz / ~11.6 ms at 44.1 kHz). Enable it from the Options menu: the smoothing selector locks to Standard, the frame-size menu is disabled, and reduction/threshold links are forced on (the short frame is too coarse for independent tonal/broadband control). Entering it installs control defaults (smoothing floor 30, aggressiveness 1, masking 0). The smoothing slider's top half maps to ~130 ms max release instead of 500 ms (long releases smear coarse LF bins into pad artifacts). Toggling rebuilds the engine from a clean slate (profile dropped, Learn auto-stopped) and re-reports host delay compensation.
  • Interactive Spectral Visualizer: Real-time FFT visualization of input, noise floor profile, and processed output spectrums with detected tonal peak markers. The noise profile renders live while learning, and aggressiveness/threshold adjustments stay responsive while silent or stopped.
  • 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 — the engine keeps running while bypassed so toggles never time-travel.
  • Offline-Render Overlay: The UI indicates when the host is rendering offline.
  • Full State Saving: Noise profiles and all APVTS parameters are saved with the host session.

Multi-Format Compatibility

  • Formats: VST3, AU, and LV2.
  • Platforms: Optimized for Linux, macOS, and Windows.
  • Stereo Support: Full multi-channel processing ready for modern stereo production workflows.

Installation

Pre-built installers and packages for Linux, macOS, and Windows are available on the GitHub Releases page.

🪟 Windows

  1. Download NoiseRepellent-Win64-Installer.exe from the latest release.
  2. Run the installer to automatically place the VST3 and LV2 formats into your standard System plugin directories (C:\Program Files\Common Files\).

🍎 macOS (Universal: Apple Silicon & Intel)

  1. Download NoiseRepellent-macOS-Universal.pkg.
  2. Right-Click (or Ctrl + Click) the .pkg file and choose Open from the menu to bypass the initial Gatekeeper prompt.
  3. 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!


🐧 Linux (x86_64)

Debian / Ubuntu / Linux Mint / Pop!_OS

  1. Download noise-repellent_0.4.1_amd64.deb.
  2. Install via software center or terminal:
    sudo apt install ./noise-repellent_0.4.1_amd64.deb
    

Other Linux Distributions

  1. Download noise-repellent-linux-x86_64.tar.gz
  2. tar -xvf noise-repellent-linux-x86_64.tar.gz
  3. cd noise-repellent-linux-x86_64
  4. ./install.sh

From Source

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

1. Standard Portable Build (Self-Contained)

By default, CMake bundles dependencies (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 build

2. Downstream Linux Packaging Build (Shared System Libraries)

Linux distribution packagers (Arch, Debian, Fedora, etc.) can configure the build to dynamically link against host system libraries (libfreetype, libspecbleach, JUCE) using CMake build options.

Note: Requires system development packages installed on the host (e.g., 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_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 build

The 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.).

Custom Installation Paths

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.

Usage

Please refer to the Project Wiki for detailed usage instructions.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on our development workflow and standards.

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0-or-later) - see the LICENSE file for details.

Projets similaires

Noise suppression plugin based on Xiph's RNNoise

C++au-pluginauv3-pluginladspa
Wwerman
6,9 k étoiles302

This is a mutiband distortion plugin.

C++au-plugindistortion-pluginjuce-framework
Jjerryuhoo
638 étoiles27

JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.

C++aaxauaudio
Jjuce-framework
8,9 k étoiles2,2 k