Nodes/RES4LYF/LatentPhaseMagnitudeOffset
ComfyUI Node Runs on cloud

LatentPhaseMagnitudeOffset

Nudge a latent's structure and texture, per channel

By ClownsharkBatwing·Created 2 years ago·Updated 18 days ago· 1,222
LatentPhaseMagnitudeOffset
  • latent_0_batch
  • phase_luminositys
  • phase_cyan_reds
  • phase_lime_purples
  • phase_pattern_structures
  • magnitude_luminositys
  • magnitude_cyan_reds
  • magnitude_lime_purples
  • magnitude_pattern_structures
  • LATENT
phase_luminosity1.000
phase_cyan_red1.000
phase_lime_purple1.000
phase_pattern_structure1.000
magnitude_luminosity1.000
magnitude_cyan_red1.000
magnitude_lime_purple1.000
magnitude_pattern_structure1.000
latent_0_normalfalse
latent_out_normalfalse

This is the additive member of RES4LYF's phase/magnitude family. Where LatentPhaseMagnitudeMultiply scales a latent channel's structure and texture by a factor, LatentPhaseMagnitudeOffset shifts it by a fixed amount instead - same eight per-channel dials (phase and magnitude, across luminosity, cyan-red, lime-purple, and pattern-structure), different arithmetic underneath.

The distinction is worth knowing before you touch it: multiplying is proportional (a channel that's already near zero barely moves even at a big multiplier), while adding is not (it shifts everything by the same amount regardless of where it started). If you want a consistent nudge across very different latents, offset behaves more predictably than multiply does.

How it works

Same four-channel phase/magnitude decomposition as the rest of the family. Each of the eight phase_*/magnitude_* floats gets added to its corresponding channel's phase or magnitude value. latent_0_normal and latent_out_normal control normalization in and out.

One thing worth flagging plainly: every one of these fields ships with a default of 1, the same defaults as the Multiply node's - which is a sensible no-op for a multiplier but not obviously one for an offset. Don't assume 1 means "no change" here the way it does on the Multiply sibling; if you want a genuine no-op baseline to compare against, try 0 first.

The inputs and outputs that matter

  • latent_0_batch - the latent you're adjusting.
  • phase_luminosity, phase_cyan_red, phase_lime_purple, phase_pattern_structure - additive shifts to each channel's structural component.
  • magnitude_luminosity, magnitude_cyan_red, magnitude_lime_purple, magnitude_pattern_structure - additive shifts to each channel's texture/energy component.
  • latent_0_normal / latent_out_normal (default false) - normalization toggles.
  • Optional SIGMAS variants of each float, for scheduling the offset across steps rather than holding it fixed.
  • Output: LATENT - the shifted latent.

How to install it

Via ComfyUI Manager, search "RES4LYF" and install. Or manually from ComfyUI/custom_nodes:

git clone https://github.com/ClownsharkBatwing/RES4LYF/
cd RES4LYF
pip install -r requirements.txt

Activate your venv first if you have one; on portable builds, use python_embedded\Scripts\pip.exe instead of pip. Restart ComfyUI once it's installed.

Common issues & troubleshooting

Left everything at default and the image looks wrong. See above - the defaults here are all 1, inherited from the same schema as the Multiply and Power siblings, and there's no guarantee that's a no-op for an additive node. Set every field to 0 first to establish what "unchanged" actually looks like on your workflow, then move from there.

Small offsets do nothing, big ones blow things out. Phase and magnitude aren't on an intuitive human scale - expect to sweep by whole units rather than fractions to see an effect, and expect large offsets to introduce noise or contrast artifacts rather than a clean shift, since you're pushing raw frequency-domain values around directly.

You wanted proportional scaling instead. That's LatentPhaseMagnitudeMultiply - reach for it if you want a channel that's already near zero to stay near zero rather than jump by a fixed amount.

No community documentation exists for this node. It's obscure even by this pack's standards, with nothing written up outside the parameter names themselves. Change one channel at a time on a fixed seed and compare against a 0-offset baseline rather than looking for a guide.

CategoryRES4LYF/latents

Inputs (19)

NameTypeDefaultDescription
latent_0_batchLATENT
phase_luminosityFLOAT1.000-10000–10000
phase_cyan_redFLOAT1.000-10000–10000
phase_lime_purpleFLOAT1.000-10000–10000
phase_pattern_structureFLOAT1.000-10000–10000
magnitude_luminosityFLOAT1.000-10000–10000
magnitude_cyan_redFLOAT1.000-10000–10000
magnitude_lime_purpleFLOAT1.000-10000–10000
magnitude_pattern_structureFLOAT1.000-10000–10000
latent_0_normalBOOLEANfalse
latent_out_normalBOOLEANfalse
phase_luminositysoptSIGMAS
phase_cyan_redsoptSIGMAS
phase_lime_purplesoptSIGMAS
phase_pattern_structuresoptSIGMAS
magnitude_luminositysoptSIGMAS
magnitude_cyan_redsoptSIGMAS
magnitude_lime_purplesoptSIGMAS
magnitude_pattern_structuresoptSIGMAS

Outputs (1)

NameTypeDescription
LATENTLATENT