Nodes/ComfyUI-MiniMaxH3-Contex-Loop/MiniMax H3 Pass-2 AV Prepare
ComfyUI Node

MiniMax H3 Pass-2 AV Prepare

Turn a video-only upscale into a full H3 pass-2 latent

By ethanfel·Created 17 days ago·Updated about 20 hours ago· 315
MiniMax H3 Pass-2 AV Prepare
  • upscaled_video
  • source_audio
  • model
  • noise
  • sigmas
  • state
  • latent
  • width
  • height
  • status

MiniMax H3 Pass-2 AV Prepare is the node that takes the output of a video-only learned upscaler and turns it into a proper joint H3 pass-2 latent. The reason it exists is that H3 is an AV model: its latent has both video and audio streams, and if you upscale just the video you've silently dropped half the contract. This node puts the audio back, re-noises the video region correctly, and hands you a latent ready for a Disable-Noise pass-2 sample.

Here's the pipeline it sits in. Your first pass rendered an H3 scene and saved the joint AV latent as a checkpoint. In the deferred upscale loop, "Upscale Current Scene" exposes that as separate video and audio latents. A video-only upscaler like LBH (the bundled "Deferred Upscale + De-Rope - H3 LBH 3D" workflow uses LBH 3D) consumes the video latent and emits a bigger, cleaner video latent. But its output has no audio member, and it wasn't built for H3's AV joint structure. Pass-2 Prepare recombines.

The inputs

  • upscaled_video - the 24-channel clean H3 video latent from LBH's 2D/3D latent upscaler.
  • source_audio - the untouched 32-channel audio latent from H3 Upscale Current Scene. This is your saved audio, and it's about to be locked so pass 2 can't rewrite speech.
  • model - the exact pass-2 H3 model, after LoRA and sigma-shift patches. Pass 2 is a different sampling stage, so it gets its own patched model.
  • noise - pass-2 random noise. Only the video member is generated; audio stays at the saved x0.
  • sigmas - the pass-2 sigma schedule. Its first sigma is used for the NestedTensor-safe CONST re-noise.
  • state (optional) - current Upscale state. When the source scene uses Drift-Control AV, the previous HQ latent tail replaces and protects the pass-2 prefix.

What it does, in order

It rejoins the saved audio to the upscaled video, applies MiniMax CONST re-noise to the open video region only (the parts pass 2 is allowed to regenerate), protects a Drift-Control AV prefix from the previous HQ latent when available, inverse-scales for Disable Noise sampling, and locks the audio with a zero denoise mask so speech can't be rewritten. The output latent is a joint H3 AV latent ready for Sampler Custom Advanced with Disable Noise. There's also width/height (exact output pixels inferred from the upscaled latent) and status (stream geometry, audio lock, sigma start).

That "locks audio" step is the part people under-appreciate. Without it, pass 2 would happily re-denoise the audio stream too - a tiny re-noise over a clean audio x0 that turns dialogue into mush. The zero-mask keeps your performance intact while the video region gets its full regeneration budget.

Where it fits

It's the LBH/de-rope child-loop path, distinct from the LTX 2.5 decoded-video V2V path and the whole-video SeedVR2 path. Reach for it when you want spatial upscaling and de-roping in the same regeneration pass, so a later independent upscale can't undo the recovered motion timing - that's a documented design decision, and it's why the bundled workflow exists.

Installing it

Part of ComfyUI-MiniMaxH3-Contex-Loop (ComfyUI Manager: "MiniMax H3 Contex Loop"), or:

cd ComfyUI/custom_nodes && git clone https://github.com/ethanfel/ComfyUI-MiniMaxH3-Contex-Loop.git

Restart ComfyUI. It doesn't bundle LBH or MAINodes - the de-rope path needs ComfyUI-MAINodes (matlowai) installed separately, and the upscaler of your choice. Standing requirements: H3 weights, current ComfyUI with native Add Guide (PR #15439).

Common issues

The classic failure is feeding it a latent from the wrong upscaler - it must be a clean 24-channel H3 video latent from LBH, not a decoded-video upscale or a composite. If pass 2 comes out with artifacts, check that model is the fully patched pass-2 model and that noise was generated for the pass-2 schedule. And the audio-lock isn't optional: if you bypass it, expect speech damage.

Categoryconditioning/minimax/contex_loop/upscale

Inputs (6)

NameTypeDefaultDescription
upscaled_videoLATENT24-channel clean H3 video latent emitted by LBH's 2D/3D latent upscaler.
source_audioLATENTUntouched 32-channel audio latent from H3 Upscale Current Scene.
modelMODELThe exact pass-2 H3 model after LoRA and sigma-shift patches.
noiseNOISEPass-2 random noise. Only the video member is generated; audio stays at the saved x0.
sigmasSIGMASPass-2 sigma schedule. Its first sigma is used for NestedTensor-safe CONST re-noise.
stateoptH3_CHAIN_UPSCALE_STATECurrent Upscale state. When the source scene uses Drift-Control AV, its previous HQ latent tail replaces and protects the pass-2 prefix.

Outputs (4)

NameTypeDescription
latentLATENTJoint H3 AV latent ready for Sampler Custom Advanced with Disable Noise; video is re-noised and audio is masked clean.
widthINTExact output pixel width inferred from the upscaled latent.
heightINTExact output pixel height inferred from the upscaled latent.
statusSTRINGVerified stream geometry, audio lock, and sigma start.