Nodes/was-node-suite-comfyui/Conditioning (Blend)
ComfyUI Node Runs on cloud

Conditioning (Blend)

One subject that's genuinely between two prompts

By WASasquatch·Created 4 years ago·Updated a day ago· 1,864
Conditioning (Blend)
  • conditioning_a
  • conditioning_b
  • conditioning_c
  • conditioning_d
  • conditioning_e
  • conditioning_f
  • conditioning_g
  • conditioning_h
  • conditioning_i
  • conditioning_j
  • conditioning_k
  • conditioning_l
  • conditioning_m
  • conditioning_n
  • conditioning_o
  • conditioning_p
  • conditioning_q
  • conditioning_r
  • conditioning_s
  • conditioning_t
  • conditioning_u
  • conditioning_v
  • conditioning_w
  • conditioning_x
  • conditioning_y
  • conditioning_z
  • conditioning
◄blending_mode▾►
◄blending_strength0.500►
◄seed0►

Combining two prompts in ComfyUI usually means concatenation - Conditioning (Combine) glues them together and the model tries to draw both things at once. You get a picture containing a cat and a dog. Conditioning (Blend) does the other thing: it mixes the two embeddings arithmetically so you get something in between them. Same latent arithmetic the "prompt interpolation" crowd has been doing by hand for two years, in one node with twelve formulas.

The mechanism, and why it needs a pooled output

It reads the embedding and the pooled output from each conditioning, applies the chosen formula to both, renormalises, and hands back one conditioning carrying the blended pair. Pooled output is not optional here - it's the part SDXL and Flux-style models use for global conditioning, and a plain SD 1.5 text encode doesn't have one. Feed this node an SD 1.5 encode and it raises, telling you the input carried no pooled output. If you're on SDXL, Flux, or anything else with a pooled vector, you're fine.

Only the first entry of each conditioning is read. That means you feed it plain text encodes - not something that's already been concatenated, area-masked or scheduled. It's a blender, not a merger.

conditioning_a is what you blend away from, conditioning_b is what you blend towards, and the optional slots conditioning_c through conditioning_z chain on: each further slot is blended onto the result of everything before it, with the same mode and strength. The interface reveals the next slot as you fill the current one, so you never see the alphabet coming until you're deep in it.

Which mode, which strength

blending_mode is where the fun and the confusion live. lerp is the straight mix and the one to reach for first - at blending_strength 0.5 you're halfway between the two prompts. bislerp and slerp are the same straight mix here, whatever the names suggest. cosine interp and cuberp are that mix with the ends held longer. add balances the pair, inject layers the newer prompt on top, and difference and exclusion keep only what the two disagree on, which pushes the result away from both - genuinely useful for wrecking a too-obvious prompt, genuinely useless if you wanted a clean midpoint.

blending_strength runs −10 to 10 and every mode reads it its own way. Watch the direction: with lerp and the straight mixes, 0.0 takes the next prompt and 1.0 keeps the result so far; add and cosine interp run the other way round. Values outside 0–1 push past either prompt, which is how you get caricatures of both.

seed only does anything for the random mode, which varies the mix per element. Set it above 0 and the run repeats; leave it at 0 and the random source is untouched, so random will differ run to run. Every other mode ignores the seed entirely, and the node leaves the global torch seed alone when it's 0 - no silent side effects on the rest of your graph.

Installing it

Part of WAS Node Suite v3 (MIT, WASasquatch; 468 nodes, one of the original big ComfyUI packs), installed as a pack:

cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git

Or ComfyUI Manager, searching WAS Node Suite v3. Needs ComfyUI 0.14.0+ and Python 3.10+. The pack installs no Python packages and downloads nothing - worth saying out loud, because the top search results for it are v2-era "Cannot import … module" threads about OpenCV and numba, and none of that survives into v3. If a node from the pack is missing from your menu, look at the feature groups in <ComfyUI user dir>/was-node-suite/config.yaml before you go reinstalling; eight of the twenty-two groups ship off.

What it's good for, and the trap

Character-and-style mashing without a LoRA: blend a portrait prompt toward a style prompt and you get one subject with both properties, rather than a prompt fight. It's also the cheap way to find the midpoint of two concepts before you commit to training anything, and to soften a prompt whose grip on the composition is too strong.

The trap is expecting the blend to be free. difference and exclusion produce embeddings that are, on inspection, not a prompt at all; the model will still render something, and it will usually be mush. That's on you, not on the node. Stick to lerp at 0.2–0.8 and you'll get results that read as intentional.

CategoryWAS Suite/Conditioning

Inputs (29)

NameTypeDefaultDescription
conditioning_aCONDITIONINGThe prompt blended away from. Only its first entry is read, so feed it a plain text encode rather than a combined or scheduled conditioning.
conditioning_bCONDITIONINGThe prompt blended towards. Only its first entry is read, as with conditioning_a.
blending_modeCOMBOWhich formula combines a prompt with the result so far. `lerp` is the straight mix to reach for first; other modes layer, balance or subtract the pair instead.
blending_strengthFLOAT0.500-10–10How strongly each blend leans, which every mode reads its own way. 0.5 is an even mix. With `lerp` and the other straight mixes, 0.0 takes the next prompt and 1.0 keeps the result so far; `add` and `cosine interp` run the other way round. Values outside 0 to 1 push past either prompt.
seedINT00–18446744073709550000Seed for the `random` blending mode, so a run can be repeated. 0 leaves the random source as it was, which makes `random` differ from run to run. Every other mode ignores this.
conditioning_coptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_doptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_eoptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_foptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_goptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_hoptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_ioptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_joptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_koptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_loptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_moptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_noptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_ooptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_poptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_qoptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_roptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_soptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_toptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_uoptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_voptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_woptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_xoptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_yoptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.
conditioning_zoptCONDITIONINGA further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled.

Outputs (1)

NameTypeDescription
conditioningCONDITIONINGThe blended prompt, as a one-entry conditioning carrying the mixed embedding and pooled output. Anything else the inputs carried, an area, a mask, a control hint, is not passed on.