H3 Inject Schedule (v2v sigmas, 0.70)
The one knob that decides if your de-rope actually fixes the smear
- model
- SIGMAS
If you only touch one node in ComfyUI-MAINodes, make it this one. H3 Inject Schedule is the quality dial of the whole Motion Lab pipeline - the thing that decides how much of your smeared video actually gets regenerated versus how much of the original's warts come along for the ride. The rest of the pack is plumbing around it.
Quick context, because the node makes no sense without it. MiniMax H3 smears fast motion (backflips, sword arcs, whip-fast reversals) because one latent token spans four pixel frames, and at high motion speed those four frames need four poses a single token can't hold. The Motion Lab workaround is to regenerate the clip as a slowed-down version of itself seeded from the original, then drop the held frames afterward. This node supplies the schedule for that regeneration pass - the "inject" part of the story.
How it works
Inject is a fraction of the denoise trajectory. The node calls ComfyUI's calculate_sigmas for your model and scheduler, then keeps only the last total_steps × inject sigmas - the low-sigma, fine-detail end of the schedule. You wire that truncated SIGMAS into a SamplerCustomAdvanced alongside your smeared init, and the sampler re-denoises on top of it instead of starting from fresh noise. The default, 0.70, is what the author calls "playback-ratified": it was picked by watching clips, not by a metric.
The useful range is 0.5–0.8, and the two ends mean very different things:
- 0.70 (default): the safe, balanced spot. Keeps the init's coarse choreography, re-rolls the rendering.
- 0.50: the metric winner in the author's A/B - sharpest and closest choreography tracking. The trade is that below about 0.5 the init's own artifacts start surviving into the output.
- 0.80: looser, more creative. Above 0.8 the model increasingly ignores your baseline and invents its own choreography, which defeats the point.
Inputs you'll actually set: model, scheduler (default simple; the pipeline graphs often use beta), total_steps (25 for the base model), and inject. There's also a preset dropdown (balanced 0.70, faithful detail 0.50, loose / creative 0.80) that overrides the knob - handy for A/B testing without editing widgets. Single output: SIGMAS, wired into the sampler's sigmas input.
The trap that bites everyone
Do not run a turbo LoRA at its distilled step count in pass 2. A distilled LoRA's step budget assumes a full denoise from noise; pass 2 is a partial re-denoise from a v2v init, so those steps land far too finely and the subject dissolves into a coarse mosaic. The README is blunt about it: an 8-step LoRA at 8 steps of a 0.50 injection failed at every resolution tested; 4 steps of the same schedule was clean. Budget pass-2 steps against the fraction of the schedule you're actually running, not against the LoRA's name.
Installing it
ComfyUI-MAINodes is pure Python - no pip dependencies - so install is just:
cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes
Restart ComfyUI and you'll find this node under sampling/custom_sampling/schedulers (or search the pack title in ComfyUI Manager). The example graphs additionally need ComfyUI-KJNodes for their SageAttention patches; the pack's own nodes don't. And you'll need a MiniMax H3 model on hand - this is a workflow layer, not a model loader. Remember H3's community license geofences the weights out of the US, EU, UK and South Korea, so check your territory before you build a workflow on it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| scheduler | COMBO | simple | 6 options: simple, normal, beta, sgm_uniform, karras, exponential |
| total_steps | INT | 254–100 | — |
| inject | FLOAT | 0.700.05–1 | 0.5-0.8 recommended; lower keeps init artifacts, higher invents choreography |
| presetopt | COMBO | balanced 0.70 (default) | any choice but 'custom' overrides the inject knob |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |