Nodes/ComfyUI-NoiseGen/πŸ›οΈ Convolution Reverb
ComfyUI Node

πŸ›οΈ Convolution Reverb

Putting Your Noise in a Cathedral It Hasn't Earned

By eg0pr0xyΒ·Created about a year agoΒ·Updated about a year agoΒ· 1
πŸ›οΈ Convolution Reverb
  • audio
  • reverb_audio
  • reverb_report
β—„reverb_typehallβ–Ί
β—„convolution_modefftβ–Ί
β—„wet_dry_mix0.30β–Ί
β—„reverb_time2.0β–Ί
β—„pre_delay0.020β–Ί
β—„amplitude0.80β–Ί
β—„ir_length4.0β–Ί
β—„early_reflections0.30β–Ί
β—„late_reflections0.70β–Ί
β—„room_size0.50β–Ί
β—„damping0.30β–Ί
β—„diffusion0.60β–Ί
β—„modulation_rate0.50β–Ί
β—„modulation_depth0.050β–Ί
β—„high_cut8000β–Ί
β—„low_cut100β–Ί
β—„stereo_width1.00β–Ί
β—„freezefalseβ–Ί
β—„reversefalseβ–Ί

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.

Category🎡 NoiseGen/Process

Inputs (20)

NameTypeDefaultDescription
audioAUDIOInput audio for reverb processing
reverb_typeCOMBOhall8 options: hall, room, cathedral, plate, spring, chamber, +2
convolution_modeCOMBOfft4 options: fft, overlap_add, uniform_partitioned, adaptive
wet_dry_mixFLOAT0.300–1β€”
reverb_timeFLOAT2.00.1–10Reverb decay time in seconds
pre_delayFLOAT0.0200–0.5Pre-delay before reverb in seconds
amplitudeFLOAT0.800–2β€”
ir_lengthoptFLOAT4.00.5–20Impulse response length in seconds
early_reflectionsoptFLOAT0.300–1β€”
late_reflectionsoptFLOAT0.700–1β€”
room_sizeoptFLOAT0.500.1–1β€”
dampingoptFLOAT0.300–1β€”
diffusionoptFLOAT0.600–1β€”
modulation_rateoptFLOAT0.500–10β€”
modulation_depthoptFLOAT0.0500–0.5β€”
high_cutoptFLOAT80001000–20000β€”
low_cutoptFLOAT10020–1000β€”
stereo_widthoptFLOAT1.000–2β€”
freezeoptBOOLEANfalseFreeze reverb tail
reverseoptBOOLEANfalseReverse impulse response

Outputs (2)

NameTypeDescription
reverb_audioAUDIOβ€”
reverb_reportSTRINGβ€”