Interval Sampler
Swap checkpoints mid-generation
- modelA
- modelB
- positiveA
- negativeA
- positiveB
- negativeB
- latent_image
- LATENT
A KSampler treats generation as one monotonic pass with one model. Interval Sampler's premise is stranger: what if model A draws the first chunk of steps, then model B takes over partway through, and they hand the half-finished image back and forth until it's done? That's mid-generation model switching - the "merge two checkpoints by actually running both" trick that ComfyUI is uniquely good at expressing - and this is a compact, scripted version of it.
How it works
The node walks the denoise trajectory in chunks of interval steps. For each chunk it runs the standard sampler machinery over just that slice (start_step to last_step), feeding the partially-denoised latent from the previous chunk straight in. Noise is only injected on the very first chunk; after that each pass continues from where the last one stopped. It starts on modelA, then alternates models every chunk - and since each model gets its own pair of prompts, you can give it its own wording too, not just its own weights.
The inputs that matter
modelAandmodelB- two loaded checkpoints. The usual way is two CheckpointLoaderSimple nodes.interval- steps per chunk. This is the trap. The default is 1, which switches models every single step and is about as stable as a toddler with a stapler. You want chunks of 5–10 at minimum: let one model establish structure, the other finish detail.positiveA/negativeAandpositiveB/negativeB- separate conditioning for each model.steps,cfg,sampler_name,scheduler- the standard controls. Note this is a DDPM-era sampler; the whole premise gets shakier on flow-matching models like Flux.
Output is a single LATENT, straight into a VAE Decode.
The honest verdict
This is an experiment node, not a workflow staple. "Interval sampler" has essentially no community footprint - you won't find a consensus on settings because barely anyone runs it. Treat it as a way to learn what each checkpoint contributes to a trajectory: run steps 0–10 on a stylized model and the rest on a photographic one, save the seed, and compare against a straight run of each model.
Expect surprises. Two full models plus two text encodings means it eats VRAM - a 6GB card will be swapping - and the results are genuinely unpredictable, because you're asking a diffusion model to change its "handwriting" mid-sentence. That's the fun and the whole point. Use it when you're playing, not when you're shipping.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/braintacles/braintacles-comfyui-nodes
or search braintacles-nodes in ComfyUI Manager and restart. No Python dependencies, no model files - it wraps ComfyUI's own sampler internals, so it keeps working across ComfyUI updates.
One side note: this node is the reason the pack shrank. It merged into the pack in May 2024 and the author used the opportunity to strip out the older VAE pipe nodes - that's why those four are missing from the current release.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| modelA | MODEL | — | |
| modelB | MODEL | — | |
| noise_seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| interval | INT | 11–1000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28 | |
| scheduler | COMBO | 9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3 | |
| positiveA | CONDITIONING | — | |
| negativeA | CONDITIONING | — | |
| positiveB | CONDITIONING | — | |
| negativeB | CONDITIONING | — | |
| latent_image | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |