MiniMax H3 Text-to-Video Sampler
The MiniMax H3 sampler, and the fine print
- model
- positive
- negative
- video_latent
- joint_audio
The whole reason this pack exists: MiniMax H3 - the 33B omni-modal video model with native, jointly-generated audio that went open-weights in August 2026 - without paying for a Hailuo API key. MiniMaxH3TextToVideoSampler is the pure text-to-video entry point. Prompt goes in, video latent comes out, no start image required, nothing calls an API. It's the node you reach for when you have a sentence and want a clip, and it's the cleanest on-ramp to everything else in the pack.
Be clear about what "pure" means here, though. This node is a sampler in the ComfyUI sense, not a model loader: you feed it a MODEL from a standard CheckpointLoader or UNETLoader (the H3 checkpoint), plus positive and negative CONDITIONING from a CLIP Text Encode. The full H3 pipeline is still CheckpointLoader → text encode → this node → VAE Decode → export. This node just does the sampling part, plus the audio part if your checkpoint has one.
How it works. It builds an empty latent shaped like H3 expects - [1, channels, T, H/8, W/8], where channels defaults to 16 and the temporal dimension is (num_frames − 1) / 4 + 1 (the model's 4× temporal compression). Then it runs the standard ComfyUI sampling loop at full denoise. Two things are H3-specific. motion_strength scales the magnitude of the initial noise: the source multiplies the prepared noise by this value, on the theory that H3 reads elevated variance as a cue for more inter-frame motion. And generate_audio, if on, calls the model's decode_joint_audio(...) method to pull a synchronized track.
The inputs you actually touch. Most of the sampler controls are standard ComfyUI fare - steps (default 30), cfg (default 6), sampler_name, scheduler, seed. The ones that matter for H3:
aspect_ratio- presets that set both dimensions at once: 16:9 → 848×480, 9:16 → 480×848, 1:1 → 640×640, 4:3 → 768×576, orcustomto use the rawwidth/heightinputs.motion_strength(0–2, default 1) - how much inter-frame motion to ask for. Below 1, calmer, more locked-down clips; above 1, wilder but you're cranking noise, so expect the odd artifact.num_frames(9–257, step 8, default 65) - remember the 4× compression: 65 frames is only about 2.7 seconds at 24 fps.
Outputs. video_latent (LATENT) goes to a VAE Decode node to become frames; joint_audio (AUDIO) wires straight into MiniMaxH3VideoExport's audio input if you want a clip with sound.
Install. ComfyUI Manager, search "Minimax-H3-Video-Music-Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/Minimax-H3-Video-Music-Nodes
Restart ComfyUI. The pack needs torch, torchaudio, numpy, and Pillow (the actual requirements.txt - lightweight, no heavy extras).
Where people get burned. Three things, in rough order of pain. First, the license is genuinely weird: the MiniMax H3 Community License geofences the local weights out of the US, EU, UK, and South Korea - outputs included. If you're in one of those regions you're not licensed to run the weights locally, period; the hosted API is the sanctioned path there. That's a model problem, not this pack's, but it's the first thing to know before you download ~42.5GB of weights. Second, there's still no verified consumer-VRAM floor for H3 - wait for the community quantization wave before assuming your card runs it. Third, decode_joint_audio is one of the pack's explicitly-flagged placeholders: if your "merged into core" H3 build doesn't expose it, you get silent audio, not an error. This is a fresh, single-commit pack by a one-person author (TensorVizion), so treat the audio path as "check it against your build" rather than settled fact.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| aspect_ratio | COMBO | 5 options: 16:9, 9:16, 1:1, 4:3, custom | |
| width | INT | 84864–2048 | — |
| height | INT | 48064–2048 | — |
| num_frames | INT | 659–257 | — |
| motion_strength | FLOAT | 1.000–2 | — |
| steps | INT | 301–150 | — |
| cfg | FLOAT | 6.00–30 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| seed | INT | 00–18446744073709550000 | — |
| generate_audio | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_latent | LATENT | — |
| joint_audio | AUDIO | — |