AD_MinMax_Ref2
Images, clips and audio in one prompt
- context
- model
- media
- media_1
- media_2
- media_3
- media_4
- media_5
- media_6
- media_7
- media_8
- media_9
- media_10
- media_11
- media_12
- media_13
- media_14
- media_15
- media_16
- media_17
- media_18
- media_19
- media_20
- media_21
- media_22
- media_23
- media_24
- media_25
- media_26
- media_27
- media_28
- media_29
- media_30
- media_31
- media_32
- media_33
- media_34
- media_35
- media_36
- media_37
- media_38
- media_39
- media_40
- media_41
- media_42
- media_43
- media_44
- media_45
- media_46
- media_47
- media_48
- media_49
- media_50
- media_51
- media_52
- media_53
- media_54
- media_55
- media_56
- media_57
- media_58
- media_59
- media_60
- media_61
- media_62
- media_63
- media_64
- stage_info_data1
- stage_data
- context
- model
- length
- text
This is the workhorse of the pack's MiniMax H3 stack: AD_MinMax_Ref2 generates a video from a text prompt plus up to sixteen media inputs - images for identity and style, reference videos for motion, audio clips for soundtrack matching - all numbered and referenced from inside the prompt itself. If AD_MinMax_FL2 is the first/last-keyframe specialist, this one is the generalist: same H3 backbone, but reference-driven rather than keyframe-pinned.
The "Ref2" in the name and the README's update log point at the same thing - this is the reference-guided ("Ref2VA") mode of MiniMax H3, where the model attends to your reference media rather than treating it as hard frames. That's a subtle but real distinction: a reference video can influence motion, but it won't pin the start or end frame the way FL2's keyframes do. Pick Ref2 when you want identity/consistency, pick FL2 when you want literal endpoints.
The media inputs, and the prompt magic
You get media plus media_1 through media_16, each accepting image, video, audio, or latent. The slick part: you can reference them from the prompt text. The node parses tags like <Picture 1>, <Video 2> or <Audio 1> (it also accepts looser forms like @v3 or [img 2], and even Chinese tags - the author's own prompt scheduler) and injects the right media into the H3 tokenizer at the right position. So a prompt can read: "the man from <Picture 1> dances like <Video 2>, with <Audio 1> as the beat." That ordering matters - the media inputs are ordered virtual inputs, and their order in the prompt drives what the model attends to where.
The hard limits (enforced, with clear errors): 9 images, 3 videos, 3 audio clips, and a single context latent. media_type_N lets you override the detected type if the auto-detection ever guesses wrong, but you'll rarely touch it.
The few inputs you actually set
context(RUN_CONTEXT) - required. Carries the H3 model, CLIP, VAE and audio VAE. The node raises a specific error listing whichever of clip/vae/audio_vae are missing.prompt- your scene description with the media tags.length- frames at 24fps, auto-snapped to H3's 17k+5 grid (124 ≈ 5s).ref_image_size("match" default, "max") - how reference images get scaled before encoding.matchscales to the canvas area (fast, default);maxaligns to the 2048 short edge, which the tooltip says gives better identity but runs slower. For face-critical work,maxis the one you'd reach for.seed- standard, withcontrol_after_generate.
Outputs: context (with the sampled latent carried forward), video, and text (the fully-resolved prompt after tag substitution - handy for debugging what the model actually saw).
The chaining trick
This is where the pack earns its keep. If you don't connect a media latent, the node pulls the previous sampler's latent out of the RUN_CONTEXT and feeds it forward as context. That's how you get multi-shot consistency: run one shot, chain the context into the next AD_MinMax_Ref2, and the character stays put. It's the same pattern the pack's flow_stage system formalizes into a whole staged-video loop (see AD_MinMax_Ref2_mul for the multi-stage version). Just remember the context bus's one failure mode - a stale context silently carries an old latent - so if a character suddenly changes identity between shots, check what's actually in the context wire.
Installing it
Part of cardenluo/ComfyUI-Apt_Preset. ComfyUI Manager → search "Apt_Preset", or:
cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset
pip install -r requirements.txt # or install.bat on Windows
Restart, then load an H3 model via the pack's universal loader. You need a ComfyUI build with native comfy_extras.nodes_minimax_h3 - otherwise it dies with "This ComfyUI build does not provide MiniMax H3 support." The pack's optional deps (GGUF, Advanced-ControlNet, nunchaku, Apt_File resources) are only for other nodes in the suite.
Inputs (141)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| width | INT | 51232–4096 | — |
| height | INT | 76832–4096 | — |
| single_stage_time | FLOAT | 5.02–15 | 当前分段时长(秒),支持一位小数 |
| ref_image_size | COMBO | match | 'match' 自动将参考图和参考视频限制到目标画布面积;'max' 保留官方高分辨率参考策略(细节更多但更慢、更占内存) |
| motion_context | COMBO | guide 22 frames | 续接方案:Guide22/39帧使用条件引导;native soft 39使用动态重绘并保持AV网格精确对齐。 |
| reference_media_mode | COMBO | default | 长素材可自动分段;提示词连续引用同一组音频时沿时间轴继续,引用中断后再次出现则从头开始。 |
| stage_prompts | STRING | [] | — |
| contextopt | RUN_CONTEXT | — | |
| modelopt | MODEL | — | |
| mediaopt | IMAGE,VIDEO,AUDIO,LATENT,STRING | — | |
| media_1opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_1opt | STRING | — | |
| media_2opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_2opt | STRING | — | |
| media_3opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_3opt | STRING | — | |
| media_4opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_4opt | STRING | — | |
| media_5opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_5opt | STRING | — | |
| media_6opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_6opt | STRING | — | |
| media_7opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_7opt | STRING | — | |
| media_8opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_8opt | STRING | — | |
| media_9opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_9opt | STRING | — | |
| media_10opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_10opt | STRING | — | |
| media_11opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_11opt | STRING | — | |
| media_12opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_12opt | STRING | — | |
| media_13opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_13opt | STRING | — | |
| media_14opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_14opt | STRING | — | |
| media_15opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_15opt | STRING | — | |
| media_16opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_16opt | STRING | — | |
| media_17opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_17opt | STRING | — | |
| media_18opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_18opt | STRING | — | |
| media_19opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_19opt | STRING | — | |
| media_20opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_20opt | STRING | — | |
| media_21opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_21opt | STRING | — | |
| media_22opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_22opt | STRING | — | |
| media_23opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_23opt | STRING | — | |
| media_24opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_24opt | STRING | — | |
| media_25opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_25opt | STRING | — | |
| media_26opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_26opt | STRING | — | |
| media_27opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_27opt | STRING | — | |
| media_28opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_28opt | STRING | — | |
| media_29opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_29opt | STRING | — | |
| media_30opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_30opt | STRING | — | |
| media_31opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_31opt | STRING | — | |
| media_32opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_32opt | STRING | — | |
| media_33opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_33opt | STRING | — | |
| media_34opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_34opt | STRING | — | |
| media_35opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_35opt | STRING | — | |
| media_36opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_36opt | STRING | — | |
| media_37opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_37opt | STRING | — | |
| media_38opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_38opt | STRING | — | |
| media_39opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_39opt | STRING | — | |
| media_40opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_40opt | STRING | — | |
| media_41opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_41opt | STRING | — | |
| media_42opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_42opt | STRING | — | |
| media_43opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_43opt | STRING | — | |
| media_44opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_44opt | STRING | — | |
| media_45opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_45opt | STRING | — | |
| media_46opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_46opt | STRING | — | |
| media_47opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_47opt | STRING | — | |
| media_48opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_48opt | STRING | — | |
| media_49opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_49opt | STRING | — | |
| media_50opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_50opt | STRING | — | |
| media_51opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_51opt | STRING | — | |
| media_52opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_52opt | STRING | — | |
| media_53opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_53opt | STRING | — | |
| media_54opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_54opt | STRING | — | |
| media_55opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_55opt | STRING | — | |
| media_56opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_56opt | STRING | — | |
| media_57opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_57opt | STRING | — | |
| media_58opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_58opt | STRING | — | |
| media_59opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_59opt | STRING | — | |
| media_60opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_60opt | STRING | — | |
| media_61opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_61opt | STRING | — | |
| media_62opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_62opt | STRING | — | |
| media_63opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_63opt | STRING | — | |
| media_64opt | IMAGE,VIDEO,AUDIO,LATENT | — | |
| media_type_64opt | STRING | — | |
| stage_info_data1opt | FLOW_STAGE_INFO | — | |
| stage_dataopt | IMAGE,VIDEO,AUDIO,LATENT | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| context | RUN_CONTEXT | — |
| model | MODEL | — |
| length | INT | — |
| text | STRING | — |