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

Conditioning (Blend)

Mixing two prompts into one without re-encoding

By WASasquatch·Created 3 years ago·Updated a day ago· 1,835
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

You've already encoded two prompts and now you want something in between them - not "run both and average the images," but an actual blended conditioning that captures a bit of each. That's what this node does: take two CONDITIONING inputs, pick a blend algorithm, and get one CONDITIONING out. No re-encoding, no extra CLIP pass.

How it works

conditioning_a and conditioning_b go in, blending_mode picks how they combine, and blending_strength controls how much. The mode list is deliberately varied rather than one-size-fits-all: lerp is the plain linear mix everyone expects, slerp/hslerp/bislerp are spherical-interpolation variants (the same family of math used for blending noise and latents elsewhere in ComfyUI, generally a gentler blend of high-dimensional vectors than a straight lerp), cosine interp and cuberp are other interpolation curves, add/subtract/difference/exclusion combine the two more like image blend modes than a smooth mix, and inject and random do their own thing. The tooltip is honest that blending_strength's meaning depends on which mode you picked - it's not a universal 0-to-1 mix ratio across all twelve, so expect to experiment rather than assume.

Some modes are stochastic, which is why there's a seed input - set it if you want a random-mode blend to be reproducible instead of different every run.

This is the tool for prompt morphing and soft transitions between two ideas - think "portrait of a rosebud" blended toward "portrait of a full bloom rose" at strength 0.5 to land somewhere convincingly in between, without hand-writing an in-between prompt and re-encoding it.

The inputs and outputs that matter

  • conditioning_a / conditioning_b (CONDITIONING) - the two prompts you're blending. Order can matter depending on the mode (subtract and difference are not symmetric the way lerp is).
  • blending_mode - twelve options; start with lerp if you just want a predictable straight mix, reach for slerp/hslerp/bislerp if lerp feels flat, and treat add/subtract/difference/exclusion as the more experimental, image-blend-mode-flavored options.
  • blending_strength (default 0.5, range -10 to 10) - how much of the blend to apply. The wide range past 0-1 is deliberate: values beyond 1 or below 0 push past a simple mix into extrapolation territory for modes that support it.
  • seed - only matters for stochastic modes like random; ignore it otherwise.

Single output: conditioning - wire it into your KSampler's positive or negative input exactly like any other conditioning.

How to install it

Via ComfyUI Manager: search "WAS_Extras", install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/WAS_Extras

Restart ComfyUI. No extra dependencies - this is pure tensor math on conditioning objects, nothing to download.

Common issues & troubleshooting

The blend doesn't look like "50% of each." That's expected for most of these modes - only lerp (and arguably cosine interp) behave like a literal percentage mix. Modes like difference or exclusion are combining, not averaging, so a strength of 0.5 won't read as "halfway between A and B."

Results are inconsistent between runs. You're on a stochastic mode (random is the obvious one) without pinning seed. Set it if you need reproducibility.

Pushing blending_strength past 1 breaks the image. That's overshoot, not a bug - the range goes to 10 (and down to -10) on purpose for modes that tolerate extrapolation, but most modes will start producing garbage well before you hit the extremes. Treat anything past roughly ±1.5 as experimental.

You want to blend at a specific point in the image, not the whole prompt. This node blends whole conditionings, not regions - it's not a substitute for spatial/regional prompting tools if what you actually need is different prompts in different areas of the canvas.

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.