VRGDG Music3 Seed Bank
Four Deterministic Seeds So You Stop Comparing Apples and Oranges
- seed_a
- seed_b
- seed_c
- seed_d
- notes
Every music generation workflow ends the same way: you change one caption word, get a completely different song, and can't tell if the word did it or the dice did. VRGDG Music3 Seed Bank exists to make that failure impossible. Give it a base_seed and it hands you four deterministic seed candidates - seed_a through seed_d - spread across a spacing you choose. It doesn't generate anything itself. It's discipline, packaged as a node.
This is one of the Music3 utilities in the VRGameDevGirl pack (vrgamegirl19/comfyui-vrgamedevgirl), the companion set to the LTX 2.3 / MiniMax H3 music-video builder. It plays well with the pack's Conditioning Blend node, which explicitly expects its two inputs to share a seed - the Seed Bank is how you set that up without typing the same number into four places.
How it works
Two inputs, both boring in the best way:
base_seed(default 1000) - the starting point for your A/B exploration. It's a full-width integer, so don't sweat picking a "good" one; any value works.spacing(default 101) - the offset between candidates. The default keeps candidates comfortably far apart in seed space without scattering them to the four winds. You almost never need to change it.
Outputs are seed_a, seed_b, seed_c, seed_d (each INT, wire into your sampler's seed - or into whichever node in the Music3 chain consumes a seed), plus a notes string.
The author's guidance in the node description is the whole philosophy, so it's worth repeating: keep one seed fixed while you tune parameters; change seeds only when you're exploring composition alternatives. A "better" song at a new seed isn't better - it's just different.
Why you'd bother
If you've ever burned an hour tweaking caption words and "checking" results, this is the hour-saver. The pattern:
- Lock
seed_ainto your sampler. - Change one parameter at a time - a caption field, a tuning preset, a strength value.
- Only when you're happy with the direction, try the other seeds to see if the result holds up or was a lucky roll.
This mirrors the control_after_generate discipline every ComfyUI regular eventually learns - except here the seeds are explicit outputs you can see and wire, instead of a widget that silently randomizes on you between runs.
Installing it
One install for the whole pack. ComfyUI Manager → Install Custom Nodes → search vrgamedev, or:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl.git
then pip install -r requirements.txt, restart, and hard-refresh the browser. Usual pack caveats: it's a big dependency install (TTS/LLM wheels like voxcpm and llama-cpp-python come along for the ride even though you only want seed helpers), and on Windows portable install Cython + scikit-build-core first and prefer Python 3.12.
Troubleshooting
The main "problem" people hit with this node is psychological: you pick seed_b because the first take was a miss, get a keeper, and immediately treat it as the baseline. Don't. That's exactly how you lose reproducibility - write the seed down, keep using it, and let the other candidates stay in the bank for when you genuinely want a different composition. If your A/B comparisons still feel inconsistent, check that the seed is actually reaching the sampler (an unconnected INT output is silent) and that you didn't leave the sampler's seed on randomize.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| base_seed | INT | 10000–18446744073709550000 | Starting seed for repeatable A/B exploration. |
| spacing | INT | 1011–1000000 | Offset between seed candidates. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| seed_a | INT | — |
| seed_b | INT | — |
| seed_c | INT | — |
| seed_d | INT | — |
| notes | STRING | — |