Nodes/Skoogeer-Noise/Conditioning (Frequency Merge)
ComfyUI Node

Conditioning (Frequency Merge)

Rebuild Your Prompt Embedding, With Gain

By ttulttul·Created 8 months ago·Updated 2 months ago· 14
Conditioning (Frequency Merge)
  • low_pass
  • high_pass
  • CONDITIONING
low_gain1.00
high_gain1.00

Conditioning embeddings have a frequency structure too, and once you've split one into low- and high-frequency bands, you eventually need to put it back together. Conditioning (Frequency Merge) is the reassembly step: it takes a low-pass and a high-pass conditioning band and recombines them into a single CONDITIONING - with a gain knob on each band so the round trip doesn't have to be lossless.

The workflow it completes looks like this: take your conditioning from CLIP Text Encode, split it into low/high bands with the pack's Conditioning (Frequency Split), do something to one of the bands (boost it, mute it, mix in another prompt's band), then merge. The gains are the whole point. In frequency terms, the low band is the broad semantic gist and the high band is the fine-grained token detail - so high_gain > 1 leans on the details, low_gain > 1 leans on the overall meaning. You're essentially doing an EQ on your prompt embedding.

How it works

For each conditioning entry it computes low_pass * low_gain + high_pass * high_gain on the embedding tensor. The pooled_output (the global embedding most modern encoders produce) gets the same treatment, so nothing is left uncombined. Lengths of the two input lists must match - each low band pairs with its corresponding high band - and the metadata dict is copied through so your conditioning stays otherwise intact.

The inputs that matter

  • low_pass - the low-frequency band from Conditioning (Frequency Split).
  • high_pass - the high-frequency band.
  • low_gain / high_gain - multipliers, range −5 to 5. 1 = leave that band alone.

Output: a single CONDITIONING for your sampler.

Installing it

Part of Skoogeer-Noise. Manager → search "Skoogeer-Noise", or:

cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/Skoogeer-Noise

Restart ComfyUI. Deps are torch, numpy>=1.26, einops, pyyaml>=6.0.3 - no model downloads.

Common gotchas

If the split and merge lengths disagree, the node errors - they must be the same count of conditioning entries, which they will be if you split once and merge the same output back. The subtler trap is gain abuse: embeddings are tuned to a specific scale, and a low_gain or high_gain of 3 pushes the result far outside where the model expects it, which can make prompts behave erratically or degrade to mush. Gains of 0.5–1.5 are the sane playground. And be aware this is a whole-prompt EQ, not a per-token edit - the "frequency" here is along the token dimension, so it shifts global character, not individual words.

Categoryconditioning/filter

Inputs (4)

NameTypeDefaultDescription
low_passCONDITIONINGLow-frequency conditioning list produced by the split node.
high_passCONDITIONINGHigh-frequency conditioning list to recombine.
low_gainFLOAT1.00-5–5Multiplier for the low-pass band before merging.
high_gainFLOAT1.00-5–5Multiplier for the high-pass band before merging.

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING