Nodes/CRT-Nodes/MiniMax H3 Unified Sampler (CRT)
ComfyUI Node

MiniMax H3 Unified Sampler (CRT)

The node that runs all of MiniMax H3 — T2V, I2V, R2V and audio, in one place

By PGCRT·Created 2 years ago·Updated 2 days ago· 132
MiniMax H3 Unified Sampler (CRT)
  • models_pipe
  • config_pipe
  • images
  • audio
workflow_modeI2V
steps20
steps_turbo4
turbofalse
enable_sol_attnfalse
enable_chunk_fffalse
enable_spectrumtrue
live_previewtrue
vae_decode_tiledtrue
unload_before_decodetrue
low_vramtrue
megapixels_target0.50
aspect_ratio16:9 (Landscape)
fl_aspect_modePreserve First
length_frames124
audio_frames_overridetrue
video_frames_overridetrue
generated_audio_gain_db0.0

MiniMax H3 is one of the best things to hit local video in a while: a 33B omni-modal model that generates picture and sound together, 4–15 second clips at up to 2K. But wiring it natively in ComfyUI is a chain - ImageToVideo or ReferenceToVideo nodes, a sampler, two VAEs, the sigma-shift patch, the speed optimizations. The MiniMax H3 Unified Sampler (CRT) collapses that whole chain into one node. It orchestrates conditioning, sigma shift, speed patches, scheduling, and video-plus-audio decode for all three H3 modes - T2V, FL2VA (I2V) and REF2VA (R2V) - and hands you decoded frames and audio on the other side.

That's the practical win: you change workflow_mode instead of rewiring a graph. Prompt-only clip, two keyframes, or a reference image + soundtrack - same node, one dropdown, different inputs up front.

How it works

The sampler takes your two pipes - models_pipe from the US Models Pipe node, config_pipe from the US Config node - reads the mode, picks the right model family (T2V and I2V share the FL2VA checkpoint; R2V uses REF2VA), applies the sigma shift (video 12, audio 3), then stacks the speed patches in dependency order: Sol attention (sparsifies self-attention on high-noise steps), chunked feed-forward (splits each MLP pass to cut peak VRAM), and Spectrum forecast (predicts solver steps from past denoised anchors to cut sampling NFEs). Then it samples with the res_multistep sampler / simple scheduler and decodes both video and audio. One detail worth knowing: the Sol/Spectrum patch nodes aren't bundled in CRT-Nodes - the sampler looks them up among your installed packs and, if a pack providing them is missing, logs a warning and runs without that optimization rather than crashing. That's graceful, but it means "Spectrum on" is only real if the node actually exists.

The inputs that matter

Most of the widgets have sensible defaults, so the ones you'll actually touch:

  • workflow_mode - T2V, I2V (FL2VA keyframes) or R2V (REF2VA references). This is the master switch.
  • turbo, steps (20) and steps_turbo (4) - the official Turbo LoRAs are trained for 4 steps. Turbo on, 4 steps, is the fast lane; 20 is the full-quality lane.
  • length_frames - default 124 (~5s at 24 fps), snapped to H3's 17n+5 grid; the trained range is 124–362.
  • megapixels_target and aspect_ratio - 0.98 MP at 16:9 is the official 1344×768 768p canvas; the ratio picker has 20 presets. In I2V with a first/last frame connected, the frame sets the canvas instead.
  • fl_aspect_mode - when both I2V frames are connected with mismatched ratios: Preserve First/Last, or Optimal (a geometric-mean canvas both frames crop into).
  • The VRAM trio, all default-on: vae_decode_tiled (tile the decode), unload_before_decode (drop the diffusion model before decoding), and low_vram (offload CLIP and VAEs during sampling, reload for decode). H3 is big; leave these on until you know you don't need them.
  • live_preview - decodes intermediate previews via an auto-downloaded taeh3 approximation, falling back to RGB factors if it's offline. It's a nice touch; the frontend loops a WebP per step.
  • generated_audio_gain_db - post-decode gain on the generated audio, in dB.

Outputs: images (a decoded IMAGE batch) and audio (AUDIO). Wire images to a save/preview node and audio to a Save Audio node - there's no separate VAE-decode step after this, it's done.

Install

Ships in CRT-Nodes by PGCRT. ComfyUI Manager → search CRT-Nodes → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/PGCRT/CRT-Nodes.git
pip install -r requirements.txt

Restart ComfyUI. Red/NaN nodes after an update: right-click → Fix node (recreate).

Where people get burned

First run downloads whatever models are missing - the pruned int8 checkpoints are a real download, with the progress bar in the console, and if a socket is empty the Models Pipe raises a clear [CRT MiniMaxH3][DIAG] error rather than silently running without a model. Second: don't run turbo at 20 steps. Four. Third, and honestly the one to read before anything else: H3's Community License geofences the local weights - and their outputs - out of the US, EU, UK and South Korea. If you're in one of those, this node is only useful against a remote host that's licensed to run it.

A known-good starting point: T2V, Turbo on, steps_turbo 4, 16:9 at 0.98 MP, 124 frames. That's a fast, sensible baseline to mess with from.

CategoryCRT/MiniMaxH3

Inputs (20)

NameTypeDefaultDescription
models_pipeMINIMAXH3_US_MODELS_PIPE
config_pipeMINIMAXH3_US_CONFIG_PIPE
workflow_modeCOMBOI2VT2V: pure text (FL2VA checkpoint). FL2VA (I2V): first/last-frame keyframes. REF2VA (R2V): reference images/videos/audio. Selects which model variant the Models Pipe loads.
stepsINT201–60Steps used when Turbo is OFF.
steps_turboINT41–60Steps used when Turbo is ON (the official Turbo LoRAs are trained for 4).
turboBOOLEANfalseUse the Turbo-LoRA variant of the active mode's family from the Models Pipe, together with the Steps Turbo count.
enable_sol_attnBOOLEANfalseScheduled Sol attention: sparsifies self-attention on high-noise steps (tau ramp), denser near the end. Applied after the sigma shift so its schedule matches.
enable_chunk_ffBOOLEANfalseChunked feed-forward: splits each MLP pass to reduce peak VRAM. Composable with Sol attention and Spectrum.
enable_spectrumBOOLEANtrueSpectrum forecast: predicts solver steps from past denoised anchors to cut sampling NFEs. Applied last so it wraps the final patched model.
live_previewBOOLEANtrueDecode intermediate video previews during sampling via the auto-downloaded taeh3 approximation (RGB-factor fallback when offline).
vae_decode_tiledBOOLEANtrueDecode video latents in tiles to reduce peak VRAM at the cost of additional processing time.
unload_before_decodeBOOLEANtrueUnload the diffusion model after sampling and before VAE decode to reduce decode-time VRAM.
low_vramBOOLEANtrueUnload CLIP after conditioning and the VAEs before sampling, then reload the VAEs for decode.
megapixels_targetFLOAT0.500.05–2Target canvas area in megapixels, ceiled to the model's 32px grid (0.98 at 16:9 is the official 1344x768 768p canvas).
aspect_ratioCOMBO16:9 (Landscape)Canvas aspect. Ignored in I2V when a First/Last frame is connected - the frame sets the canvas.
fl_aspect_modeCOMBOPreserve FirstI2V with BOTH frames connected: how to reconcile different aspect ratios. Preserve First/Last: that frame defines the canvas and the other is cover-cropped to it. Optimal: a middle-ground canvas (geometric mean of both ratios) at the megapixel target; both frames are cover-cropped to it.
length_framesINT1245–362Clip length in frames at 24 fps, snapped to the model's 17n+5 grid (124 frames = ~5s; trained range is 124-362).
audio_frames_overrideBOOLEANtrueREF2VA only: derive the output frame count from the longest Ref Audio input (at 24 fps), snapped to the 17n+5 grid. Ignored when the video override applies.
video_frames_overrideBOOLEANtrueREF2VA only: derive the output frame count from the longest Ref Video input. Takes priority over the audio length override.
generated_audio_gain_dbFLOAT0.0-60–24Gain applied to the generated audio after decode, in decibels.

Outputs (2)

NameTypeDescription
imagesIMAGE
audioAUDIO