Nodes/ComfyUI Extra Samplers/SamplerCustomNoiseDuo
ComfyUI Node

SamplerCustomNoiseDuo

A KSampler with custom noise and a hires-fix bolted on

By Clybius·Created 3 years ago·Updated 2 years ago· 104
SamplerCustomNoiseDuo
  • model
  • positive
  • negative
  • sampler
  • sampler2
  • sigmas
  • sigmas2
  • latent_image
  • output
  • denoised_output
add_noisetrue
add_noise_pass2true
return_noisy_pass1false
noise_type
noise_seed0
cfg8.0
cfg28.0
hr_upscale1.0

SamplerCustomNoiseDuo is what you get when you take the stock KSampler, rip out the "gaussian noise or nothing" starting point, and staple a hires-fix onto the end. It's from the ComfyUI Extra Samplers pack by Clybius - the same person behind the Chroma checkpoint family - and it's the version of this idea most people should grab, because it turns a two-pass high-res workflow into one node.

Two things happen inside this node. First, it lets you choose what noise the sampler starts from. The stock KSampler always seeds your latent with Gaussian noise; here you get gaussian, uniform, pyramid, or power under noise_type. Pyramid noise (per-octave, lower-frequency) is the one people actually switch to when they want a different texture or composition feel - it's a small but real change in the shape of your generations. Second, it runs a second sampling pass at a higher resolution: after pass 1 finishes, it upscales the latent by hr_upscale and samples again with its own sampler, sigmas, and CFG. That's the classic hires-fix pattern, collapsed into a single node instead of a KSampler → latent upscale → KSampler chain.

The inputs that matter:

  • noise_type - the init noise flavor. gaussian is the safe default; pyramid and power change the character of early generation.
  • hr_upscale - 1.0 means "no second-pass upscale." 2.0 is a typical hires-fix value.
  • cfg / cfg2 and sampler / sampler2 - pass 1 and pass 2 get independent strengths and samplers. Pass 2 at a lower cfg is a common combo.
  • sigmas / sigmas2 - each pass has its own schedule. You get these from a scheduler node, and sigmas2 is where you control how much the second pass actually changes things (a scheduler with denoise at 0.4–0.5 gives the classic "refine, don't reimagine" second pass).
  • add_noise, add_noise_pass2 - add noise at the start of each pass. Turn add_noise off with a real latent input and you're doing img2img.
  • return_noisy_pass1 - if on, the first output stays the noisy pass-1 result instead of the denoised one. Leave it off unless you're building something odd.

Outputs: output (the final LATENT, ready for the VAE decoder) and denoised_output (a clean latent prediction from pass 1). If you're just making images, wire output to VAEDecode.

Mechanically it's not doing anything magical - the source is a thin wrapper around ComfyUI's own sample_custom called twice with a bislerp upscale in between, and custom noise built by the pack's prepare_noise helper. That's the appeal: this pack is a bunch of tinkerer-grade sampler work, but the Duo nodes are the parts that drop straight into a normal workflow without you needing a math degree.

Installing it (same as the whole pack - no model downloads):

cd ComfyUI/custom_nodes
git clone https://github.com/Clybius/ComfyUI-Extra-Samplers

Then restart ComfyUI (or install "ComfyUI Extra Samplers" via ComfyUI Manager and restart). The only Python dependency is kornia, which Manager handles automatically; if you cloned manually and it complains, pip install kornia fixes it.

One trap: hr_upscale here is a bare multiplier - it does not include a denoise strength. If you crank it to 2.0 and hand pass 2 a full-denoise schedule, you'll get a mostly re-imagined image, which is often not what you wanted. Keep pass 2's sigmas2 short or low-denoise and you'll be glad you read this paragraph.

Categorysampling/custom_sampling

Inputs (16)

NameTypeDefaultDescription
modelMODEL
add_noiseBOOLEANtrue
add_noise_pass2BOOLEANtrue
return_noisy_pass1BOOLEANfalse
noise_typeCOMBO4 options: gaussian, uniform, pyramid, power
noise_seedINT00–18446744073709550000
cfgFLOAT8.00–100
cfg2FLOAT8.00–100
positiveCONDITIONING
negativeCONDITIONING
samplerSAMPLER
sampler2SAMPLER
sigmasSIGMAS
sigmas2SIGMAS
hr_upscaleFLOAT1.01–9
latent_imageLATENT

Outputs (2)

NameTypeDescription
outputLATENT
denoised_outputLATENT