DiffusionGemma Song Audition Seed Fanout
Same root seed, same song — reproducible auditions every time
- candidate_1_seed
- candidate_2_seed
- candidate_3_seed
- candidate_4_seed
- seed_report_json
Reproducibility is the whole point of the DiffusionGemma music-video pipeline. You audition two to four ACE-Step song candidates, listen, lock one, and render - and the last thing you want is for a video-only tweak to silently hand you a different song on the next run. DiffusionGemma Song Seed Fanout exists so the song candidates are a pure function of one number: the root_seed.
It takes that single integer plus your production_concept, and derives the deterministic ACE song seeds - but importantly, not with some private hash only it understands. The derivation (splatstage-autodirect@1|... family of strings in seed_report_json) exactly matches the one the SplatStage Router uses, so the seeds the fanout produces and the seeds the router actually generates with are the same numbers. Preview with this node, run with the router, and you get the same candidates. That shared derivation is the feature.
What the two concepts mean for the outputs
- Audition and select: you get four zero-based audition seeds on
candidate_1_seedthroughcandidate_4_seed. Change the root seed, get four different candidates - deliberately. - Source passthrough and Joint video-safe plan: one production music seed. The node still fills all four output sockets with copies of that single seed, which reads weird until you realize it's guarding against a downstream node implying that four candidates were secretly authored. Only lane 1 is real.
In audition mode the effective count is controlled elsewhere (the shared DiffusionGemmaMusicProductionConcept sets how many candidates get generated); this node just guarantees the seeds.
Inputs and outputs
Set root_seed (default 26073001) - keep it independent of the LTX/H3 sampling seed, because music and video seeds intentionally don't share a lineage - and mirror the same production_concept the rest of the workflow uses. Outputs are the four INT seeds plus seed_report_json, which records the derivation, the root, and which audition indices were live. If you ever suspect the fanout and the router disagree, that report is where you'd see it.
Wiring and gotchas
Give the candidate seeds to the ACE-Step candidate lanes via the selector/QC path. The one beginner trap: in the non-audition concepts, don't expect outputs 2–4 to yield different songs - they're echoes by design. And don't feed the LTX sampler seed into this expecting "one seed to rule them all"; that conflation is how you end up debugging why your song changed when only your video changed. Install the pack from ComfyUI Manager (search "DiffusionGemma Prompt Builder") or git clone the repo into custom_nodes; this is lightweight control-plane code, not a model-calling node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| root_seed | INT | 260730010–9223372036854776000 | — |
| production_concept | COMBO | Source passthrough | 3 options: Source passthrough, Joint video-safe plan, Audition and select |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| candidate_1_seed | INT | — |
| candidate_2_seed | INT | — |
| candidate_3_seed | INT | — |
| candidate_4_seed | INT | — |
| seed_report_json | STRING | — |