DiffusionGemma LTX Sync-Safe Audio Guide
The soundtrack LTX hears vs. the one you actually keep — on purpose
- final_audio
- vocal_stem
- conditioning_audio
- final_audio
- conditioning_sha256
- guide_report_json
- status
- ready
Here's the tension at the heart of the LTX music-video workflow: LTX-2.x is an audio-aware video model - it generates video conditioned on audio it's given - but you don't want your pristine final soundtrack altered just because it had to be fed into a sampler. DiffusionGemma LTX Audio Guide is the node that separates those two fates. It takes your final soundtrack, produces a conditioning version that LTX hears, and passes the original through untouched for the final mux.
The workflow intent is subtle and worth stating plainly: the selected, hash-locked song excerpt stays the real soundtrack of your video. LTX gets a separate timing-identical guide - Audio-VAE encoded with a zero noise mask and fed to both LTX sampling stages - so the video's motion can follow the measured excerpt while the original waveform is never replaced by the guide. This node is where that guide gets made.
The three modes
full_mix- an identity path: the conditioning audio is the final mix. No separation, no transformation. Use it when you don't need sync protection and just want LTX to hear exactly what you'll publish.sync_safe(default) - the interesting one. It retains timing and center/vocal information while applying only lightweight transient softening, the description calls it "center emphasis and lightweight transient softening." The goal is to keep LTX's articulation and beat-following cues intact while taking the edge off transients that make synced video wobble or smear.vocal_only- conditions LTX purely on an aligned vocal stem. This mode requires a connectedvocal_stem; without one it fails closed with anExecutionBlockerrather than guessing. It's for when you want the video's lip/body motion driven by voice alone while the full mix stays the soundtrack.
Inputs and outputs that matter
Inputs are final_audio (the pristine selected soundtrack), mode, and the lazy optional vocal_stem. Outputs:
conditioning_audio- what LTX gets.final_audio- the untouched original, passed through unchanged for the final mux.conditioning_sha256- hash of the guide.final_audiois preserved with its own hash recorded in the report; you can verify the pass-through is genuinely byte-identical.guide_report_json,status,ready.
Because vocal_stem is lazy, a stem separator sitting upstream isn't evaluated unless you actually pick vocal_only - that's the "lazy" pattern this pack uses everywhere to keep dormant branches cheap.
How it sits in the graph
In the music-video production flow: the song is generated or uploaded → auditioned and locked by the audio candidate selector → the locked pristine excerpt becomes both final_audio (to mux) and the input here. This node's conditioning_audio feeds LTX's conditioning, while final_audio sails past untouched. The A2V influence on the LTX side stays neutral at 1.0 by default and should be tested cautiously with the same locked song and video seed - that's a separate sampler control, but it's the dial that decides how hard the guide actually drives the video.
Installing it
Part of the exportAnything/ComfyUI-DiffusionGemmaPromptBuilder pack, under prompt/diffusiongemma/audio-production:
cd ComfyUI/custom_nodes
git clone https://github.com/exportAnything/ComfyUI-DiffusionGemmaPromptBuilder
or search DiffusionGemma Prompt Builder in ComfyUI Manager and restart. Pure CPU audio-signal work (hashing, light transforms) - no extra models for full_mix/sync_safe. vocal_only needs a vocal stem from a separator like Demucs (the pack's full workflows use comfyui_fill-nodes for Hybrid Demucs separation), which is a real model download if you go that route.
Common issues
- "vocal_only LTX guidance requires a connected vocal stem." That's the blocker working as designed - connect a stem or switch to
sync_safe/full_mix. - The final soundtrack isn't what you locked. Check that the audio path to your mux comes from this node's
final_audiooutput (or upstream of it), not from theconditioning_audiolane. The hashes inguide_report_jsonexist so you can prove which is which. - Video ignoring the audio. The guide is conditioning, not magic - if motion isn't following the excerpt, look at your A2V influence and whether the audio actually reached both LTX sampling stages, not at this node.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| final_audio | AUDIO | — | |
| mode | COMBO | sync_safe | 3 options: full_mix, sync_safe, vocal_only |
| vocal_stemopt | AUDIO | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| conditioning_audio | AUDIO | — |
| final_audio | AUDIO | — |
| conditioning_sha256 | STRING | — |
| guide_report_json | STRING | — |
| status | STRING | — |
| ready | BOOLEAN | — |