Nodes/comfyui-minimax-h3-audio-T8/H3 RF · Restart Descent Only (T8 EXP)
ComfyUI Node

H3 RF · Restart Descent Only (T8 EXP)

The 3-step second pass that keeps your audio intact

By T8mars·Created 2 months ago·Updated about 7 hours ago· 1,158
H3 RF · Restart Descent Only (T8 EXP)
  • model
  • rf_handoff
  • model
  • sampler
  • sigmas
  • av_latent
  • stage_context
  • report_json
◄shift_video12.00►
◄shift_audio3.00►
◄restart_video_sigma0.15►
◄restart_steps3►
◄restart_seed1234►

MiniMax H3 generates picture and sound in one pass, which is lovely until you want to fix something: there is no "just redo the last bit" button, because the audio clock is welded to the video clock. MiniMaxH3RFRestartStageSetupEXPT8 is the pack's answer - it sets up a short second descent over an already-nearly-finished clip, at a resolution-independent low sigma, so you spend 3 steps instead of 20.

It sets up. It does not sample. That distinction is the same one every node in this family makes, and it's why they all hand you a sampler and a sigmas instead of a finished latent.

What it actually does

You feed it a T8_RF_HANDOFF from MiniMaxH3RFHandoffEXPT8 (which carries the completed endpoint plus the original template), a model, and five dials:

  • restart_video_sigma (default 0.15, range 0–0.5) - where on the noise schedule the restart begins. This is the one you touch. Higher means the restart has more room to change things; lower means you're polishing.
  • restart_steps (default 3, 0–8) - how many NFE the second descent gets. Zero is a real, explicit no-op, not a hidden fallback.
  • shift_video / shift_audio (defaults 12 / 3) - the two-clock shifts H3 needs, and they must match the family you ran the base pass with.
  • restart_seed (default 1234) - a separate seed from the base pass, because this is a fresh noise draw at the restart sigma.

Out comes model, sampler, sigmas, av_latent, stage_context and report_json. Wire model + sampler + sigmas + av_latent into MiniMaxH3StageSamplerEXPT8 (or a Stage EAV chain feeding it), and stage_context into whatever needs the stage identity - the EAV and Relay nodes validate against it so they can't silently attach to the wrong stage.

The mechanism under the hood: re-noising happens on both clocks, then the descent runs through the stage sampler as exactly one sampling call. The original template stays the inpaint and audio anchor; model, effects and conditioning stay editable per stage, which is the entire point of splitting it out of the old monolithic node.

The bug this node was rebuilt around

Worth knowing even if you never touch the parameters. The pack's RF_JOINT_CLOCK_RESTART_EXP notes describe a platform-level fix shipped in v1.88.1: the old path re-noised the endpoint on both clocks, then a generic dual-clock Euler step rebased the audio a second time. With shifts 12/3 and a 0.15 restart sigma, that second scale was roughly 0.28× - audible as a thin, over-quiet track. The corrected path marks the state as already joint-renoised and delegates, and the measured audio latent std came back to ~0.36, in line with the same-source base. There's also a MiniMaxH3RFRestartJointClockSetupEXPT8 variant if you're on a graph that needs the fix applied at the boundary rather than in the stage setup.

The author's caveat is fair and I'd repeat it: fixing a scaling bug is not a listening test. If your audio still sounds off, the suspect list is a different LoRA, a mismatched shift, or the step count - compare against a same-seed base run before blaming the restart.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8

Restart ComfyUI completely and refresh the page. Manager users: search MiniMax H3 Audio T8. The pack installs no Python dependencies on purpose; it needs a recent ComfyUI core for native H3 and the newer node API.

Gotchas

Ready-made graphs live in examples/workflows/62-rf-restart-split/ (standalone, detail-mixer and two-pass variants, each with minimal/effects/save/resume versions). The resume_* graphs load the base pass from disk instead of rerunning it, and they ship with placeholder artifact_path / SHA values - fill them from an actual save, or they'll fail. A stage result that came from an edited LOW branch is not the same base pass you resumed from; the loader freezes what was saved and will tell you so in the report rather than guessing.

And budget: these are joint-AV jobs. On a 16 GB card, run one at a time.

CategoryT8/MiniMax H3/Modular Sampling/Experimental

Inputs (7)

NameTypeDefaultDescription
modelMODEL—
rf_handoffT8_RF_HANDOFF—
shift_videoFLOAT12.000.01–100—
shift_audioFLOAT3.000.01–100—
restart_video_sigmaFLOAT0.150–0.5—
restart_stepsINT30–8—
restart_seedINT12340–18446744073709550000—

Outputs (6)

NameTypeDescription
modelMODEL—
samplerSAMPLER—
sigmasSIGMAS—
av_latentLATENT—
stage_contextT8_STAGE_CONTEXT—
report_jsonSTRING—