Latent add transform
Inject a reference latent into sampling
- latent
- offset_optional
- TRANSFORM
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: 0means 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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — | |
| start_at | FLOAT | 0.000–1 | — |
| stop_at | FLOAT | 0.000–1 | — |
| multiplier | FLOAT | 1.00-10–10 | — |
| offset_optionalopt | OFFSET | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TRANSFORM | TRANSFORM | — |