Nodes/ComfyUI-PainterNodes/Painter MiniMax FL2VA
ComfyUI Node

Painter MiniMax FL2VA

Anchored frames, borrowed voice

By princepainter·Created 9 months ago·Updated 10 days ago· 205
Painter MiniMax FL2VA
  • clip
  • vae
  • audio_vae
  • first_frame
  • last_frame
  • ref_audios
  • positive
  • LATENT
◄prompt—►
◄width1344►
◄height768►
◄length124►

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_frame alone 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 length may 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.

Categorymodel/conditioning/minimax

Inputs (10)

NameTypeDefaultDescription
clipCLIP—
vaeVAE—
audio_vaeVAE—
promptSTRING—
widthINT134432–16384—
heightINT76832–16384—
lengthINT1245–3600—
first_frameoptIMAGEFirst frame hard anchor (<Picture 1>)
last_frameoptIMAGELast frame hard anchor (<Picture 2>; becomes <Picture 1> when no first frame)
ref_audiosoptCOMFY_AUTOGROW_V3—

Outputs (2)

NameTypeDescription
positiveCONDITIONING—
LATENTLATENT—