LC Denoise π
Inject the noise your sampler thinks it removed
- samples
- latent
Denoise is a word the whole ecosystem uses and almost nobody can keep straight. On a sampler it means "how much of the latent gets replaced by noise" - 1.0 is full noise, 0 is nothing. LC Denoise (LCDenoise) is a latent-space helper that speaks the same language: it injects Gaussian noise into a latent using noise_std = 1 β denoise. Wire it the same denoise value you use on your sampler and the two agree instead of arguing.
The pack's own tooltip is the whole manual: "Denoise amount. Noise strength used is (1 - denoise). 1.0 = no noise; 0.0 = noise_std 1.0." So denoise 0.6 β it adds noise at 0.4 strength. Denoise 1.0 β it does nothing at all.
Why you'd reach for it
This is a latent plumbing node - the kind that shows up in img2img and pass-through workflows where you want to re-add variation without re-sampling from scratch. Think of it as the controlled version of feeding a partially-denoised latent back into a sampler: you decide exactly how much fresh noise the latent carries, using the same denoise vocabulary you already know from the KSampler.
It sits in the LC123/latent category, alongside the pack's sigma-splitting and reference-latent nodes - it's built for the tinkerer wiring custom multi-pass graphs, not the person dragging one KSampler onto a canvas.
The inputs
Only two, and both are simple:
- samples (LATENT) - the latent to inject noise into.
- denoise (FLOAT, 0β1, default 1) - the amount. The node computes
noise_std = 1 - denoiseand addstorch.randn_likescaled by it. Default 1 means no inject - which is also your safe "off" position.
One output: latent, ready to feed a KSampler or another latent operation.
Where people get confused
Three things trip people up, all of them fair:
- The inversion. Denoise 1.0 = no noise added. That reads backwards until you accept that this node is modeling "how denoised should this latent pretend to be." The README states it plainly: "same denoise number as the sampler; 1.0 = no inject."
- No seed widget. The noise is freshly random every run - same idea as WAS Latent Noise Injection, per the source comment. If you need reproducible noise, this node isn't that; you'd pair it with a fixed-seed approach upstream.
- It's not a denoiser. Despite the name, it adds noise. The "image denoise" job is a different node entirely (LC Image Denoise, which works on pixels, not latents). Don't wire this where you meant a cleaner.
Install
Part of ComfyUI_LC123_nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes
or via ComfyUI Manager, then restart. No pip extras, no models - it's a few lines of torch. The pack has little community discussion, so the source docstring in lc_denoise.py is actually the clearest documentation around.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | Latent to inject noise into. | |
| denoise | FLOAT | 1.000β1 | Denoise amount. Noise strength used is (1 - denoise). 1.0 = no noise; 0.0 = noise_std 1.0. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | β |