SamplerCustomNoiseDuo
A KSampler with custom noise and a hires-fix bolted on
- model
- positive
- negative
- sampler
- sampler2
- sigmas
- sigmas2
- latent_image
- output
- denoised_output
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.gaussianis the safe default;pyramidandpowerchange the character of early generation.hr_upscale- 1.0 means "no second-pass upscale." 2.0 is a typical hires-fix value.cfg/cfg2andsampler/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, andsigmas2is where you control how much the second pass actually changes things (a scheduler withdenoiseat 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. Turnadd_noiseoff 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.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| add_noise | BOOLEAN | true | — |
| add_noise_pass2 | BOOLEAN | true | — |
| return_noisy_pass1 | BOOLEAN | false | — |
| noise_type | COMBO | 4 options: gaussian, uniform, pyramid, power | |
| noise_seed | INT | 00–18446744073709550000 | — |
| cfg | FLOAT | 8.00–100 | — |
| cfg2 | FLOAT | 8.00–100 | — |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| sampler | SAMPLER | — | |
| sampler2 | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| sigmas2 | SIGMAS | — | |
| hr_upscale | FLOAT | 1.01–9 | — |
| latent_image | LATENT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| output | LATENT | — |
| denoised_output | LATENT | — |