Nodes/OmniNodes/Latent Noise Inject 🌊
ComfyUI Node

Latent Noise Inject 🌊

Inject Noise Straight Into the Latent (Yes, On Purpose)

By TensorVizionΒ·Created 3 months agoΒ·Updated about 8 hours agoΒ· 0
Latent Noise Inject 🌊
  • latent
  • latent
β—„noise_typeβ–Ύβ–Ί
β—„blend_modeβ–Ύβ–Ί
β—„strength0.10β–Ί
β—„seed0β–Ί
β—„channel_maskallβ–Ί

Noise is usually the thing diffusion models spend the whole run removing. Latent Noise Inject does the opposite on purpose: it adds controlled, seedable noise directly to a latent tensor, before sampling. If that sounds backwards, it is - and that's exactly what makes it useful for a handful of specific jobs. The mental model: you're not adding visible static, you're nudging the latent off its current state so the sampler has something new to work with.

How it works

Four noise types, three blend modes, one strength.

  • noise_type - gaussian (the standard, smooth), uniform (flat distribution), perlin (approximate structured noise - bands and blobs instead of grain), salt_pepper (sparse extreme spikes).
  • blend_mode - add (shifts values up), multiply (scales - zero stays zero, so it's effectively a per-position dampener), lerp (blends the latent toward the noise by strength, the gentlest option).
  • strength (0–2, default 0.1) - how much noise. Small numbers here go a long way; latent values live in a tight range, so 0.1 is already visible.
  • seed - makes the noise reproducible, which matters when you want to compare workflows across runs.
  • channel_mask - a comma-separated list of channels to target (0,2), or all. Lets you corrupt one channel and leave the rest alone.

What it's actually for

Three honest uses:

  1. Variation without a new seed. Take a latent you like, inject a little Gaussian at low strength, and sample - you get a variation that's related to the original instead of a completely different roll. It's a cheaper, more controllable cousin of re-rolling the seed.
  2. Creative glitch/structured noise. Perlin noise injected into a region (mask it first) gives you controlled texture the sampler will interpret and run with. This is the latent-space analog of Image Noise Inject in the pack - same idea, but operating pre-decode.
  3. Robustness testing. If you're building an audio-reactive or batch workflow, injecting noise at increasing strengths tells you how much perturbation your pipeline tolerates before output falls apart.

What it is not: a way to add film grain (that's a pixel-space job - the pack's Image Noise Inject is the right tool), or a replacement for the sampler's own noise. You're modifying an already-sampled latent, so keep strength low and expectations lower.

Install

No dependencies beyond ComfyUI's bundled stack:

cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/OmniNodes

Restart and find it under TensorVizion/Latent (or ComfyUI Manager, search "OmniNodes"). The [OmniNodes] βœ… Loaded terminal line confirms it registered.

Troubleshooting

  • Output is unrecognizable static. Strength too high. Latent space is sensitive - back it off to 0.05–0.1 and let the sampler recover.
  • Nothing changes. You're injecting into all channels at a strength the sampler washes out. Raise strength or target a specific channel via channel_mask.
  • Can't reproduce a run. The seed is the culprit - every other input identical with a different seed gives different noise. If you want reproducibility, fix the seed; if you want variety, randomize it.

It's a niche tool in a pack full of niche tools, but the "nudge a latent sideways" move is one of the underrated creative techniques in ComfyUI. Once you realize you can perturb the compressed representation directly, a bunch of workflows you'd otherwise build with img2img get simpler.

CategoryTensorVizion/Latent

Inputs (6)

NameTypeDefaultDescription
latentLATENTβ€”
noise_typeCOMBO4 options: gaussian, uniform, perlin, salt_pepper
blend_modeCOMBO3 options: add, multiply, lerp
strengthFLOAT0.100–2β€”
seedINT00–4294967295β€”
channel_maskSTRINGallβ€”

Outputs (1)

NameTypeDescription
latentLATENTβ€”