ComfyUI Node

Colored Noise KSampler

Swap in one node to color your noise — no custom sampling graph required

By akashzeno·Created 3 months ago·Updated 3 months ago· 3
Colored Noise KSampler
  • model
  • positive
  • negative
  • latent_image
  • output
  • denoised_output
seed0
steps20
cfg8.0
base_samplerdpmpp_2m_sde
scheduler
denoise1.00
color_initial_noisefalse
eta1.00
s_noise1.00
modeparametric
alpha_start0.00
alpha_end-1.00
interpolationlinear
exp_sharpness4.0
gamma_matrixnone (parametric)
gamma_divider1.00
gamma_shapingnone
power_gamma1.00
alpha_tilting0.00
energy_scale1.00

If you have a working Load Checkpoint → KSampler → VAE Decode graph, this is the fastest way to try "colored noise" diffusion sampling: it's a drop-in KSampler replacement with frequency-shaping baked in. Same model, positive, negative, latent_image, seed, steps, cfg, scheduler, denoise inputs you already know, plus the spectral knobs from the rest of this pack. Swap it in where your KSampler sits and hit render - you don't have to learn the SamplerCustomAdvanced graph to find out whether colored noise does anything for your model.

What it actually does

This is the all-in-one node of the akashzeno/ComfyUI-ColoredNoiseDiffusionSampling pack, a port of the Colored Noise Diffusion Sampling paper (Davidson, Issachar & Benaim, arXiv:2605.30332). Instead of injecting plain white Gaussian noise at each stochastic step, it shapes the noise's power spectrum - and lets that shape change over the sampling trajectory: broadband early, biased toward high-frequency detail late. It plugs into ComfyUI's standard noise_sampler seam, so underneath it's just a KSampler whose per-step noise is FFT-shaped and renormalized to unit variance. The sampler you pick still controls the trajectory; only the noise flavor changes.

That's why it's worth being honest about scope: the paper's FID numbers are from SiT on ImageNet-256 and will not reproduce on SD/SDXL/Flux. Treat this as a quality/character knob, not a free quality boost - some models like it, some don't.

The inputs that matter

  • base_sampler - the dropdown only contains stochastic samplers (ancestral/SDE ones like dpmpp_2m_sde, plus the _RF rectified-flow variants for Flux/SD3). Deterministic samplers never inject per-step noise, so the pack doesn't even offer them - coloring them would be a silent no-op.
  • mode + alpha_start/alpha_end - keep mode = parametric for now. Positive alpha tilts toward low frequencies (pink/brown, softer), negative toward high frequencies (blue/violet, crisper). The default 0 → -1 is the CNS-style broadband-to-detail sweep.
  • eta - stochasticity. At 0 the SDE step becomes deterministic and coloring is disabled entirely. Leave it at 1 unless you know why you're lowering it.

color_initial_noise is a nice extra: tick it and the starting latent gets colored too (at a constant alpha_start), instead of the plain white start. energy_scale is a deliberate "heat" knob - anything other than 1.0 changes the effective noise level, so treat it as an experiment, not a subtle trim.

Quick recipes

  • White baseline (sanity check): alpha_start = 0, alpha_end = 0
  • CNS-like: alpha_start = 0, alpha_end = -1-2
  • Constant pink/brown: alpha_start = alpha_end = 12

Install

No extra dependencies - torch comes with ComfyUI, and this pack has none of its own. Either search "Colored Noise" in ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/akashzeno/ComfyUI-ColoredNoiseDiffusionSampling

Restart ComfyUI. It lands under sampling/colored_noise. You should see [ColoredNoiseDiffusionSampling] loaded: 3 nodes | ... in the console - that's how you know it's live.

Gotchas

The one that bites people: pick a stochastic base sampler and keep eta above 0, or you'll render identical images and assume the node is broken (it isn't - there's just nothing to color). If you try gamma_matrix mode on SD/Flux, remember the bundled matrices are SiT/ImageNet-specific heuristics; the parametric mode is the intended default. And watch the console per-generation: the pack logs a line like sampling: base=dpmpp_2m_sde | parametric alpha 0.00->-1.50 (linear) | ... so you can confirm coloring is actually active.

Categorysampling/colored_noise

Inputs (24)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.00–100
base_samplerCOMBOdpmpp_2m_sde22 options: ddpm, dpm_2_ancestral, dpm_2_ancestral_RF, dpmpp_2m_sde, dpmpp_2m_sde_heun, dpmpp_2s_ancestral, +16
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
color_initial_noiseBOOLEANfalseAlso color the initial latent noise (uses alpha_start as a constant color).
etaFLOAT1.000–100Stochasticity. eta=0 makes the step deterministic, disabling colored noise.
s_noiseFLOAT1.000–100
modeCOMBOparametric2 options: parametric, gamma_matrix
alpha_startFLOAT0.00-8–8
alpha_endFLOAT-1.00-8–8
interpolationCOMBOlinear2 options: linear, exponential
exp_sharpnessFLOAT4.00.1–16
gamma_matrixCOMBOnone (parametric)3 options: none (parametric), gamma_matrix_scaled.pt, gamma_matrix_scaled_cfg_1.5.pt
gamma_dividerFLOAT1.000.1–10
gamma_shapingCOMBOnone3 options: none, sqrt, power
power_gammaFLOAT1.000.1–8
alpha_tiltingFLOAT0.00-8–8
energy_scaleFLOAT1.000–4

Outputs (2)

NameTypeDescription
outputLATENT
denoised_outputLATENT