Nodes/koo-nodes-pack/KoO Diffusion EQ [Experimental]
ComfyUI Node

KoO Diffusion EQ [Experimental]

A Five-Band EQ for Diffusion Noise, Marked Experimental for a Reason

By kooailab·Created 15 days ago·Updated 4 days ago· 0
KoO Diffusion EQ [Experimental]
  • reference_sigmas
  • eq_noise
  • eq_sigmas
  • configuration_report
◄presetNeutral►
◄seed0►
◄structure_db0.0►
◄shapes_db0.0►
◄texture_db0.0►
◄detail_db0.0►
◄microdetail_db0.0►
◄master_intensity0.50►
◄spectral_mix0.65►
◄sigma_mix0.40►
◄normalize_noisetrue►
◄bypassfalse►

Once a year somebody ships a node that describes diffusion sampling in audio-engineer language, and it's usually either nonsense or genuinely interesting. KoO Diffusion EQ is the second kind, sort of. It takes your initial noise, splits it into five overlapping frequency bands, applies a gain to each in decibels, and also reshapes the sigma schedule to match. The author put [Experimental] in the display name, which is refreshingly honest.

Here's what it actually does, because the mechanism is more legible than the node's size suggests.

How it works

Two things happen, and the spectral_mix / sigma_mix sliders decide your blend between them.

Spectral. The noise tensor goes through an FFT. The node builds a radial frequency grid, lays five Gaussian windows over it centered at 0.04, 0.15, 0.34, 0.60 and 0.86 of the normalized frequency radius - band names Structure, Shapes, Texture, Detail, Microdetail - converts your dB gains to amplitudes with 10^(dB/20), sums the weighted windows into one filter curve, and multiplies the spectrum. Then inverse FFT. Low-band gain moves large-scale composition, high-band gain moves fine texture, exactly as the names promise.

Sigma. In parallel it redistributes the sigma schedule you fed in, using a second set of five windows over the 0–1 sigma range centered at 0.06, 0.27, 0.52, 0.76 and 0.93. Boosting the high bands both adds high-frequency noise and spends more of the schedule where fine detail is decided. That's the theory, anyway.

Outputs are eq_noise (a NOISE object), eq_sigmas (a SIGMAS) and a configuration_report string. Wire eq_noise where your sampler expects noise and eq_sigmas into the sampler's sigmas input.

The inputs that matter

You'll set maybe four of the twelve.

  • reference_sigmas (SIGMAS, required) - the node needs a schedule to redistribute. Grab it from a scheduler node or the sampler's own sigmas.
  • preset - Neutral, Natural Detail, Archviz Materials, Aggressive Microdetail. These are baseline gain sets in dB. Neutral is all zeros, and the node short-circuits to a pass-through when everything sums to zero - the well-behaved thing to do.
  • The five dB trims - structure_db, shapes_db, texture_db, detail_db, microdetail_db, each ±12 dB in 0.5 steps, added on top of the preset. A +3 on Detail with the Natural Detail preset stacks.
  • master_intensity (default 0.5) and bypass - the safety valve. Bypass gives you an unmodified noise/sigmas pair, so you can A/B without rewiring.

The rest - spectral_mix (0.65), sigma_mix (0.4), normalize_noise, seed, bypass - are the knobs you touch once you understand what you're hearing, so to speak. normalize_noise defaults on and re-standardizes the result so you're not accidentally changing overall noise energy while chasing texture.

What it's actually good for

Think of it as a texture-seasoning node, not a quality dial. Natural Detail with a couple of dB of Texture is the plausible everyday setting: slightly crisper microcontrast without the crunchy over-sharpened look. Archviz Materials is aimed at exactly what it says - hard surfaces, controlled speculars, the sort of render where flat walls need to stay flat while stone needs tooth. Aggressive Microdetail drops Structure by 1 dB and piles on Detail and Microdetail; on a re-render of an already-clean image it will produce the classic over-processed look, which is presumably the point.

The honest caveat: there is no community consensus behind this specific node, because it's a small experimental utility inside a small pack. Unlike denoise strength or CFG, there's no body of "set this to 0.35" advice - so change one band at a time and keep the configuration_report output visible. It prints exactly which gains were applied, and having that on screen is the difference between iterating and flailing.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/kevintronchin-blip/koo-nodes-pack

Restart ComfyUI and refresh the browser. requirements.txt declares torch, numpy, Pillow, aiohttp - all already present in a working ComfyUI, so there's nothing to install and no models to download. It's filed under KoO Tools / Sampling.

Registry/Manager availability at v1.0.3 depends on moderation approval, so if Manager can't find it, use the README's ZIP route: extract to ComfyUI/custom_nodes/koo-nodes-pack with __init__.py directly inside.

Troubleshooting

Nothing changes. Check bypass, check master_intensity isn't near zero, and check you're actually feeding eq_sigmas into the sampler. Half the settings on this node only do anything if the scheduler takes the redistributed schedule.

A wall of shape errors. This node was written against 4D latents with 4 or 16 channels; a 5D still latent from a Krea-style pipeline needs the 4D conversion first.

It's slower than you expected. You're doing two FFTs per run plus five Gaussian window constructions. It's not free, and at high resolution it's measurable. That's the price of doing this in the frequency domain rather than faking it with blur.

CategoryKoO Tools / Sampling

Inputs (13)

NameTypeDefaultDescription
reference_sigmasSIGMAS—
presetCOMBONeutral4 options: Neutral, Natural Detail, Archviz Materials, Aggressive Microdetail
seedINT00–18446744073709550000—
structure_dbFLOAT0.0-12–12—
shapes_dbFLOAT0.0-12–12—
texture_dbFLOAT0.0-12–12—
detail_dbFLOAT0.0-12–12—
microdetail_dbFLOAT0.0-12–12—
master_intensityFLOAT0.500–1—
spectral_mixFLOAT0.650–1—
sigma_mixFLOAT0.400–1—
normalize_noiseBOOLEANtrue—
bypassBOOLEANfalse—

Outputs (3)

NameTypeDescription
eq_noiseNOISE—
eq_sigmasSIGMAS—
configuration_reportSTRING—