IterativeMixingSchedulerAdvanced
Sample only part of the schedule, on purpose
- model
- SIGMAS
The plain IterativeMixingScheduler hands the sampler a full schedule and calls it a day. This one lets you run only part of it - and that partial-schedule trick is genuinely useful for iterative mixing, because a stopped-short run is a great way to stage refinement passes.
The flagship use case from the README: set end_at_step to half your total step count. The sampler then produces deliberately grainy output that's rich with detail - exactly the kind of noisy-but-detailed intermediate you'd hand to a second iterative mixing sampler (or a cleanup sampler) to refine. It's a two-stage workflow that the "mix in the noised original" technique is unusually good at.
Inputs and output
model- required; sigmas are derived from the model's noise sampling.scheduler-normal,karras,exponential,sgm_uniform,simple,ddim_uniform.steps(default 20) - your reference total step count.start_at_step/end_at_step(defaults 0 / 10000) - which slice of the schedule to emit.end_at_stepis capped atstepsand at the length of the computed sigma array.denoise(default 1.0) - standard partial-denoise handling.
Output: SIGMAS for SamplerCustom. Same wiring as the simple version, same "add_noise off" rule.
The confusing part (read this before you fiddle)
Here's the trap the README warns about explicitly. The sampler fits its blending curve to the length of the sigmas tensor it receives, not to the steps you typed into the scheduler. If you run a half-length schedule, the curve gets horizontally stretched by 2x, and your start_blending_at_pct / stop_blending_at_pct no longer mean what you think.
The author's own worked example: steps = 40, start_at_step = 0, end_at_step = 20 (that's 50% of the way through). To keep the curve behaving, you must set stop_blending_at to 80 on the sampler so the schedule compensates for the shorter sigmas tensor. Yes, that's counterintuitive - the author says "I know this is confusing and if a better way emerges, I will support it." Set start_blending_at_pct and stop_blending_at_pct to the same proportion of the total step count that your start_at_step/end_at_step slice represents, and you're mathematically consistent.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/ComfyUI-Iterative-Mixer
# restart ComfyUI
Or ComfyUI Manager → "ComfyUI Iterative Mixing Nodes." No model files, no heavy downloads; the pack's matplotlib/scipy dependencies are already handled by its requirements.txt even though this node itself is dependency-light.
If you're doing a straightforward full-schedule run, save yourself the headache and use the simple IterativeMixingScheduler. Reach for this one only when you're deliberately slicing the schedule for staged or refinement workflows - that's the case where the extra input genuinely pays for itself.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| scheduler | COMBO | 6 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform | |
| steps | INT | 201–10000 | — |
| start_at_step | INT | 00–10000 | — |
| end_at_step | INT | 100000–10000 | — |
| denoise | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |