MiniMax H3 Complete First Pass + Low-Sigma Refine Plan (v3 Advanced EXP/T8)
H3 low-sigma two-pass
- plan
- report_json
Most "two-pass" video upscaling schemes share one dirty secret: you interrupt the first pass while it's still mid-denoise, blow the noisy latent up with a learned upscaler, and then try to continue where you left off. It works, but the model is now predicting from a state it never saw at that resolution, and the longer the clip the more the second half drifts off in its own direction. This node - the v3 plan in the T8 pack's learned-latent two-pass line - takes the more honest route: finish the first pass completely to sigma zero, do the learned upscale on a clean latent, and only then run a separate short low-noise schedule that adds back a little noise and refines the detail.
If you've done high-res fix in Stable Diffusion, this is that idea transplanted onto latent video: denoise to the end at 576×320, upscale the latent with the 3D model, then come back at 1152×640 with roughly BasicScheduler(simple, 3 steps, denoise 0.30) - which is exactly the refine schedule the published workflow wires in. Low sigma, few steps, all aimed at crispness rather than reinventing the scene.
What the plan actually is
Like its v2 sibling, this is a plan node, not a sampler. It outputs a T8_H3_CHUNKED_TWO_PASS_PLAN (plan) and a report_json audit string; the plan plugs into the existing MiniMax H3 Chunked Two-Pass Upscale executor, and the executor also needs that separate low-sigma sigmas feed from a BasicScheduler. Old v1/v2 nodes and workflows are untouched - v3 is append-only, so you can A/B it against your existing setup without breaking anything.
Defaults tell you the intended geometry: target_width 1152, target_height 640, and the tile widgets default to matching full-canvas values with spatial_overlap/spatial_fade at zero - i.e. one full-frame trajectory. spatial_strategy (full_frame_safe) and temporal_strategy (full_clip_safe) are the same safe defaults as v2; the independent_tiles_exp and guarded_overlap_exp options exist to be diagnosed, not adopted.
The audio knob
The genuinely new knob is second_pass_audio_policy:
joint_av_preserve_input(default): during the refine pass the model still sees the joint audio-video context, so the audio conditions what the video does - but the refined audio is discarded at the output, and you get back the exact first-pass audio tensor. This matches upstream model-context behavior and keeps the delivered audio pristine.locked_input_audio: a diagnostic alternative that pins the input audio differently.
That split is worth understanding, because MiniMax H3 is an omni model: video and audio live in one latent. The v3 route gets the conditioning benefit of audio during high-res refinement without letting the refine pass degrade your pass-one audio. Audio stays what pass one produced.
What you actually set
What to actually set: model_name (the learned upscaler, minimax_h3_latent_upscaler_3d_fp16.safetensors in models/latent_upscale_models), target_width/target_height in multiples of 32, and the rest of the geometry only if you experiment. precision (fp16), release_policy (offload_after) and minimum_tile_size (256) are fine at defaults.
Installing it
Install through ComfyUI Manager by searching MiniMax H3 Audio T8, or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git into custom_nodes and restart. Update ComfyUI itself first - the pack needs the recent native H3 core APIs (comfy_api.latest, comfy.ldm.minimax, weight-adapter hooks), and an old core red-outs the whole pack, not just this node.
Reach for v3 when your two-pass results drift or "melt" in the second half. The full-frame pass-one-to-zero route is slower than cutting corners mid-denoise, but it's the difference between refining a finished picture and arguing with a half-baked one.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 1 options: minimax_h3_latent_upscaler_3d_fp16.safetensors | |
| target_width | INT | 115232–16384 | — |
| target_height | INT | 64032–16384 | — |
| temporal_chunk_frames | INT | 13617–3600 | — |
| temporal_overlap_frames | INT | 170–1700 | — |
| anchor_strength | FLOAT | 0.9990–1 | — |
| tile_width | INT | 115232–16384 | — |
| tile_height | INT | 64032–16384 | — |
| spatial_overlap | INT | 00–4096 | — |
| spatial_fade | INT | 00–4096 | — |
| minimum_tile_size | INT | 25632–4096 | — |
| overlap_blend | COMBO | smoothstep | 2 options: smoothstep, linear |
| precision | COMBO | fp16 | 3 options: fp16, bf16, fp32 |
| release_policy | COMBO | offload_after | 3 options: offload_after, clear_after, keep_loaded |
| spatial_strategy | COMBO | full_frame_safe | 2 options: full_frame_safe, independent_tiles_exp |
| temporal_strategy | COMBO | full_clip_safe | 2 options: full_clip_safe, guarded_overlap_exp |
| second_pass_audio_policy | COMBO | joint_av_preserve_input | joint_av_preserve_input matches the upstream model-context behavior but discards refined audio at output; locked_input_audio is a diagnostic alternative. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| plan | T8_H3_CHUNKED_TWO_PASS_PLAN | — |
| report_json | STRING | — |