Nodes/Muse Minimax Refine/Muse Minimax Refine
ComfyUI Node

Muse Minimax Refine

The hi-res fix MiniMax H3 never shipped with

By muse-collective-26·Created about a month ago·Updated about a month ago· 2
Muse Minimax Refine
  • model
  • clip
  • vae
  • audio_vae
  • candidate_1_images
  • candidate_1_audio
  • candidate_2_images
  • candidate_2_audio
  • candidate_3_images
  • candidate_3_audio
  • candidate_4_images
  • candidate_4_audio
  • ref_images
  • images
  • audio
prompt
candidate0
aspect_ratio16:9 (Widescreen)
megapixels1.96
multiple32
resize_methodcrop
ref_image_sizematch
denoise0.40
seed0
steps20
sampler_nameres_multistep
schedulersimple
shift_video12.00
shift_audio3.00

MiniMax H3 is one of the best open-weights video models you can run locally, but it has a blind spot: no dedicated spatial upscaler, the way LTX ships one. So you're stuck rendering at full resolution blind, or rendering cheap and staring at soft pixels. Muse Minimax Refine is the workaround: a second-pass hi-res-fix node that takes one of up to four already-rendered clips and re-samples it at a higher resolution through H3's own sampler.

It's the companion to Muse Minimax Director, but it deliberately has no dependency on it. You can feed it any four IMAGE/AUDIO candidate pairs from anywhere.

Why pick a candidate instead of just generating high-res?

Because a full high-res H3 render is expensive, and you don't find out whether the prompt actually landed until it's done. The workflow the README pushes: scout three or four cheap, low-res candidates first (Director's Seed Hunt toggle is built for this, or just run four manual low-res renders), eyeball them, pick the one that matches, then spend the real compute refining that winner. It's the same "two-pass generation" logic as SD hi-res fix - the second pass runs at higher resolution with low denoise to add coherent detail instead of rerolling the whole thing.

How it works

The name is honest: this is img2img in pixel space. Pick a candidate via the button selector, resize its frames to the target resolution, then re-encode those real pixels - and the real waveform - through H3's own vae and audio_vae to build a genuine joint audio+video latent. Then it runs H3's native sampler chain (res_multistep on a simple schedule by default) with denoise below 1.0, so only the tail of the sigma schedule executes and the model refines what's there instead of generating from scratch. Video decodes; audio passes straight through from the chosen candidate, untouched.

The inputs that actually matter

  • candidate + the four candidate_N_images / candidate_N_audio pairs. Wire up to four candidate renders, then click one of the four buttons in the node's UI (the JS re-skins the plain integer widget as buttons). It defaults to 0 and deliberately refuses to run at 0 rather than silently falling back to candidate 1 - you'll get a console warning, not a red error, and the rest of your queue keeps going.
  • denoise - how much of the candidate survives versus gets redrawn. Low (~0.2–0.3) stays close to the candidate and mostly adds resolution and detail; high (~0.6+) lets the model redraw more and can drift from the candidate's content. 1.0 regenerates from scratch and ignores the candidate; the default 0.4 is a sensible start.
  • ref_images - strongly recommended. Without it the refine pass only has the text prompt to constrain the redraw, so any detail the prompt doesn't spell out (exact prop shape, skin, likeness) is free to drift toward H3's generic defaults. Wire in the same reference photos the candidate was generated from (Director's ref_images_used output works) to lock it down. ref_image_size of match is fast; max keeps a 2048px short edge for stronger identity fidelity but is "several times slower."
  • aspect_ratio / megapixels - the target resolution, using the same formula as ComfyUI's standard ResolutionSelector node. resize_method (crop/pad/stretch) handles the fit when the candidate's aspect ratio doesn't match; the default crop avoids distortion and bars but can clip edges on a big swing.

The rest - seed, steps, sampler_name, scheduler, shift_video, shift_audio - means the same as on Muse Minimax Director, and the defaults work fine.

Outputs

Two: images (the refined video frames, IMAGE) and audio (the selected candidate's original audio, AUDIO). Wire images into your usual video encoder and you're done.

Installing

ComfyUI Manager → search Muse-MiniMax-H3-Refine, or:

cd ComfyUI/custom_nodes
git clone https://github.com/muse-collective-26/Muse-MiniMax-H3-Refine

Then restart ComfyUI. No extra model downloads - this is a helper, not a weights pack - and it ships no requirements.txt; it leans on ComfyUI's own H3 extras and torchaudio, which you already have if your ComfyUI version supports H3 at all. If it doesn't load, update ComfyUI core first.

Gotchas

  • Single-clip only. Candidates must be single H3-call-length clips (≤ ~15s, the same ceiling one real H3 call has). A concatenated multi-chunk clip's frame count generally won't satisfy H3's 17k+5 latent grid as one block.
  • Clicking an already-active candidate button deselects it (back to "none") - that's how you reset the node to its not-ready state, and it also fixes a real bug where a saved workflow's buttons showed nothing picked while the node would still run underneath.
  • The license is the model's problem, not this node's. H3's community license excludes the US, EU, UK and Korea from running the local weights at all; no refine node changes that.

Scout cheap, pick the winner, spend your GPU budget on the take that earned it.

CategoryMuse Collective

Inputs (27)

NameTypeDefaultDescription
modelMODEL
clipCLIP
vaeVAE
audio_vaeVAE
promptSTRINGWire this from your director-style node's compiled_prompt output — the refine pass reuses the exact prompt the candidate was generated from.
candidateINT00–4Which of the four candidate slots to refine. Set by the button selector in the node's UI. Defaults to 0 (none picked yet) — the node deliberately refuses to run at 0, rather than silently falling back to candidate 1, so a graph can't get queued before you've actually chosen one.
aspect_ratioCOMBO16:9 (Widescreen)8 options: 1:1 (Square), 2:3 (Portrait Photo), 3:2 (Photo), 3:4 (Portrait Standard), 4:3 (Standard), 9:16 (Portrait Widescreen), +2
megapixelsFLOAT1.960.1–4Target resolution for the refined output — normally higher than whatever resolution the candidates were scouted at.
multipleINT328–128
resize_methodCOMBOcropHow the selected candidate's frames get fit to the new target resolution when its aspect ratio doesn't match.
ref_image_sizeCOMBOmatchOnly used when ref_images is connected. 'match' scales references down to the output's pixel area (faster). 'max' keeps up to a 2048px short edge for stronger identity fidelity, but reference tokens ride every sampling step so it's several times slower.
denoiseFLOAT0.400.05–1How much of the candidate's own content survives vs. gets redrawn. Low values (~0.2-0.3) stay close to the candidate and mostly add resolution/detail. High values (~0.6+) let the model redraw more, which can drift from the candidate's content — 1.0 regenerates from scratch and ignores it entirely.
seedINT00–18446744073709550000
stepsINT201–100
sampler_nameCOMBOres_multistep4 options: res_multistep, euler, euler_ancestral, dpmpp_2m
schedulerCOMBOsimple4 options: simple, normal, beta, sgm_uniform
shift_videoFLOAT12.000.01–100
shift_audioFLOAT3.000.01–100
candidate_1_imagesoptIMAGE
candidate_1_audiooptAUDIO
candidate_2_imagesoptIMAGE
candidate_2_audiooptAUDIO
candidate_3_imagesoptIMAGE
candidate_3_audiooptAUDIO
candidate_4_imagesoptIMAGE
candidate_4_audiooptAUDIO
ref_imagesoptIMAGEThe same character/product reference photos that anchored identity and fine detail (exact prop shape, skin, likeness) in the original candidate — e.g. wired from MuseMinimaxDirector's ref_images_used output. Without this, the refine pass only has the text prompt to go on, and any detail the prompt doesn't spell out explicitly is free to drift during the partial-denoise redraw — this is what locks it back down.

Outputs (2)

NameTypeDescription
imagesIMAGE
audioAUDIO