Nodes/ComfyUI-MiniMax-Creator/MiniMax H3 Refine Pass
ComfyUI Node

MiniMax H3 Refine Pass

The two-pass upscale that refines the picture without re-noising the sound

By roadmaus·Created 17 days ago·Updated about 19 hours ago· 58
MiniMax H3 Refine Pass
  • model
  • positive
  • negative
  • latent
  • LATENT
width1344
height768
seed0
steps20
cfg1.00
sampler_name
scheduler
denoise0.50

Past H3's native 768 short edge, this pack doesn't sample off-distribution directly. It samples at 768 and then refines up in a second pass - and the node that runs that second pass is MiniMax H3 Refine Pass. It's internal, dev-only, emitted by the Creator when you pick the "two passes" resolution option. But the trick it pulls is one of the neatest mechanical ideas in the pack, so it's worth understanding.

Here's the setup. An H3 latent is really two things: a video half and an audio half, sampled jointly. A naive upscale would take the whole sampled latent, add noise to everything, and re-sample - which means the soundtrack you just generated gets re-noised too. Refine Pass does it properly. It upscales the video half of the AV latent to the higher canvas, adds noise only to that half, and re-samples it partway down the schedule while the soundtrack is left un-noised - untouched by the refinement. The picture gets re-resolved at a bigger canvas; the audio stays exactly what the first pass made.

That "partway down the schedule" is the denoise input, and its tooltip is worth quoting in full because it's the whole safety manual:

Strictly under 1.0: at 1.0 nothing of the first pass survives, and the audio carry-through divides by (1 - the starting sigma).

In other words, at denoise 1.0 you've thrown the first pass away entirely, and the math that carries the audio across breaks in a way you don't want to discover by accident. The default is 0.5, which is a sensible middle - enough re-resolution to add real detail at higher resolutions, not so much that the first pass's composition is discarded. Keep it under 1.0 and you're fine.

The inputs that matter

  • latent - the first pass's sampled AV latent, at the native canvas. This is the thing being refined.
  • width / height - the target canvas, default 1344×768 (the README's framing: past 768 it samples native and refines up rather than going off-distribution). Both step by 32.
  • denoise - default 0.5, strictly below 1.0. How much of the schedule the refinement runs.
  • model / positive / negative / vae-less sampler row - the same model, conditioning, seed, steps (20), cfg (1.0), sampler_name and scheduler the first pass used. It's the same checkpoint doing the refinement.

Output is a single LATENT - the refined AV latent, handed back to the sampler's downstream nodes for decoding.

Where the idea came from

The README is upfront about the lineage: Tr1dae's ComfyUI-MiniMaxH3_LatentUpscaler pioneered the two-pass approach of upscaling the video half of the AV latent between two samplers while leaving the audio out of the re-noise. This pack's refine pass is an independent implementation of that idea, wired straight into the render graph instead of living in a separate workflow. If you've seen that node and wondered whether this is the same thing - it is, but you don't have to splice it in by hand; the Creator's resolution popover does it for you.

Installing

Ships with the pack, dev-only:

cd ComfyUI/custom_nodes
git clone https://github.com/roadmaus/ComfyUI-MiniMax-Creator

Restart ComfyUI, no pip install, standard H3 weights. You'll only meet it inside an expanded workflow with "two passes" selected - and the main thing to remember about it is one number: keep denoise under 1.0, or you've re-made the shot from scratch and broken the audio carry-through in the same move.

CategoryMiniMax/internal

Inputs (12)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENTThe first pass's sampled AV latent, at the native canvas.
widthINT134432–8192
heightINT76832–8192
seedINT00–18446744073709550000
stepsINT201–200
cfgFLOAT1.000–30
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.500.01–0.99How much of the schedule the refinement runs. Strictly under 1.0: at 1.0 nothing of the first pass survives, and the audio carry-through divides by (1 - the starting sigma).

Outputs (1)

NameTypeDescription
LATENTLATENT