Batch Region Conditioning
Merge All Your Regional Conditioning Without the Noodle Surgery
- conditioning_inputs
- batch
Let's say you have three masks on a canvas - face, hands, background - and each one deserves its own prompt. SimpleSyrup is built around the idea that those per-region prompts travel through your graph as one ordered CONDITIONING_BATCH (the [SEP]-style structure inherited from ADetailer). The problem appears when your regions don't come from one source: maybe the face conditioning comes from one branch and the hands conditioning from another, and you want them in a single batch for a regional sampler downstream. That's this node's entire job. Give it several CONDITIONING or CONDITIONING_BATCH inputs, and it flattens them, in socket order, into one CONDITIONING_BATCH.
How it works
The batch here isn't a fancy object - it's just an ordered list, where position matters. What position means depends on the consumer downstream: SimpleSyrup's regional samplers and Compose Regional Conditioning treat entry 0 as the global prompt and each later entry as a region (mask 0 ↔ entry 1, mask 1 ↔ entry 2...), while the SEGS detailers match a batch one-to-one against SEGS order. Batch Region Conditioning preserves whatever order you wire in, because it concatenates in the order you plug sockets in. The tooltip says it plainly: "Expandable conditioning inputs flattened in socket order."
That ordering contract is also the part that bites people. If you connect your face conditioning to socket 2 and your hands conditioning to socket 1, your hands prompt lands on the face region and vice versa. Ask anyone who's used ADetailer's [SEP] feature how much fun wrong ordering is - it's the classic failure mode.
The inputs and output that matter
- conditioning_inputs (
COMFY_AUTOGROW_V3): a dynamic, expandable list of conditioning sockets. Click and drag out another wire and a new socket appears. Feed it singleCONDITIONINGvalues or existing batches - both get flattened the same way. - output
batch(CONDITIONING_BATCH): everything, in order. Wire this into a batch-aware consumer likeKSampler (Prompt by Region)orCompose Regional Conditioning(global-first convention) or a SEGS detailer's conditioning input (per-SEGS convention).
There's nothing else here. It's a Combine node for conditioning batches, no settings, no gotchas beyond ordering.
Where it fits
Typical setup: you've already got a CONDITIONING_BATCH from Encode Prompt Batch (the [SEP] text splitter) or you've built one by hand from Conditioning Batch Start + Conditioning Batch Append. This node is the merge utility for when a workflow has several batch sources - say one detector feeding a face region and another feeding a hand region, each with its own conditioning chain - and you need one combined batch before the sampler.
Install
SimpleSyrup installs as a pack, not per-node. In ComfyUI Manager, search the node pack list for SimpleSyrup and click Install, then restart ComfyUI (needs a current ComfyUI build, since the pack uses the v3 extension API). Or manually:
Set-Location ComfyUI\custom_nodes
git clone https://github.com/Artificial-Sweetener/SimpleSyrup.git
Set-Location SimpleSyrup
..\..\venv\Scripts\python.exe -m pip install -r requirements.txt
Then restart. For a Windows Portable install, run .\python_embeded\python.exe -m pip install -r .\ComfyUI\custom_nodes\SimpleSyrup\requirements.txt from the portable folder. The pack pulls in TorchLanc, Ultralytics, ONNX Runtime, and Segment Anything alongside its own runtime - normal ComfyUI installs already have PyTorch, so you only get what the pack's features actually need.
Common issues
- Wrong region gets the wrong prompt - almost always an ordering problem, not a bug. Unplug and re-plug the inputs in the exact order the masks/SEGS arrive downstream, or use
[SEP|name]labels upstream so you can read which batch entry is which. - Node doesn't appear after install - SimpleSyrup requires the ComfyUI v3 extension API, so an outdated ComfyUI build hides all of its nodes, not just this one. Update ComfyUI first.
It's a boring utility node, and that's the point. When regional workflows start to sprawl, this is the part that keeps the graph readable.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning_inputs | COMFY_AUTOGROW_V3 | Expandable conditioning inputs flattened in socket order. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| batch | CONDITIONING_BATCH | Conditioning batch containing all input entries in order. |