Nodes/Comfyui-ergouzi-samplers/2🐕Mutant seed sampler
ComfyUI Node

2🐕Mutant seed sampler

Nudge a detail without moving the scene

By 11dogzi·Created 2 years ago·Updated 2 years ago· 27
2🐕Mutant seed sampler
  • model
  • positive
  • negative
  • latent_image
  • LATENT
seed0
steps20
cfg8.0
sampler_name
scheduler
denoise1.00
variation_seed0
variation_strength0.00
variation_width0
variation_height0
deviceCPU

You've probably hit the variant problem: seed 12345 gives you a composition you like, but the face is off, so you bump the seed and get a different face - and a different everything else. Seed farming is a lottery for exactly this reason. EGBYZZCYQ, the "2🐕Mutant seed sampler," attacks that from the noise side. It's a KSampler clone that builds the initial noise from your base seed, then blends in noise from a second seed inside a centered window. Outside the window the noise is untouched, so the composition holds; inside it, detail gets re-rolled. It's a poor man's regional variation, no mask and no inpainting pass.

How it works

A diffusion sample starts from noise, and the seed is that noise. This node's prepare_noise() makes two noise tensors: base noise from seed, and variation noise from variation_seed. If variation_strength is 0, you get the base noise and the node behaves like a regular KSampler. Above 0, it blends the two inside a rectangle defined by variation_width × variation_height, centered on the latent:

combined = (1 - strength) * base + strength * variation   # inside the window
combined = base                                            # everywhere else

Then the standard comfy.sample.sample() pipeline runs on the blended noise. Because only a region of the starting noise changed, only that region tends to differ in the output - a face that isn't seed A's and isn't seed B's, while the rest of the frame barely notices. That's the same "mutate the latent, keep the pose" idea behind prompt-only seed tweaks, except here the mutation is a tunable blend instead of a dice roll.

The inputs that matter

  • seed and variation_seed: the two noise sources. Bump the variation seed until the detail lands; leave the base seed alone and everything else stays put.
  • variation_strength (0–1): how much of the window is re-rolled. 0 = plain KSampler; 0.2–0.5 is the sweet spot for "tweak the detail"; 1.0 inside the window is basically new content in that box.
  • variation_width / variation_height: the window size. Trap here: these are latent pixels, so they're 8× smaller than image pixels - a 128×128 window is 1024×1024 on screen. They get clamped to the latent and rounded to multiples of 8, so you can't blow past the image edges.
  • denoise (default 1.0): same semantics as any KSampler. If you're feeding an existing image latent (img2img) and want to stay close, drop it.
  • device (CPU by default): where the noise is generated. The CPU torch RNG and the CUDA RNG don't produce the same sequence, so the same seed gives a different image on CPU vs GPU. Pick one and stay consistent, or your "same seed" experiments will lie to you.
  • The usual suspects: model, positive/negative, steps, cfg, sampler_name, scheduler, latent_image.

Output and wiring

One output: LATENT. It's a drop-in KSampler replacement - feed it a latent (Empty Latent Image for txt2img, VAE Encode for img2img) plus conditioning, and decode the result with VAE Decode. There's no VAE or image input on the node itself; it only touches noise.

Installing it

Same pack as its sibling. ComfyUI Manager → search "Comfyui-ergouzi-samplers", or:

cd ComfyUI/custom_nodes
git clone https://github.com/11dogzi/Comfyui-ergouzi-samplers

Restart after. Dependencies are just torch/numpy/colorama/pillow, all already present, no models to download.

Where people get burned

  • The CPU/GPU device gotcha above is the one that bites. Set device=GPU, get a nice image, then wonder why the "same" workflow gives different results on another machine. Noise RNG is device-specific.
  • variation_strength at 1.0 with a big window stops being a "tweak" - it's a new image in that region. Start small.
  • It's a niche node showing its 2024 age: batch handling is basically absent (all batch rows get the same noise), and the maintainer - the same Bilibili creator behind the Local sampler - hasn't touched it in a while. It works, but don't hold your breath for updates.

For "keep the composition, fix one thing," the Local sampler is usually the cleaner tool - a mask beats a noise window when you know what to change. This one is for when you don't know what to change and want to roll a handful of variants that all respect the scene. Different job, and it does it with two seeds and no inpainting pass.

Category2🐕sampler

Inputs (15)

NameTypeDefaultDescription
modelMODEL
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.00–100
sampler_nameCOMBO34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
schedulerCOMBO9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
denoiseFLOAT1.000–1
variation_seedINT00–18446744073709550000
variation_strengthFLOAT0.000–1
variation_widthINT00–512
variation_heightINT00–512
deviceCOMBOCPU2 options: GPU, CPU

Outputs (1)

NameTypeDescription
LATENTLATENT