⬡ Polyhedron MiniMax Audio Lock
Making MiniMax H3 cut the picture to your track
- latent
- audio_vae
- audio
- latent
- audio
- info
Most video models generate silence and you bolt a soundtrack on afterwards. MiniMax H3 doesn't - it generates picture and sound as one stream, dialogue and room tone and beat included. Which is great, right up until you have a specific track you want the clip built around. Then the joint generation becomes a problem: the model invents its own music and politely ignores yours.
⬡ Polyhedron MiniMax Audio Lock flips that. It encodes your audio with H3's audio VAE, drops it into the sound stream of the AV latent at start_frame, and holds it there with the stream's noise mask. The picture stream stays free, so H3 generates the visuals to the sound you pinned. Music video, lip-sync pass, voiceover the shot has to match - that kind of job.
Strength is the dial that matters
strength runs 0 to 1, and the ends mean what you'd hope:
- 1.0 - the sound is kept exactly as it is; the model works around it.
- 0.5 - the model may rework it halfway. Useful for "same performance, better mix" territory, weird everywhere else.
- 0 - no lock at all; generated fresh. At which point you can delete the node.
start_frame says where the sound begins, in frames at 24 per second - before that, the sound is free. The tooltip's own example is the one you'll want in a multi-scene film: a scene continuing another has 22 frames of pinned head, so 22 starts the sound exactly at the join.
after handles the length mismatch. A shorter sound with free lets H3 carry on making its own noise after it; silence holds silence after it (the waveform is padded before encoding, because a zero latent isn't silence); loop repeats it to the clip's end. A sound that's too long gets cut, and the node says so.
The output people miss
audio is the original sound laid into the clip - start_frame of silence, then your track, cut to the clip's length, padded or looped per after. Wire that into Polyhedron Save and you deliver the original audio rather than H3's decoded round trip of it. At strength 1 the two differ only by what the VAE does to your file. Take the clean one.
latent goes into the sampler, info goes into a Show Text node and tells you how the hold was implemented on your ComfyUI build. That's not cosmetic: on Core master the held audio rows are run as clean context to the model, while on a pinned older build the rows are blended back after every step - classic latent inpainting. Both hold the sound; they don't hold it identically.
How it differs from an audio reference
Worth being precise, because the pack has both. MiniMax Reference's audio pins are a reference: the model hears them as style, timbre, tempo, vibe. Audio Lock is a soundtrack: this exact waveform, at this exact time, in the delivered file. If you want "something in the mood of this track", use Reference. If you want this track, use the lock.
One more detail from the source: two locks on the same latent meet by the minimum - so chaining them doesn't stack, it intersects.
Install
Manager, search "Polyhedron Suite", or:
cd ComfyUI/custom_nodes
git clone https://github.com/PolyhedronAI/ComfyUI-PolyhedronLoRAStack.git
# restart ComfyUI
No required dependencies. You need an H3 audio VAE, an H3 AV latent from Polyhedron Empty Latent (latent_type = MiniMax H3 AV) or from MiniMax Continue, and audio from a loader - the pack's Media Loader hands you audio directly, trim included.
Where it goes wrong
start_frame past the clip. It errors with the number, which is the good version of this failure. Quiet version: you set 22 on a clip that's actually 5 frames long and wonder why nothing locks.
A latent that isn't H3. The node wants the AV packing; an image latent or a plain video latent won't carry an audio stream to hold.
Expecting lip-sync. H3 will move the mouth with the voice, not to phonemes. It's a strong generator, not forced alignment. If you need exact sync, that's a lip-sync pass after decode.
The licence question. H3's community licence excludes the EU, UK, Korea and the US from its applicable territory - the same constraint applies to any node in this MiniMax family, and it's the one thing about these nodes you can't tune your way around.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | The run's H3 AV latent (Polyhedron Empty Latent 'MiniMax H3 AV', or MiniMax Continue's latent). Wire the output into the sampler. | |
| audio_vae | VAE | The H3 audio VAE. | |
| audio | AUDIO | The sound the clip is made to: a track, a voice, a sound bed. | |
| strength | FLOAT | 1.000–1 | How hard the sound is held. 1 = kept as it is (the picture follows it); 0.5 = the model may rework it halfway; 0 = generated anew (no lock). |
| start_frame | INT | 00–9999 | Where the sound begins in the clip, in frames (24 per second). Before it the sound is free. A scene that continues the one before (22 frames of pinned head): 22 starts the sound at the join. |
| after | COMBO | free | A sound shorter than the clip: free = H3 carries on after it; silence = silence is held after it; loop = it repeats to the clip's end. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| audio | AUDIO | — |
| info | STRING | — |