Nodes/SpliceTools/SpliceDenoised
ComfyUI Node

SpliceDenoised

The exact splice, for when your sampler hands you the clean latent

By AustinMroz·Created 3 years ago·Updated 2 years ago· 6
SpliceDenoised
  • noised_latent
  • denoised_latent
  • donor_latent
  • LATENT

SpliceDenoised is the more precise sibling of SpliceLatents, and the name tells you what changed: instead of guessing which part of a noised latent is noise and which part is content, it uses the actual denoised output your sampler already computed. Same idea - change the low-frequency content while keeping the fine texture - but without the Gaussian-blur approximation, which means no haloing artifacts and no fiddly radius knob to tune.

The catch is the prerequisite: you need a sampler that exposes both its raw output and its denoised output, because the node needs to know the true noise at that step. In ComfyUI terms, that's what a custom sampler (SamplerCustom-style) gives you - and the README is explicit that this is built for "sampler custom" graphs. If you're on a plain KSampler, you don't have the denoised output to hand, and you're back to SpliceLatents.

How it works

The math is refreshingly short. If noised_latent is what went into a step and denoised_latent is what came out clean, then their difference is the noise the sampler removed at that step - an exact residual, not a blurred approximation. The node computes:

output = noised_latent − denoised_latent + donor_latent

That is: the true noise from your sampler, plus the content of the donor latent. The donor's high-frequency detail survives intact - there's no blur stripping it out - which is exactly what the README means when it notes this doesn't degrade the donor the way SpliceLatents' low-pass does. If you want the color/lighting from one latent and the strand-level texture from another, this is the clean way to get it.

It also has partial noise_mask support: if the donor latent carries a noise_mask, the node blends the donor against the denoised latent through that mask, so you can limit the splice to a region.

Inputs and outputs

  • noised_latent (LATENT, required) - the noisy latent that went into the sampler step.
  • denoised_latent (LATENT, required) - the sampler's clean output for that same step.
  • donor_latent (LATENT, required) - the latent whose content you want to keep.
  • Output: a single LATENT, wired onward to your next sampling step or the VAE.

Note all three are required - there's no "leave one disconnected" trick here, because the math needs all of them. In a renoise / flip-sigmas workflow you'd capture noised_latent and denoised_latent from the sampler, and feed the latent you want to impose as the donor.

Installing it

Same pack as its siblings: SpliceTools, from AustinMroz, and it's dependency-light - no requirements.txt, no model files, just torch plus ComfyUI's own helpers. ComfyUI Manager (search SpliceTools) or:

cd ComfyUI/custom_nodes
git clone https://github.com/AustinMroz/ComfyUI-SpliceTools

Restart ComfyUI and it lives under latent → advanced in the node menu.

Where it bites

The honest limitation is that you can't always get the inputs. A lot of popular workflows don't route a sampler's noised and denoised outputs around - and if your denoised wire comes from a different step than your noised wire, the subtraction is garbage and you'll get a nonsense latent. They must be the same step's pair. The other practical note: like the rest of the pack, this is an experimental utility, so treat outputs as something to eyeball rather than a finished filter.

For the exact-version use case it's genuinely better than SpliceLatents: fewer knobs, no halos, donor texture preserved. If you're already running a custom sampler that exposes both outputs, this is the node I'd reach for first.

Categorylatent/advanced

Inputs (3)

NameTypeDefaultDescription
noised_latentLATENT
denoised_latentLATENT
donor_latentLATENT

Outputs (1)

NameTypeDescription
LATENTLATENT