ComfyUI Node

VRGDG_SetGroupStateMulti

A mute/bypass dashboard for up to twelve workflow groups

By vrgamegirl19·Created about a year ago·Updated a day ago· 742
VRGDG_SetGroupStateMulti
  • signal
  • signal_opt
◄group_count1►
◄group_actionmute►
◄auto_queue_nextfalse►
◄queue_delay_seconds0.0►
◄node_ids_csv►
◄group_targets_json[]►
◄group_1<none>►
◄group_1_actionmute►
◄group_2<none>►
◄group_2_actionmute►
◄group_3<none>►
◄group_3_actionmute►
◄group_4<none>►
◄group_4_actionmute►
◄group_5<none>►
◄group_5_actionmute►
◄group_6<none>►
◄group_6_actionmute►
◄group_7<none>►
◄group_7_actionmute►
◄group_8<none>►
◄group_8_actionmute►
◄group_9<none>►
◄group_9_actionmute►
◄group_10<none>►
◄group_10_actionmute►
◄group_11<none>►
◄group_11_actionmute►
◄group_12<none>►
◄group_12_actionmute►

If you've ever stared at a ComfyUI graph so dense you can't see the wires, you already know what this node is for. VRGDG_SetGroupStateMulti is a batch control panel: give it a list of workflow groups and it mutes, bypasses, or activates them - up to twelve at once, from inside the graph, at runtime. It's the same idea as rgthree-comfy's Fast Groups Muter and Bypasser, built directly into this pack so its multi-scene workflows can rewire themselves between passes without you clicking.

The mechanism

The node hooks into ComfyUI's node-state API. In the UI, right-clicking a node and choosing Mute or Bypass is a manual toggle; this node does the same thing programmatically when it executes. The signal input (type *, so anything) exists purely to trigger execution and to let the workflow control when the state change happens - you feed it a value from a finished stage, and the group flips at that point. It echoes the signal back out of signal_opt so you can keep the chain going.

The key inputs:

  • group_count - how many group rows you want (1–12).
  • group_action - the default action for groups without their own override: active, mute, or bypass.
  • group_1 … group_12 with matching group_1_action … group_12_action - the per-group targets and actions. The group names are strings; ComfyUI group titles go here.
  • node_ids_csv and group_targets_json - the escape hatches. A comma-separated list of node IDs, or a JSON blob of targets, for when you want to hit individual nodes rather than named groups.
  • auto_queue_next with queue_delay_seconds - if on, the node re-queues the workflow after flipping state, with an optional delay. That's what turns a single run into a self-advancing multi-scene render: scene 1 finishes, this node mutes scene 1's group, activates scene 2's, and re-queues.

The workflow it's built for

This is the orchestration heart of the pack's music-video pipeline. The workflow is one big graph where each scene is a group; after rendering scene 1 it needs to run scene 2 without a human walking over and clicking. auto_queue_next plus the group states is how that loop stays in motion for hours. If you're not running that pipeline, this is still a genuinely handy utility - a single node that can bypass half your graph on demand is worth having around.

Install and the honest caveats

cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl

or ComfyUI Manager → "vrgamedev", restart. Requirements: kornia, librosa, imageio.

The trap is figuring out what to put in the group name fields - group titles, not node titles, and they must match exactly or the flip silently does nothing. If your group is called "Scene 2 (v3)" and you type "Scene 2", you'll sit through a run wondering why nothing changed. Check the node's behavior with group_count small and auto_queue_next off before you trust it with a 3-hour batch. And remember the pack's README predates most of these nodes - there's no manual for the fields, so the workflow JSONs and the author's tutorial are your real documentation.

CategoryVRGDG/General

Inputs (31)

NameTypeDefaultDescription
signal*—
group_countINT11–12—
group_actionCOMBOmute3 options: active, mute, bypass
auto_queue_nextBOOLEANfalse—
queue_delay_secondsFLOAT0.00–60—
node_ids_csvSTRING—
group_targets_jsonSTRING[]—
group_1STRING<none>—
group_1_actionCOMBOmute3 options: active, mute, bypass
group_2STRING<none>—
group_2_actionCOMBOmute3 options: active, mute, bypass
group_3STRING<none>—
group_3_actionCOMBOmute3 options: active, mute, bypass
group_4STRING<none>—
group_4_actionCOMBOmute3 options: active, mute, bypass
group_5STRING<none>—
group_5_actionCOMBOmute3 options: active, mute, bypass
group_6STRING<none>—
group_6_actionCOMBOmute3 options: active, mute, bypass
group_7STRING<none>—
group_7_actionCOMBOmute3 options: active, mute, bypass
group_8STRING<none>—
group_8_actionCOMBOmute3 options: active, mute, bypass
group_9STRING<none>—
group_9_actionCOMBOmute3 options: active, mute, bypass
group_10STRING<none>—
group_10_actionCOMBOmute3 options: active, mute, bypass
group_11STRING<none>—
group_11_actionCOMBOmute3 options: active, mute, bypass
group_12STRING<none>—
group_12_actionCOMBOmute3 options: active, mute, bypass

Outputs (1)

NameTypeDescription
signal_opt*—