Painter MiniMax FL2VA
Anchored frames, borrowed voice
- clip
- vae
- audio_vae
- first_frame
- last_frame
- ref_audios
- positive
- LATENT
MiniMax H3 is a multimodal model - text, image, video, and audio all understood in one context, with native stereo sound in the output. That means "make a video that starts here, ends there, and is spoken in this person's voice" is one generation, not three. PainterMiniMaxFL2VA is the node that sets up that exact job: it hard-anchors a first and last frame and borrows a voice timbre from a reference audio clip, while the actual lines live in your prompt. The author's summary is the whole pitch: "first/last frame hard anchor (fl2va) + reference audio timbre. The voice follows <Audio 1> timbre; write the lines in the prompt."
What it is
A model/conditioning/minimax node - the conditioning-and-latent builder for H3's FLF-plus-audio mode. It takes your CLIP (clip), the video vae, the audio_vae, a prompt, and up to three reference audios, plus optional first_frame and last_frame images. Outputs are positive conditioning and a single LATENT - that's it, feed them to the H3 sampler and it does the rest, including the talking.
How it works
FLF is the part you already know from Wan-family workflows: first_frame gets encoded and placed at frame 0 of the latent, last_frame at the final position - the "hard anchor" in the name, so the ending has to land on your image. The H3 twist is audio. ref_audios (autogrow, up to 3) are encoded through the audio_vae and injected as reference tokens: the model learns the timbre from them - who is speaking - while the content of what's said comes from the prompt. So the workflow is: pick a voice sample, drop in two frames, write the dialogue in the prompt, and the same latent comes out with the right voice attached.
The numbers matter for H3's trained regime: length defaults to 124 frames (about 5 seconds at 24fps, per the H3-family tooltips), steps by 17, and the width/height step by 32.
Inputs and outputs that matter
- first_frame / last_frame - the hard anchors.
last_framealone also works (it becomes<Picture 1>when there's no first frame). - ref_audios - the voice reference(s). Timbre comes from here, lines from the prompt.
- prompt - write the dialogue here.
- clip / vae / audio_vae - your H3 loader's three outputs.
- Outputs:
positive→ sampler conditioning,LATENT→ sampler latent.
Install
Part of the PainterNodes pack. ComfyUI Manager → search "PainterNodes" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/princepainter/ComfyUI-PainterNodes
cd ComfyUI-PainterNodes
pip install -r requirements.txt
The pack's own dependencies are tiny (soundfile, numpy); the H3 checkpoints and its audio pipeline come from wherever you loaded the model.
Common issues
- Voice doesn't match the reference - timbre capture needs a clean, single-speaker sample. Background music and crowd noise muddy it.
- Ending doesn't land on the last frame - that's FLF being a hard anchor, not a guarantee. If it's drifting, your
lengthmay be outside H3's trained range (the 124–362 band the other H3 nodes flag) or the model is fighting the prompt. - No audio in the output - this node builds the conditioning; the audio has to survive the sampler and decoder. Make sure the whole chain is the H3 omni path, not a video-only decode.
H3's whole selling point is that picture, speech, and motion come from one model instead of a dub on top. This node is the clean way to aim it: frames where you want them, voice from a sample, words from your prompt.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| vae | VAE | — | |
| audio_vae | VAE | — | |
| prompt | STRING | — | |
| width | INT | 134432–16384 | — |
| height | INT | 76832–16384 | — |
| length | INT | 1245–3600 | — |
| first_frameopt | IMAGE | First frame hard anchor (<Picture 1>) | |
| last_frameopt | IMAGE | Last frame hard anchor (<Picture 2>; becomes <Picture 1> when no first frame) | |
| ref_audiosopt | COMFY_AUTOGROW_V3 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| LATENT | LATENT | — |