Nodes/Advanced Latent Control/Latent add transform
ComfyUI Node

Latent add transform

Inject a reference latent into sampling

By kuschanow·Created 3 years ago·Updated 18 days ago· 23
Latent add transform
  • latent
  • offset_optional
  • TRANSFORM
start_at0.00
stop_at0.00
multiplier1.00

Latent add transform is where the Advanced Latent Control pack stops being purely geometric and starts mixing other latents into the sampling trajectory. It takes a second latent - a reference image you've encoded, say - and adds it to the denoised prediction on the active steps, like the stock LatentAdd node but executed mid-sampling instead of outside it.

The inputs

  • latent - the reference latent to add. Wire anything that outputs LATENT: an encoded image, another sampler's output, whatever. If its dimensions don't match the current prediction, the node bicubic-upscales it to fit, center-cropped.
  • multiplier - scales the whole result (x + latent, then times multiplier). Keep it near 1 to start; above ~1.5 things get loud fast.
  • start_at / stop_at - step window as fractions.
  • offset_optional - gate to every Nth step with an OFFSET.

Output is a TRANSFORM - you're building an instruction for a TSampler, TSampler Advanced, or a Transform Hijack-patched sampler, not producing a latent directly.

Why you'd use it

This is the node for "make the sampling trajectory carry this thing with it." Add a reference latent in the early steps and you've injected its structure into the foundation; the model then builds on top of it, which reads like a soft img2img without the explicit denoise dance. Add it late and you're stamping detail onto a nearly-finished image, which is a recipe for texture transfer experiments. Combined with an offset, it becomes a periodic "pulse" of the reference into the sample - a genuinely unusual effect that's hard to reproduce with stock nodes.

The author notes it works like ComfyUI's standard Latent add but adds the multiplier and, crucially, runs it inside the sampler's step schedule. The mid-sampling timing is the entire value-add over just adding latents before sampling.

What to watch out for

  • The addition is raw tensor math on a reference latent from whatever model encoded it. If your reference comes from a different model's VAE than the one you're sampling with, the values live in a different latent space and the result is likely noise soup. Keep the reference in the same latent space (same VAE family) and this behaves.
  • Adding a full-strength latent every step compounds into blown highlights. Gated to a small window or an offset, it's a nudge; ungated, it's a takeover.
  • Same pack-wide trap: start_at: 0, stop_at: 0 means the transform never fires.

Install

Standard for the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/RomanKuschanow/ComfyUI-Advanced-Latent-Control

Restart, or install "Advanced Latent Control" via ComfyUI Manager. No model downloads, no extra Python dependencies.

The 30-second version

Encode an image, wire it into latent, set multiplier: 0.5, start_at: 0, stop_at: 0.3, and plug the TRANSFORM into a TSampler. You've just done a guided regeneration that sits between img2img and pure prompt-driven output. That middle ground is this node's whole personality, and it's worth a few test runs to find where it sits in your own workflows.

Categorysampling/transforms

Inputs (5)

NameTypeDefaultDescription
latentLATENT
start_atFLOAT0.000–1
stop_atFLOAT0.000–1
multiplierFLOAT1.00-10–10
offset_optionaloptOFFSET

Outputs (1)

NameTypeDescription
TRANSFORMTRANSFORM