Multiply transform
The volume knob for latents, step by step
- offset_optional
- TRANSFORM
Multiply transform is the simplest transform in the Advanced Latent Control pack, and secretly one of the most useful. It multiplies the denoised prediction by a number during sampling. That's it. But because it runs per step on the clean latent x0, it's a surprisingly expressive way to push contrast, punch, and saturation - and to blow things up if you're not careful.
The inputs
multiplier- the number to multiply by. Range -10 to 10, step 0.01. Values above 1 push contrast and energy; values below 1 flatten; negatives invert the latent, which is a chaotic funhouse effect more than anything you'd ship.mode-replacemultiplies the prediction outright (x * multiplier);combineaverages the multiplied and original latent ((x * multiplier + x) / 2), which softens the effect into a gentler lift. Default iscombine, and that default is right for beginners.start_at/stop_at- the step window as fractions.offset_optional- gate it to every Nth step with an OFFSET.
Why a plain multiply is worth having
Because diffusion doesn't like being pushed around, but it tolerates it for a few steps. A multiplier of 1.5 applied at every step compounds over a 20-step run and produces a blown-out, oversaturated mess - that's the classic new-user failure. Gated to a small early window (start_at: 0, stop_at: 0.1) or to every 3rd step via an offset, the same 1.5 acts like a periodic kick that the sampler mostly absorbs, giving you that extra pop without the meltdown. It's the closest thing in the pack to a "crispness" knob, and it's a great first transform to learn the timing system on.
The combine mode deserves special mention here. (1.5x + x) / 2 = 1.25x - so combine with a multiplier is a softer version of the same thing. You can use that to fine-tune how aggressive a step is without touching the timing.
The numbers game
Practical starting points, from people actually running this pack:
- Gentle lift: multiplier 1.1–1.2,
combine, full window. - Punchy start: multiplier 1.5,
start_at: 0, stop_at: 0.15. - Strobe: multiplier 1.3 with a Transform offset of
process_every: 3.
Watch the generated image, not the math. The same multiplier reads totally different depending on model, CFG, and sampler. And remember the pack's universal trap: start_at: 0, stop_at: 0 means nothing fires, so if your multiply does nothing, that's the first thing to check.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/RomanKuschanow/ComfyUI-Advanced-Latent-Control
Restart, or search "Advanced Latent Control" in ComfyUI Manager. No models, no dependencies.
One caveat worth remembering
If you multiply a latent by a big positive number (above ~2) or a negative and then try to sample it as a normal latent (e.g. via the plain Latent normalize node's sibling workflows), stable diffusion chokes on the out-of-range values - that's exactly the failure mode this pack's own Latent normalize node exists to rescue. Inside the transform system it's fine, because the values stay within the sampler's flow. But if you're reaching for a huge multiplier expecting stable output, lower your expectations, or at least lower the multiplier.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| start_at | FLOAT | 0.000–1 | — |
| stop_at | FLOAT | 0.000–1 | — |
| mode | COMBO | combine | 2 options: replace, combine |
| multiplier | FLOAT | 1.00-10–10 | — |
| offset_optionalopt | OFFSET | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TRANSFORM | TRANSFORM | — |