ποΈ Convolution Reverb
Putting Your Noise in a Cathedral It Hasn't Earned
- audio
- reverb_audio
- reverb_report
Harsh noise is dry by default. ConvolutionReverb is the node that changes that - it takes your signal and places it inside a synthetic hall, cathedral, plate, spring, or any of eight simulated spaces. If you've ever wanted your feedback screech to sound like it's happening inside a stone building, this is how.
What it is
It's a convolution reverb, the same technique used in every serious reverb plugin: an impulse response (IR) - the "signature" of a space - is mathematically convolved with your audio, so the sound picks up the space's reflections and decay. The clever part here is that the IRs are synthesized on the fly. You don't need to hunt down and load impulse response files; the node builds the room for you and exposes the room's physics as dials.
reverb_type picks the space: hall, room, cathedral, plate, spring, chamber, ambient, or custom. Each has a different character - plate and spring are classic hardware reverbs, cathedral is the long, dreamy one. Then reverb_time (0.1β10 s) is how long the tail takes to die, pre_delay is the gap before reverb kicks in, and wet_dry_mix sets how much of the room you hear against the dry signal (default 0.3 - a little goes a long way).
How it works
Under the hood it's scipy doing the heavy lifting: fftconvolve for the core convolution. The convolution_mode dropdown (fft, overlap_add, uniform_partitioned, adaptive) picks the algorithm - for a 5-second noise clip on a CPU, FFT convolution is instant and you won't notice the difference between modes. They're there for when you process very long material or want to experiment with latency-free techniques.
The optional controls let you sculpt the IR itself: ir_length (0.5β20 s) is how long the impulse response runs, early_reflections and late_reflections shape the two phases of the tail, room_size, damping (how fast highs die), and diffusion (how smooth the tail gets). Two toggles are worth calling out: freeze holds the reverb tail forever, turning your noise into an endless drone, and reverse flips the IR, giving you the classic reversed-reverb swell. A modulation_rate/modulation_depth pair adds a subtle chorus wobble to the tail, and high_cut/low_cut EQ the wet signal.
Outputs are reverb_audio plus a reverb_report STRING describing the processed result.
Install
Standard for the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/eg0pr0xy/comfyui_noisegen.git
cd comfyui_noisegen
pip install -r requirements.txt
(Windows embedded Python: ComfyUI\python_embeded\python.exe -m pip install -r requirements.txt.) Or ComfyUI Manager β search "NoiseGen" / eg0pr0xy. No IR downloads, no model files, no keys.
Gotchas
The dependency rule bites hardest here: this node is scipy.fftconvolve all the way down, and scipy isn't in a stock ComfyUI - skip the pip install and the whole pack refuses to load. The other thing to know is that wet_dry_mix defaults to 0.3 for a reason; on a full-spectrum noise wall, 100% wet reverb can turn everything into a washy blur. The tasteful move: low mix, long decay, and let reverse + freeze be your special effects rather than your default state.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Input audio for reverb processing | |
| reverb_type | COMBO | hall | 8 options: hall, room, cathedral, plate, spring, chamber, +2 |
| convolution_mode | COMBO | fft | 4 options: fft, overlap_add, uniform_partitioned, adaptive |
| wet_dry_mix | FLOAT | 0.300β1 | β |
| reverb_time | FLOAT | 2.00.1β10 | Reverb decay time in seconds |
| pre_delay | FLOAT | 0.0200β0.5 | Pre-delay before reverb in seconds |
| amplitude | FLOAT | 0.800β2 | β |
| ir_lengthopt | FLOAT | 4.00.5β20 | Impulse response length in seconds |
| early_reflectionsopt | FLOAT | 0.300β1 | β |
| late_reflectionsopt | FLOAT | 0.700β1 | β |
| room_sizeopt | FLOAT | 0.500.1β1 | β |
| dampingopt | FLOAT | 0.300β1 | β |
| diffusionopt | FLOAT | 0.600β1 | β |
| modulation_rateopt | FLOAT | 0.500β10 | β |
| modulation_depthopt | FLOAT | 0.0500β0.5 | β |
| high_cutopt | FLOAT | 80001000β20000 | β |
| low_cutopt | FLOAT | 10020β1000 | β |
| stereo_widthopt | FLOAT | 1.000β2 | β |
| freezeopt | BOOLEAN | false | Freeze reverb tail |
| reverseopt | BOOLEAN | false | Reverse impulse response |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| reverb_audio | AUDIO | β |
| reverb_report | STRING | β |