Nodes/comfyui_bmab/BMAB Integrator
ComfyUI Node

BMAB Integrator

Model, clip, prompt, CLIP skip and prompt-weighting dialect, all in one node

By portu-sim·Created 2 years ago·Updated 8 months ago· 124
BMAB Integrator
  • model
  • clip
  • vae
  • context
  • seed_in
  • latent
  • image
  • BMAB bind
stop_at_clip_layer-2
token_normalization
weight_interpretation
prompt
negative_prompt

This is the front door for a BMAB pipeline on SD 1.5 or SDXL - the node that everything else in the pack depends on existing somewhere upstream. Every BMAB sampler and detailer node (KSampler, Face Detailer, Person Detailer, Zoom Out, Square, and the rest) works off a single bind wire instead of separate model/clip/vae/seed connections at each step, and this is where that bind gets created. Hand it your model, clip, vae, and prompt, and it hands back one bundle that flows through the entire rest of your graph.

What sets it apart from BMAB Flux Integrator

BMAB ships two Integrators, and the difference between them is a genuinely useful map of what changed between SD1.5/SDXL and Flux. This node - the SD1.5/SDXL one - carries three fields the Flux Integrator doesn't have at all:

  • stop_at_clip_layer (-24 to -1, default -2) - this is CLIP skip, under its ComfyUI-native name. Default -2 matches the community convention for anime-family SDXL checkpoints (Illustrious, Pony, NoobAI). Worth knowing: SDXL's own text encoders already condition on the penultimate CLIP layer by default before this field does anything, so -2 here is largely "don't accidentally set it to -1," not a strong quality dial the way it can be on SD 1.5.
  • token_normalization (none/mean/length/length+mean) - how token-level prompt weights get rebalanced across the sequence when you use weighted prompt syntax.
  • weight_interpretation (original/sdxl/comfy/A1111/compel/comfy++/down_weight) - which prompt-weighting dialect BMAB parses your prompt with. If you're used to A1111-style (word:1.3) emphasis syntax and your weighting isn't behaving how you expect in ComfyUI, this is very likely the field to check - different dialects interpret the same bracket syntax with different math underneath.

There's also a negative_prompt field here, which the Flux Integrator lacks entirely - negative prompts are a meaningful lever on SD1.5/SDXL's classifier-free guidance in a way they generally aren't on Flux's guidance-distilled sampling.

The rest of the required inputs

model, clip, vae are your checkpoint's three components from whatever loader feeds them upstream. context is a required input of BMAB's own CONTEXT type - the README doesn't spell out its producer, so confirm something in your graph actually emits one before wiring this node; it isn't optional. prompt and negative_prompt are your two text fields.

The optional inputs

seed_in (a SEED-typed input - pairs with BMAB Seed Generator if you want one seed governing your whole pipeline), latent (start from an existing latent instead of an internally-generated one), and image (seed the pipeline with an existing image for img2img-style work). Output is a single bind.

Installing it

ComfyUI Manager: search comfyui_bmab, install, restart. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/portu-sim/comfyui_bmab.git
cd comfyui_bmab
pip install -r requirements.txt

plus comfyui_controlnet_aux and ComfyUI_IPAdapter_plus, the two companion packs the README lists as needed for the pack overall.

Where people get stuck

Same trap as its Flux sibling: everything downstream needs the bind this node produces, so if you're used to wiring model/clip/vae into each node individually, expect to rethink that here - one Integrator, one bind, threaded everywhere. The weight_interpretation field is the other genuine landmine: if you copy a prompt with A1111-style emphasis weights from somewhere else and the emphasis looks wrong or absent, check this field is actually set to match the syntax you're using rather than assuming it's universal.

CategoryBMAB/sampler

Inputs (12)

NameTypeDefaultDescription
modelMODEL
clipCLIP
vaeVAE
contextCONTEXT
stop_at_clip_layerINT-2-24–-1
token_normalizationCOMBO4 options: none, mean, length, length+mean
weight_interpretationCOMBO7 options: original, sdxl, comfy, A1111, compel, comfy++, +1
promptSTRING
negative_promptSTRING
seed_inoptSEED
latentoptLATENT
imageoptIMAGE

Outputs (1)

NameTypeDescription
BMAB bindBMAB bind