Nodes/DiffusionGemma Prompt Builder/DiffusionGemma Advertisement Motion Guide / Final Mix
ComfyUI Node

DiffusionGemma Advertisement Motion Guide / Final Mix

The Split That Keeps Your Voice-Over Out of H3's Motion Conditioning

By exportAnything·Created 2 months ago·Updated a day ago· 44
DiffusionGemma Advertisement Motion Guide / Final Mix
  • music_audio
  • voice_over
  • motion_guide_audio
  • final_mix_audio
  • motion_guide_sha256
  • final_mix_sha256
  • mix_report_json
  • status
  • ready
soundtrack_contract_json
target_duration_seconds30.00
music_gain_db0.0
voice_over_gain_db0.0
ducking_db-9.0
duck_attack_ms80
duck_release_ms250
peak_ceiling_dbfs-1.0
clipping_policyAttenuate mix to ceiling
voice_over_start_seconds0.00

DiffusionGemmaAdvertisementAudioMixer does one of the smartest split-brain tricks in the advertisement stack, and it's easy to miss why it matters. It takes your locked music and produces two separate audio objects: a motion_guide_audio that conditions H3's motion, and a final_mix_audio that becomes the soundtrack of the delivered master. They start from the same music, but only the final mix can carry a voice-over - which is the whole point. A voice-over that leaked into the motion conditioning would read as a lip-sync instruction and make H3 animate the performer talking, so this pack makes that impossible by construction rather than by caution.

Here's the mechanics. Required inputs: music_audio, the soundtrack contract JSON, target_duration_seconds (30 by default, and the mixer trims or pads to that exact duration), and the mixing controls - music_gain_db, voice_over_gain_db, ducking_db (default −9 dB), duck_attack_ms (80), duck_release_ms (250), peak_ceiling_dbfs (−1), and clipping_policy, which either attenuates the mix to the ceiling or fails on clipping. The optional voice_over AUDIO input is lazy: the mixer only evaluates it if the soundtrack contract actually calls for VO, and the contract and the connection must agree - connect VO when the contract says none and it raises rather than quietly ignoring it. voice_over_start_seconds lets you place the VO inside the master.

On the output side you get the two audios, each with its own sha256 (motion_guide_sha256, final_mix_sha256) so downstream can verify the conditioned audio and the delivered audio are exactly what you approved, plus mix_report_json and the status/ready pair. The motion guide going to H3 is deliberately music-only; no ducking, no VO, no gain automation that would muddy the conditioning. It's the "pristine" version that keeps timing and beat structure intact for motion.

The reason this matters in an ad workflow specifically: ads are the one genre where non-diegetic voice-over is normal, and the reusable node contract is built for it - separate VO with ducking, hashes, and clipping diagnostics. But the shipped v1 workflow keeps VO locked to None until an upload/loader path is connected. So if you open the example and wonder where the VO controls are: they're present in this node, just dormant by design, because the v1 graph has no actual voice path yet.

Two real gotchas. First, exact duration is enforced: the mixer pads only sub-millisecond rounding deficits (at most one millisecond) and records them; materially short audio fails closed rather than delivering a truncated 29-second master labeled as 30. Second, watch peak_ceiling_dbfs and clipping_policy - "Fail on clipping" will stop the run on any overshoot, which is what you want for delivery but annoying when you're still tuning gains. If you're just testing, leave clipping_policy on attenuation.

Install is pack-wide: ComfyUI Manager search "DiffusionGemma Prompt Builder", or git clone https://github.com/exportAnything/ComfyUI-DiffusionGemmaPromptBuilder into custom_nodes and restart. The ad graph needs ComfyUI 0.33.1+ and the Music 3/H3 models; the mixer itself is local audio math. This node is where you do the audio finishing that your QA gate will actually judge - treat it accordingly.

Categoryprompt/diffusiongemma/advertising

Inputs (12)

NameTypeDefaultDescription
music_audioAUDIO
soundtrack_contract_jsonSTRING
target_duration_secondsFLOAT30.000.1–60
music_gain_dbFLOAT0.0-30–12
voice_over_gain_dbFLOAT0.0-30–12
ducking_dbFLOAT-9.0-30–0
duck_attack_msFLOAT800–1000
duck_release_msFLOAT2500–3000
peak_ceiling_dbfsFLOAT-1.0-12–0
clipping_policyCOMBOAttenuate mix to ceiling2 options: Attenuate mix to ceiling, Fail on clipping
voice_overoptAUDIO
voice_over_start_secondsoptFLOAT0.000–60

Outputs (7)

NameTypeDescription
motion_guide_audioAUDIO
final_mix_audioAUDIO
motion_guide_sha256STRING
final_mix_sha256STRING
mix_report_jsonSTRING
statusSTRING
readyBOOLEAN