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 2 days ago· 1,350
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—