Nodes/H3 Relay/H3 · Finish Windows
ComfyUI Node

H3 · Finish Windows

The node that turns a pile of states into an actual clip

By akatz-ai·Created 2 months ago·Updated a day ago· 30
H3 · Finish Windows
  • state
  • source_audio
  • frames
  • audio
  • fps
  • report
◄audio_modesource►

You've rendered every window, the loop has assembled them, and now you want the thing you came for: an IMAGE batch, an audio track, a frame rate, and whatever you wire those into. H3 · Finish Windows is the exit door of the H3 Relay timeline, and it's deliberately boring - it is the node that refuses to hand you a subtly wrong clip.

What it guarantees

Two things, both of which you'd otherwise discover in your editor at 1 a.m.

First: coverage. It will not emit frames unless the assembled state covers exactly the source timeline you planned - not one frame short, not one frame long. Every window in the pack repeats one boundary frame, and every window carries tail padding so H3 gets a legal size. Finish Windows is where both of those get accounted for one last time. If something in the chain dropped a frame, this fails instead of publishing.

Second: the padding never ships. The state records how many frames of initial history it started with (the segment case, where you resumed from saved frames). Those frames exist in the assembly only to give H3 context. Finish Windows slices them off the front of both the picture and the audio, so what comes out starts at frame zero of your source, not at frame negative-eighteen.

Inputs and outputs

Required: state - the H3_RELAY_WINDOW_STATE coming off End Loop - and audio_mode, which is the one decision worth thinking about:

  • source - your original audio, trimmed to exactly the delivered frame count. The default, and the right answer for character swap.
  • generated - H3's own audio. Use this when you want the model's sound design; it's the whole reason H3 exists in this class.
  • none - silent output. What Person Removal uses, because a removed person's audio shouldn't survive them.

Optional source_audio is where the source mode gets its track - wire Prepare Source's source_audio here.

Four outputs: frames (IMAGE, feeds a native Create Video), audio (AUDIO, same place), fps (a FLOAT, 24.0), and report - a JSON string with source frame count, delivered count, history frames, audio mode, per-window metadata and a complete: true. That report is genuinely useful when a client asks why the render is 7.2 seconds and not 8.

Install

Manager → H3 Relay → restart. Manual clone:

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/akatz-ai/h3-relay.git

ComfyUI 0.37.0+, and by the time you reach this node you've already needed the full H3 model set (FL2VA or Ref2VA diffusion model, Qwen3-VL 32B text encoder, video VAE, audio VAE) plus whatever LoRA your workflow wants. Note the licence before you build a pipeline on it: the MiniMax H3 Community Licence excludes the US, EU, UK and South Korea, outputs included.

Where people get burned

Completed windows do not cover the exact source timeline is the one error you'll see here, and it always means the same thing: your plan and your render disagree about length. Common causes, roughly in order of frequency: you wired h3_length instead of source_frames into the planner; you changed a window size after the loop already ran and reused stale state; or a window failed silently and the state accumulated short.

The audio slicing is the other sneaky bit. audio_mode: source slices your source audio from the history offset to the delivered end - so if you feed it a track that isn't the same clip you prepared, you get the wrong segment, exactly in sync with the wrong thing. Feed it the same source_audio you gave Window Inputs.

Finally: this node outputs IMAGE and AUDIO, not VIDEO. You need a native Create Video + Save Video (or the pack's Assemble node, if you're using the staged sequence path) to actually get a file. Plenty of people stare at the node looking for an MP4 output that was never going to be there.

CategoryH3 Relay/timeline

Inputs (3)

NameTypeDefaultDescription
stateH3_RELAY_WINDOW_STATE—
audio_modeCOMBOsource3 options: source, generated, none
source_audiooptAUDIO—

Outputs (4)

NameTypeDescription
framesIMAGE—
audioAUDIO—
fpsFLOAT—
reportSTRING—