SamplersSUNoise
Swap the Gaussian noise your ancestral sampler throws at you
- SAMPLER
Ancestral and stochastic samplers - Euler a, DPM++ 2S a, the whole DPM++ SDE family - are the creative ones. They're also the ones that inject fresh random noise at every step, and that noise is Gaussian. This node's entire pitch is that Gaussian noise's long tails cause subtle artifacts, and replacing it with uniform noise - bounded, scaled to the sigma of the step - cleans those up. That's the trick. Nothing else.
SamplersSUNoise is the flagship node of bvhari/ComfyUI_SUNoise. You pick one of seven ancestral/stochastic samplers from a dropdown and a noise_type, and it hands you a ready-made SAMPLER object. It's a one-node replacement for the sampler you'd otherwise configure by hand in a Custom Sampler workflow.
How it works
Every ancestral step does two things: it moves the latent down the noise schedule, then adds fresh noise scaled by sigma_up to keep the trajectory stochastic. ComfyUI defaults that injected noise to randn - Gaussian. SUNoise replaces it with uniform noise drawn from [-sigma_down, +sigma_down], seeded deterministically from your sampling seed so the same seed still reproduces the same image.
Two details matter. First, since v2.0.0 the noise is interleaved: odd steps get SUNoise, even steps get the standard Gaussian. Pure uniform noise on every step started to feel too smooth, so the author splits the difference - that's literally what the changelog says, and you can see the i%2 != 0 switch in the source. Second, noise_type = multires builds the uniform noise at two resolutions (full and half size), upscales the coarse layer, and sums them. That gives the noise low-frequency spatial structure instead of pure per-pixel static - which is the same trick Perlin-style "structured noise" workflows use, minus the node sprawl.
What you set
Just two inputs, and honestly only sampler_name matters at first:
sampler_name-euler_ancestral,euler_ancestral_cfg_pp,dpm_2_ancestral,dpmpp_2s_ancestral,dpmpp_sde,dpmpp_2m_sde,dpmpp_3m_sde. Start witheuler_ancestralordpmpp_2m_sde;euler_ancestral_cfg_ppis the CFG++ variant for v-prediction-style guidance.noise_type-standardfor plain uniform,multiresfor the structured version. Try multires when you want less per-pixel grain.
The output is a single SAMPLER, which wires into SamplerCustomAdvanced's sampler input - not into a plain KSampler, which only takes sampler-name strings. This is the #1 thing that trips people up. Build the custom-sampling chain (model → sampler → sigmas → latent) and it behaves like any other sampler node.
Installing
The pack is registered with the Comfy Registry, so ComfyUI Manager is the easy route: Manager → Install Custom Nodes → search "SUNoise". Or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/bvhari/ComfyUI_SUNoise
Then restart ComfyUI. There are no extra dependencies - it's plain Python using torch/numpy/tqdm, which ComfyUI already ships - and no model files to download. It's GPL-3.0, by the way, which matters if you ever bundle workflows for commercial distribution.
The honest take
This is a niche pack. I checked the usual corners of the internet and there is essentially zero community discussion of it - no tutorials, no "try this" posts. The SUNoise idea comes from an SD 1.5-era research writeup that blamed Gaussian noise's extreme values for oversaturation and "burning" at high CFG, and it's a real, well-reasoned heuristic. But it's a polish knob, not a game-changer. If your Euler a output already looks fine, this won't unlock anything.
Where it does help: high-CFG runs, and ancestral workflows where you want the variety without the noise-induced speckle. Follow the README's advice - 30 steps or more - because at low step counts the alternation between noise types gives you too little chance to settle. And keep expectations calibrated: you'll get a slightly cleaner image, not a different model.
Troubleshooting
- "I can't find the node" - it's under
sampling/custom_sampling/samplers, not in the main sampler dropdown. - Node exists but output looks off - drop to
standardnoise first; multires is a taste thing. - Same seed gives different results than before - expected. SUNoise changes the noise distribution, so the image should change. That's the point.
- Fewer than 30 steps looks rough - bump steps; the README calls this out explicitly.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| sampler_name | COMBO | 7 options: euler_ancestral, euler_ancestral_cfg_pp, dpm_2_ancestral, dpmpp_2s_ancestral, dpmpp_sde, dpmpp_2m_sde, +1 | |
| noise_type | COMBO | 2 options: standard, multires |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SAMPLER | SAMPLER | — |