Mix Noise
The node that gives you a slider between two noises — your variation machine
- noise1
- noise2
- mask
- NOISE
You've finally got an image you like - the face is right, the composition works - and now you want twenty near-copies of it. Same everything, slightly different everywhere else. Mix Noise is the node for exactly that, and it's the most-used node in the pack for a reason.
Here's the thing about how ComfyUI does noise: it's not a tensor you can grab and edit. RandomNoise hands the sampler a lazy generator object (the NOISE type), and the sampler calls it at sampling time. Mix Noise wraps two of those generators and hands back a third one that blends them on demand. No tensors touch your graph; you're compositing recipes, not pixels.
How the mix works
The math is exactly what it looks like:
mixed = noise1 * (1 - weight2) + noise2 * weight2
weight2 = 0 gives you pure noise1; weight2 = 1 is pure noise2; everything between is a blend. Leave noise2 unplugged and it's treated as zero noise, so you're effectively mixing noise1 with silence. The renormalise toggle (leave it at yes) rescales the result to mean 0, standard deviation 1 afterwards - the sampler expects noise with those stats, and mixing two noises wrecks them otherwise.
That's the whole trick of "small variations": two noises with different fixed seeds look like unrelated static, but blended at weight 0.1 or 0.2 they share enough low-level structure that the sampler builds the same scene from both. The result stays recognizably your image while every pixel drifts a little.
The inputs that matter
- noise1 - your base. This is the seed you'll actually farm.
- weight2 - the dial. Default 0.01. The author is blunt that "a weight of 0.2 is pretty big" - tiny values move a lot.
- renormalise - leave it on.
- noise2 and mask - optional.
maskis aMASKthat gets bilinear-rescaled to the latent and blends between the mix and pure noise1, so you can confine the variation to a region.
Using it for variations
Wire two RandomNoise nodes with fixed seeds into a Mix Noise, and feed the NOISE output into the noise socket of SamplerCustomAdvanced - the custom-sampler area, not the plain KSampler's seed field (that's the one gotcha that trips everyone the first time). Set weight2 to 0, farm noise1's seed until you love the image, then start nudging weight2 up. Tweak noise2's seed for a different flavor of variation. It works across batches too - the mix is computed per batch entry, so a batch of four interpolates each one.
One warning straight from the author: the mask is not for inpainting. The sampler removes noise globally, so masking changes where the variation lands, not what gets repaired. Don't reach for it expecting img2img-style regional edits.
Installing
Trivially easy, no models, no extra Python packages. The pack needs nothing beyond torch and ComfyUI's own comfy_extras, which ship with ComfyUI. Install via ComfyUI Manager (search "cg-noisetools" or the pack title "Noise variation and batch noise tools"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/chrisgoringe/cg-noisetools
then restart ComfyUI. That's it. The whole pack is labeled experimental by the author, so don't build a production pipeline on it - but for cranking out a set of similar images it does exactly one thing and does it well.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| noise1 | NOISE | — | |
| weight2 | FLOAT | 0.010-1–1 | — |
| renormalise | COMBO | 2 options: yes, no | |
| noise2opt | NOISE | — | |
| maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| NOISE | NOISE | — |