Nodes/comfyui-minimax-h3-audio-T8/H3 Motion Recovery · Bind Separate Pass 2 (T8 EXP)
ComfyUI Node

H3 Motion Recovery · Bind Separate Pass 2 (T8 EXP)

Bind the repair pass, then let it touch nothing else

By T8mars·Created 2 months ago·Updated about 7 hours ago· 1,158
H3 Motion Recovery · Bind Separate Pass 2 (T8 EXP)
  • motion_plan
  • baseline_frames
  • baseline_audio
  • smeared_frames
  • smeared_audio
  • model
  • sampler
  • sigmas
  • av_latent
  • parent_plan
  • parent_frames
  • parent_audio
  • model
  • sampler
  • sigmas
  • stage_context
  • report_json
◄prepare_report_json—►

What it is

This is where a Motion Recovery second pass gets its identity. You bring the signed motion plan, the original (baseline) frames and audio, the smeared/expanded frames and audio seed, the ACTUAL AV latent you're going to sample, and the external MODEL, SAMPLER and SIGMAS - and it verifies that all of those stories match each other, then attaches a stage context that a downstream audit can confirm later.

What it does not do is just as important, because this route has a reputation for mystery artifacts: it does not run a VAE, a sampler, a phase vocoder, or make any delivery decision. So if you hear an audio artifact, it did not come from this node. Everything that produces pixels or samples is a visible node in your graph.

Outputs are model, sampler, sigmas (passed through), stage_context and report_json.

What it's checking, concretely

These aren't vibes-based validations - the source is unusually specific, and knowing the rules saves you from confusing errors:

  • The plan must be ready and its expanded length must exceed its world length. A plan that never expanded isn't a second-pass plan.
  • baseline_frames must match the plan's recorded frame shape.
  • smeared_frames must equal the baseline frames index-expanded by the plan's hold mapping. In other words: you can't hand it any old smear. It has to be this smear of this baseline. That's a strong guarantee, and it's the reason a mismatched pair fails loudly instead of producing a subtly wrong repair.
  • smeared_audio's sample rate and length must match the prepare step's expectation - and if prepare used the "invented seed" mode, that audio must be stereo silence at 32 kHz. Which is exactly what the phase-vocoder route wants as a starting point.
  • The prepare_report_json must agree with the current plan (plan SHA, world length, expanded length).
  • The av_latent must carry the plan's SHA in its metadata - the latent has to be from this plan, not merely shaped like it.

If a parent segment is involved, the optional parent_plan, parent_frames and parent_audio bind this stage to that accepted parent as well.

Inputs and outputs

Inputs: motion_plan, baseline_frames, baseline_audio, smeared_frames, smeared_audio, prepare_report_json, model, sampler, sigmas, av_latent, plus optional parent_plan, parent_frames, parent_audio.

Outputs: model, sampler, sigmas, stage_context, report_json.

Wire model and sampler/sigmas onward through your guider into the sampler, and - if you want a verified result rather than just a latent - use the pack's stage sampler so a T8_STAGE_RESULT gets produced. That result is what MiniMaxH3MotionStageAuditEXPT8 consumes.

Frozen first pass + prepare → Bind → guider → sampler → Stage Sampler → Motion Stage Audit

Install

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

Manager: MiniMax H3 Audio T8, then fully quit ComfyUI, restart, refresh the page. If nodes are red, update ComfyUI core, the frontend and Manager together - the pack's own troubleshooting says updating only the custom node often isn't enough, since these EXP nodes bind to native H3 APIs in core.

Disk: H3 transformer in models/diffusion_models, Qwen3-VL encoder in models/text_encoders, video and audio VAEs in models/vae. No weights in the repo; no Python packages installed either (requirements.txt is deliberately empty of them so your torch/CUDA stack survives). Start from a 57-motion-recovery-split graph - Full, Windowed, EAV, Relay and freeze-first variants all exist.

Common issues

"Motion smeared frames do not match baseline hold mapping." You regenerated the smear, or you're pointing at a different take's frames. Rebuild the expanded frames from this baseline, or re-bind with the matching plan.

"AV latent is not from this signed plan." The latent lost or never had the plan's metadata - very common when you reload an older latent from disk instead of the route's own loader.

"Motion smeared audio clock differs from preparation." Sample rate or length disagrees with what prepare computed. Check the frame rate assumption and whether the prepare step used the invented-silence seed mode.

It runs fine and nothing improves. Pass two refines this smear. If pass one is beyond what the expansion mapping can represent, no binding discipline will save it - go back and shoot a less destroyed first pass.

CategoryT8/MiniMax H3/Modular Sampling/Experimental

Inputs (13)

NameTypeDefaultDescription
motion_planH3_T8_MOTION_RECOVERY_PLAN—
baseline_framesIMAGE—
baseline_audioAUDIO—
smeared_framesIMAGE—
smeared_audioAUDIO—
prepare_report_jsonSTRING—
modelMODEL—
samplerSAMPLER—
sigmasSIGMAS—
av_latentLATENT—
parent_planoptH3_T8_MOTION_RECOVERY_PLAN—
parent_framesoptIMAGE—
parent_audiooptAUDIO—

Outputs (5)

NameTypeDescription
modelMODEL—
samplerSAMPLER—
sigmasSIGMAS—
stage_contextT8_STAGE_CONTEXT—
report_jsonSTRING—