Open-source project
lucianodato/noise-repellent avatar
lucianodato/noise-repellent

Noise Repellent: a JUCE broadband noise reducer with a choice of denoisers

A JUCE plugin for broadband noise reduction

566 stars42 forksC++NOASSERTION

At a glance

What is it?
Noise Repellent is a VST3, AU and LV2 plugin for real-time spectral noise reduction, built on JUCE and a separate libspecbleach DSP engine, and it offers four different denoising approaches rather than one algorithm with a strength knob. The author is explicit that none of them outranks the others.
Who is it for?
Adopt Noise Repellent if you record noisy source material, vocals or field recordings, and want to choose a denoising approach per material instead of tuning one algorithm. Do not adopt it if you need a dynamic noise gate or a compressor, because it is a spectral reducer and nothing else.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A plugin that offers four denoisers rather than one

Noise Repellent is a multi-format audio plugin for real-time spectral noise reduction, built with JUCE and powered by the libspecbleach DSP engine, which is a separate project by the same author.

The design decision that defines the plugin is stated plainly in the feature list: collaborative BM3D is block-matching collaborative smoothing suited to steady noise, 2D Non-Local Means uses spectral-temporal pattern matching to suppress musical noise while preserving high-frequency detail and textures, and each smoothing method has its own character, with none outranks the others, so you pick per material.

That is a genuinely unusual position for a plugin of this kind. Most noise reducers ship one algorithm with a strength control, and the vendor decides what the trade-off between artefact and residual noise looks like. This one ships the choices and puts the judgement on the user, and the three smoothing modes in the workflow section are named after the algorithm families rather than after a quality level: Standard Denoising using temporal smoothing for stable noise reduction, Patch-Based Denoising using NLM smoothing for pattern-based artefact removal, and Patch-Based plus Refinement adding the post-NLM DFTT refinement stage.

The DFTT refinement path is described as a post-NLM stage on top of 2D NLM, suited to tonal and difficult material. The documentation also notes that mode switches within the NLM family are instant, sharing history and latency, and that the engine crossfades gaplessly with no allocations.

The primary language is C++, the default branch is master, and the recent releases are v0.4.1 on 2026-09-15, v0.4.0 on 2026-09-07 and v0.3.2 on 2026-08-14.

Transient protection and tonal separation, the parts that decide quality

Two features separate this from a generic spectral gate, and both exist to solve the failure that makes noise reduction unusable in practice.

The first is transient protection. It is an onset-based transient veto that freezes gain updates on transient bins, backed by masking veto and per-bin adaptive smoothing, and you toggle it from the visualizer LED. The logic is straightforward once you see it: a drum hit or a consonant is a brief event, and applying a steady noise-floor estimate to it produces the pumping and crackle that gives noise reduction a bad reputation. Freezing the gain on those bins keeps the transient intact and reduces the steady part around it.

The second is tonal separation, which is independent reduction of harmonic content and tonal noise such as hum and resonance, with an unlinkable tonal threshold offset and engine-detected peak markers. Mains hum sits in a narrow frequency region and is not broadband, so a broadband threshold treats it as if it were signal. Separating the tonal estimate from the broadband one lets the plugin take more aggressive action on hum without the aggressive action touching the broadband floor.

Around those sit the precision controls. There are broadband and tonal threshold offsets plus a custom per-bin reduction bias curve, an adaptive Wiener knee and release shaper that uses per-bin decay evidence with shaped release tails to avoid pumping, an intelligent steering control that balances aggressiveness across noise profile statistics of Mean, Median and Max, and adaptive whitening that reshapes the residual noise floor to prevent colouring and artefacts.

For estimation there are two families. Manual profiling is the classic approach, using a user-captured noise profile from a silent section. Adaptive estimation does real-time noise floor tracking with several algorithms: SPP-MMSE for robust unbiased estimation in complex noise environments and described as best for voice, Brandt trimmed mean for steady-state broadband noise, and Martin minimum statistics for reliably tracking slowly varying noise. Hybrid operation works on top of manual profiles to refine captured snapshots in real time.

Frame size is the latency decision, and it is a real trade

The stepped STFT frame sizes are the setting that most directly determines what you can use the plugin for.

The Options menu offers 23, 32, 46, 64 and 93 ms frame sizes, described as short frames for transient material and long frames for frequency resolution. Switching rebuilds from a clean slate and re-reports latency, roughly double the frame, and latency stays constant across smoothing modes for a given frame size.

That is the correct trade-off made explicit. A short frame reacts quickly and preserves transients but resolves frequencies poorly, so it cannot separate a narrow hum from a nearby signal. A long frame does the opposite. Any claim that one setting is best is wrong, and the documentation does not make it.

The Low-Latency Mode is the extreme of that axis and it is worth reading carefully, because it shows what the plugin gives up. It is a causal 1D-only path with a fixed 512-sample frame for live scenarios, about 10.7 ms at 48 kHz and about 11.6 ms at 44.1 kHz. Enabling it from the Options menu locks the smoothing selector to Standard, disables the frame-size menu, and forces the reduction and threshold links on, because the short frame is too coarse for independent tonal and broadband control. It installs control defaults, a smoothing floor of 30 and full aggressiveness, and leaves masking and reduction blend untouched. The advanced panel swaps the Masking slider for Reduction Blend. The smoothing slider's top half maps to about 130 ms maximum release instead of 500 ms, because long releases smear coarse low-frequency bins into pad artefacts.

Toggling the mode rebuilds the engine from a clean slate, dropping the profile and stopping Learn, and re-reports host delay compensation. That last detail is what a plugin should do, and it is also a reminder that the mode is not a runtime toggle you can flip mid-take without losing the learned profile.

The workflow features: visualizer, residual listening, soft bypass

Three workflow features do more for usability than another algorithm would.

The interactive spectral visualizer shows a real-time FFT of the input, the noise floor profile and the processed output spectrums, with detected tonal peak markers. The noise profile renders live while learning, and the aggressiveness and threshold adjustments stay responsive while silent or stopped, which matters because a noise floor is by definition learned during silence.

Residual listening lets you hear exactly what is being filtered out, so you can fine-tune against the artefact rather than against a guess about it.

Soft bypass is a seamless, click-free A/B test with cross-faded bypass and latency compensation, and the important detail is that the engine keeps running while bypassed so the toggles never time-travel. In practice that means switching between dry and processed is a fair comparison rather than a comparison against a differently configured engine.

Two smaller items are worth noting. The offline-render overlay indicates when the host is rendering offline, so you know why the visualizer is not moving. And full state saving means noise profiles and all APVTS parameters are saved with the host session, so a profile learned once survives a restart.

There is also a visualizer LED used to toggle transient protection, which is a small example of the plugin putting a decision that needs to be made during monitoring onto a control that is always visible.

Installing on three platforms, with a Gatekeeper caveat on macOS

Pre-built installers and packages for Linux, macOS and Windows are available on the GitHub Releases page, and the per-platform steps differ more than the plugin format list suggests.

On Windows you download NoiseRepellent-Win64-Installer.exe from the latest release and run the installer, which automatically places the VST3 and LV2 formats into your standard System plugin directories under C:\Program Files\Common Files\.

On macOS, which is a universal build for Apple Silicon and Intel, you download NoiseRepellent-macOS-Universal.pkg, then right-click or Ctrl+Click the file and choose Open from the menu to bypass the initial Gatekeeper prompt, and follow the installation wizard. The note explains why that step exists: the macOS installer automatically strips Gatekeeper quarantine flags during installation, so the installed VST3, AU and LV2 formats load immediately inside your DAW without requiring any Terminal commands.

On Linux x86_64, the Debian, Ubuntu, Linux Mint and Pop!_OS route is the .deb package, installed through the software center or from a terminal.

bash
   sudo apt install ./noise-repellent_0.4.1_amd64.deb

For other Linux distributions there is a tarball, noise-repellent-linux-x86_64.tar.gz, which you extract with tar -xvf.

Two constraints fall out of this. The macOS route needs a user to approve the package by hand the first time, and the Linux packages are x86_64, so an ARM Linux machine is not covered by the listed artifacts. The plugin formats are VST3, AU and LV2, the platforms are Linux, macOS and Windows, and the processing is full multi-channel, ready for modern stereo production workflows.

Where this plugin is the wrong tool

There are three limits, and the first one is about what broadband reduction can physically do.

The first is that a broadband spectral reducer reduces the noise floor, not a specific sound. If the noise is tonal, hum from a power supply or a mechanical resonance, the tonal separation controls help, and the tonal peak markers exist to find those frequencies, but the underlying approach is still subtracting an estimated floor. Material where the noise and the signal occupy the same frequency region is where this family of plugins reaches its limit, and the documentation is candid that you pick the method per material rather than expecting one to win.

The second is the latency cost of the quality settings. A 93 ms frame is a large latency for a tracking situation, and the Low-Latency Mode exists precisely because that trade cannot be avoided at the high end. The mode then locks the smoothing selector to Standard and disables the frame-size menu, so on a live monitoring path you are not running the same algorithm you are running when tracking, and switching between the two rebuilds the engine and drops the learned profile. For a plugin used on a mix bus, that is irrelevant. For one used while tracking, it is the central constraint.

The third is the plugin's scope. It is a noise reducer and nothing else. There is no gate, no compressor, no EQ and no expander in the parameter list. If what you need is a dynamics processor, this is the wrong tool, and a gate is a very different behaviour from a spectral floor reduction for the same noise.

On alternatives, the honest comparison is with the dedicated noise reduction suites that ship with a DAW, and with a modern spectral repair tool that works on the recorded file rather than in real time. The DAW's own reducer is usually a click away, though its algorithm choices are fixed. A file-based spectral repair tool can remove noise that a real-time reducer cannot, because it can look at the whole recording, but it is an offline edit rather than a plugin you can put on a bus. What this plugin offers over both is the choice of estimation method and the transient and tonal handling, which is why it is worth the manual work of picking per material.

Editorial conclusion

Adopt Noise Repellent if you record noisy source material, vocals or field recordings, and want to choose a denoising approach per material instead of tuning one algorithm. Do not adopt it if you need a dynamic noise gate or a compressor, because it is a spectral reducer and nothing else. Before you install, check which platform package you need, since the macOS package requires bypassing Gatekeeper and the Linux build is x86_64 only, and note the last push was on 2026-10-17 with release v0.4.1 on 2026-09-15.

Frequently asked questions

What is Noise Repellent and which plugin formats does it provide?

It is a JUCE-based plugin for real-time spectral broadband noise reduction, powered by the libspecbleach DSP engine. It ships as VST3, AU and LV2, optimized for Linux, macOS and Windows, with full multi-channel processing.

Which denoising algorithms does Noise Repellent offer?

2D Non-Local Means for spectral-temporal pattern matching, a post-NLM DFTT refinement stage for tonal and difficult material, and collaborative BM3D for steady noise. The documentation states that none outranks the others and that you should pick per material.

What does the Low-Latency Mode in Noise Repellent change?

It switches to a causal 1D-only path with a fixed 512-sample frame, about 10.7 ms at 48 kHz. It locks the smoothing selector to Standard, disables the frame-size menu, forces the reduction and threshold links on, and rebuilding drops the learned profile and stops Learn.

How do I install Noise Repellent on macOS?

Download the universal .pkg, then right-click or Ctrl+Click it and choose Open to bypass the initial Gatekeeper prompt, and follow the wizard. The installer strips the Gatekeeper quarantine flags during installation, so the VST3, AU and LV2 formats load without any Terminal commands.

How does Noise Repellent estimate the noise floor?

Two families. Manual profiling uses a user-captured profile from a silent section, and adaptive estimation tracks the floor in real time with SPP-MMSE, Brandt trimmed mean, and Martin minimum statistics. Hybrid operation layers the adaptive estimate on top of a manual profile to refine it in real time.

Official sources

  1. Issues
  2. lucianodato/noise-repellent on GitHub
  3. README
  4. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/lucianodato-noise-repellent.svg)](https://hysenlabs.com/projects/lucianodato-noise-repellent)

Was this useful?