π Dynamic Splitter
Broadcast One Value to 32 Outputs β and Mute Any of Them
- input
- out_1
- out_2
- out_3
- out_4
- out_5
- out_6
- out_7
- out_8
- out_9
- out_10
- out_11
- out_12
- out_13
- out_14
- out_15
- out_16
- out_17
- out_18
- out_19
- out_20
- out_21
- out_22
- out_23
- out_24
- out_25
- out_26
- out_27
- out_28
- out_29
- out_30
- out_31
- out_32
- log
Dynamic Road routes N inputs down to one. π Dynamic Splitter is the mirror image: it takes one input and fans it out to up to 32 outputs, with each output independently switchable. Same data, many destinations, per-lane control. It's the node for "same image into five different processors, but I don't always want all five running."
How it works. One input (typed *) in, up to 32 out_N outputs out, all of them carrying the same value. The outputs are managed by JS - they appear as you connect them, and each one gets a label and an active/inactive toggle. The per-output on/off state lives in a config_json STRING (a JSON array, default []), so you can also drive it from data if you want.
The interesting mechanic is the disabled state. A disabled output doesn't emit None - it emits an ExecutionBlocker. That's the engine's clean-stop signal: everything downstream of that output is halted without raising an error, while the rest of the graph runs normally. So muting an output genuinely stops that whole branch from executing, rather than feeding it an empty value and letting it crash or silently no-op. This is the polite version of the "disable a branch" problem, and it's worth knowing the difference: None downstream often causes a type error; an ExecutionBlocker just stops.
Outputs. 32 out_N wildcard outputs plus a log STRING that records which lanes were active and their labels. If a lane is disabled you'll see it in the log, which is your first debugging move when a branch is mysteriously dark.
Where people get burned: the config_json is the state of truth for toggles, and it's easy to edit it into an invalid state - malformed JSON gets swallowed (the code falls back to []), which turns every output on. If you hand-edit it, keep it valid JSON. And remember there's no partial-type magic here: every output is *, so downstream nodes still need to accept the actual type you're broadcasting.
Install. ComfyUI Manager β search "Orion4D_MetaNode", or clone https://github.com/orion4d/Orion4D_MetaNode into custom_nodes/ and restart. Category: Orion4D_MetaNode/Routing. No extra dependencies.
If you've ever wanted to A/B two post-processing chains fed from the same image without unplugging half the graph, this is the node. Broadcast once, mute freely.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| input | * | β | |
| config_json | STRING | [] | β |
Outputs (33)
| Name | Type | Description |
|---|---|---|
| out_1 | * | β |
| out_2 | * | β |
| out_3 | * | β |
| out_4 | * | β |
| out_5 | * | β |
| out_6 | * | β |
| out_7 | * | β |
| out_8 | * | β |
| out_9 | * | β |
| out_10 | * | β |
| out_11 | * | β |
| out_12 | * | β |
| out_13 | * | β |
| out_14 | * | β |
| out_15 | * | β |
| out_16 | * | β |
| out_17 | * | β |
| out_18 | * | β |
| out_19 | * | β |
| out_20 | * | β |
| out_21 | * | β |
| out_22 | * | β |
| out_23 | * | β |
| out_24 | * | β |
| out_25 | * | β |
| out_26 | * | β |
| out_27 | * | β |
| out_28 | * | β |
| out_29 | * | β |
| out_30 | * | β |
| out_31 | * | β |
| out_32 | * | β |
| log | STRING | β |