DiffusionGemma LTX Performance Prompt
Tells LTX whether to sing, dance, or just move to the beat
- ltx_prompt
- selected_lyrics
- status
- performance_report_json
- performance_mode
LTX-2.x generates video with synchronized audio, which means its prompt is also deciding whether the subject is singing along to the track - and left to its own devices, it will do the thing you least expect. DiffusionGemma LTX Performance Prompt exists to make that decision explicit. It sits after the validated Director gate and changes only prompt text: Natural, Dance, or Lyrics, applied to whatever prompt the Director already validated.
The sharpest way to understand it is the mode contract, because each one is a deliberate suppression or permission:
- Natural / audio-led sync - adds no lyric schedule. Connected audio alone governs whether articulation naturally occurs. This is the honest default: let the track decide.
- Dance / music sync - deliberately suppresses singing, speaking, mouthing, and lip-sync, while retaining beat-, phrase-, and dynamics-aware body motion. When you want a dancer, not a singer, this is the mode - and it's why the node exists, because "stop mouthing the words" is not something you want to fight per-prompt.
- Lyrics + lip sync - supplies a bounded authored-lyric window only as lexical/pronunciation candidates. The key limitation, straight from the README: it no longer orders the subject to sing every selected line. The window is pronunciation evidence for whatever articulation happens, not a karaoke command.
The node never changes the conditioning waveform or the pristine final soundtrack - it's text-in, text-out.
Inputs that matter
ltx_prompt- the validated prompt text from the Director gate. This is what gets rewritten.performance_mode- Natural / Dance / Lyrics.song_duration_seconds(default 90),excerpt_start_seconds,excerpt_duration_seconds- where in the track this performance window sits.lyrics- the authored lyric text. In Lyrics mode it becomes a bounded lexical window; in Dance mode it's ignored for articulation purposes.performance_mode_override- optional typed upstream source of truth. When connected, it overrides the legacy local dropdown without removing the dropdown from older workflows. This is the pack's pattern for "the whole workflow already decided the mode once" - a shared Music-Video Performance Mode node upstream can be authoritative.
Outputs: the rewritten ltx_prompt, selected_lyrics (what actually entered the prompt), status, performance_report_json, and a performance_mode string so downstream nodes know which policy was applied.
Where it fits
The performance mode is a shared decision across the music-video stack - the pack also has a Music-Video Performance Mode node that makes Natural/Dance/Lyrics one choice before the video Director, feeding target guidance, lyric-window selection, and lane planning. This node is the LTX-specific application of that decision at the prompt level. Because it's downstream of the generation gate, a failure here is a text problem you can see in status, not a silent validation collapse.
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 string logic - no model, no VRAM cost beyond the graph it hangs off. Real Lyrics-mode lip-sync also needs the timed-lyrics evidence path (Whisper + a vocal stem), which are separate downloads.
Common issues
- The subject sings when you wanted a dancer. You're in Natural mode with a vocal track, and articulation followed the audio. Switch to Dance if singing is unwanted - that's the entire point of the mode.
- Lyrics mode still doesn't force every line. That's the current contract: bounded lexical candidates, not a singing schedule. If you need strict line-per-line lip-sync, look upstream at the timed-lyrics analysis and how the Director's lyric window is authored, rather than expecting this node to karaoke the whole song.
- Two dropdowns disagreeing. If you have both a local
performance_modeand a connectedperformance_mode_override, the override wins - check which is live before blaming the output.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| ltx_prompt | STRING | — | |
| performance_mode | COMBO | Natural / audio-led sync | Dance suppresses visible vocal articulation. Lyrics supplies bounded lexical/pronunciation candidates but never timing. Natural lets connected audio alone govern articulation. |
| song_duration_seconds | FLOAT | 90.000.01–86400 | — |
| excerpt_start_seconds | FLOAT | 0.000–86400 | — |
| excerpt_duration_seconds | FLOAT | 20.000.01–86400 | — |
| lyricsopt | STRING | — | |
| performance_mode_overrideopt | STRING | Optional typed upstream source of truth. When connected, this overrides the legacy local dropdown without removing it from older workflows. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| ltx_prompt | STRING | — |
| selected_lyrics | STRING | — |
| status | STRING | — |
| performance_report_json | STRING | — |
| performance_mode | STRING | — |