A source node that lives next to your booleans (typically inside a
subgraph) and relays them to Group/Node Controllers elsewhere. It reads
booleans in its own graph (always reliable) and delivers the result the
safe way, sidestepping the flaky cross-boundary boolean reads.
Fully automatic: each tick it walks its patch output to discover the
Controllers it feeds - up out of its subgraph, across at the root, and
down into sibling/nested subgraphs - pulls their target labels, and
auto-creates one boolean input per target (no manual signal naming). It
resolves those booleans locally and pushes the result onto every
Controller on the lane, so one Wired Controller fans out to many
(Group and Node, mixed). A patched signal governs its target and
overrides ALL, just like a direct boolean; a target's own direct boolean
wins for that one target.
Two bindings (wire tried first, channel is the fallback):
- wire: WiredController `patch` output -> Controller `patch` input,
followed across boundaries by a robust output walk (link map +
floating links + reverse output-proxy lookup; host matched by id and
identity; descends into sibling subgraphs).
- channel: name-keyed global registry, no traversal, any nesting depth.
Controllers gain a `patch` input and a `channel` field (both inert until
connected). The bus socket is named "patch" (SWITCHBOARD_PATCH) to fit
the Switchboard theme; older saved nodes are normalised on load. Boolean
resolution refactored into shared module functions. Adds a Wired
Controller diagnostics menu. README + example_workflows notes updated.
1.8 KiB
Example 1 - Group Controller
One boolean gates a hi-res pass - both the work and the routing.
A single Value on Boolean (true/false) is the master switch. Its
boolean output fans out to two places at once:
- → Group Controller (
HighResinput) - governs the HighRes group.true= group enabled (the hi-res nodes run)false= group disabled using its↳ disable asmode (here bypass, so the graph still runs, just skipping that group)
- → Boolean Switch (
booleaninput) - picks which image reaches Preview Image:on_true= the HighRes outputon_false= the plain VAE Decode (Tiled) output
So flipping the one boolean keeps everything in sync: true runs the hi-res
group and previews its result; false bypasses the group (saving the
compute) and previews the base image instead. No node is left running with
its output ignored, and nothing is previewed that wasn't actually produced.
Key idea: the boolean wired into a controller target governs that target -
it overrides the target's manual toggle and the master ALL toggle. The
↳ disable as selector still decides how it turns off (bypass vs mute).
Two fields not shown in the screenshot
Newer versions add these to every Controller; this example doesn't use them, so leave them as-is:
↦ patch(patch input, top of the node) - accepts a Wired Controller's output. Unwired here = no effect.channel(text field) - subscribes the Controller to a Wired Controller by name. Blank here = no subscription.
Both are only for driving this Controller from a Wired Controller (see Example 3). Empty/unwired, they do nothing and the example behaves exactly as pictured.
Every node here ships with Switchboard - no other custom nodes needed.