Nodes/ComfyUI Iterative Mixing Nodes/Iterative Mixing KSampler
ComfyUI Node Runs on cloud

Iterative Mixing KSampler

The one-node iterative mixing sampler (and why it's the legacy version)

By ttulttul·Created 3 years ago·Updated about a year ago· 120
Iterative Mixing KSampler
  • model
  • positive
  • negative
  • latent_image
  • LATENT
seed0
steps40
cfg8.0
sampler_name
scheduler
denoise1.00
alpha_12.40
blending_schedulecosine
blending_functionaddition
normalize_on_meanfalse

This is the pack's namesake node, and the honest headline is in the README: it's deprecated. The author built it first, then - on advice from comfyanonymous himself - moved the whole technique onto the SamplerCustom node because this approach produces grainy output. So think of it as the easy button for trying the idea out, with a known-quality tradeoff, not the node you build a production workflow around.

What it actually does

"Iterative Mixing" is a made-up term (the author owns that) for a real trick borrowed from the DemoFusion paper: as a sampler denoises a latent step by step, you keep blending in a small, declining fraction of a progressively noised copy of that same latent. The noise was added along the model's own training noise schedule, so it acts like scaffolding - it keeps the higher-resolution output structurally consistent with the original image instead of letting the model invent extra limbs. The whole reason this matters is that a Stable Diffusion 1.5 model's receptive field is ~512px, so any upscale past native resolution invites coherence failures; mixing in the noised original keeps it honest.

What makes this node convenient is that it's the "Simple" variant - despite the plain name. The batch of noised latents (normally produced by the separate Batch Unsampler node) is generated internally. You feed it a plain latent_image, it noises it up, mixes, and hands you back a single LATENT.

The inputs that matter

For a beginner, most of the standard knobs (model, positive, negative, seed, cfg, sampler_name, scheduler) work exactly like a normal KSampler. The ones unique to this pack:

  • steps (default 40) - the de-noising step count, which is also how many noising steps the internal unsampler runs.
  • alpha_1 (default 2.4) - controls how steep the blending curve is. Small values blend in lots of noised latent early; big values skew toward the pure denoised path. Try 0.1–5.0.
  • blending_schedule - cosine (default), linear, or logistic. The author has no strong opinion; neither should you until you've tried all three.
  • blending_function - addition, slerp, or norm_only. The author reports slerp and norm_only beat plain addition because they work better in high-dimensional space.
  • normalize_on_mean - deprecated. It does nothing but print a warning now; leave it off.

One output, LATENT: the final mixed, denoised latent. VAE-decode it like any sampler output.

Install

No model files, no API keys, nothing to download beyond the code:

cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/ComfyUI-Iterative-Mixer
# restart ComfyUI

Or use ComfyUI Manager and search for "ComfyUI Iterative Mixing Nodes" (the pack is registered on the Comfy Registry). Its requirements.txt pulls in torch, numpy, matplotlib, Pillow, tqdm and scipy - the last two are the only non-standard bits, and they're small.

Where people get burned

  • Graininess is by design here. The author explicitly says the KSampler-era nodes output grainy latents because the model "was never trained to operate in this manner." The fix is a second, ordinary KSampler at a low denoise (0.05–0.25) to clean up. If you hate that dance, skip to the modern IterativeMixingSampler + SamplerCustom route.
  • Don't pair it with VAEEncodeForInpaint - inpainting encoding erases the masked region, leaving nothing for the mixer to blend with.
  • denoise is suspect. The author literally writes "I'm not sure if this does anything." Don't treat it as your main dial.
  • The README's own docs still describe an older signature that took latent_image_batch; the shipped node takes latent_image and unsamples internally. Trust what you see in the UI, not the prose.

Use it as a fun experiment in structure-preserving upscaling and overpainting. Just know the newer sibling in this pack is the one that stopped being experimental.

Categorytest

Inputs (14)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
seedINT00–18446744073709550000
stepsINT400–10000
cfgFLOAT8.00–100
sampler_nameCOMBO27 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +21
schedulerCOMBO6 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform
denoiseFLOAT1.000–1
alpha_1FLOAT2.400.05–100
blending_scheduleCOMBOcosine3 options: cosine, linear, logistic
blending_functionCOMBOaddition3 options: addition, norm_only, slerp
normalize_on_meanBOOLEANfalse

Outputs (1)

NameTypeDescription
LATENTLATENT