H3 Chunked v5 · Project External Relay to Window (T8 EXP)
Your 141-frame prompt timeline can't fit a 136-frame window — fix that here
- raw_high_model
- relay_model
- relay_positive
- relay_full_av_latent
- prompt_relay_plan
- partial4_denoised_output
- lifted_full_av
- prepared
- plan
- sigmas
- previous_result
- model
- positive
- runtime
- report_json
Prompt Relay is this pack's timeline-script system: persistent scene text on a global layer, one-off actions and dialogue as timed local events, all bound to the model so attention is routed per event. It's the same instinct as LTX's Director timeline - describe a schedule instead of writing a paragraph and praying.
The annoyance is arithmetic. A Relay plan aligned to a full clip's packed layout doesn't fit a v5 refine window. The node description puts the specific case bluntly: the 136-frame first window cannot consume an unprojected, 141-frame-aligned Relay layout. H3 Chunked v5 · Project External Relay to Window is the adapter that authenticates the full-clip pair and rebinds its event coordinates and packed AV layout to one actual window - without touching the global plan or the sampling trajectory.
Inputs and outputs
Required: raw_high_model (the model before Relay binding), relay_model, relay_positive, relay_full_av_latent, prompt_relay_plan, partial4_denoised_output, lifted_full_av, prepared, plan, sigmas, window_index. Optional previous_result for windows after the first.
That long list is mostly identity: the node needs to know the source, the one global lift, the shared preparation, the plan and the window number before it will rebind anything. Change any of them and the projected binding stops matching at sampling time - which is by design.
Outputs: model (Relay-bound, for this window only), positive (the projected conditioning), runtime (a T8_CHUNKED_V5_RELAY_RUNTIME) and report_json. Wire model and positive into the matching One Joint AV PASS2 Window, and runtime into H3 Chunked v5 · Window Relay Actual Calls.
The projection preserves absolute motion time and only re-grids the spatial/temporal layout - local event timings and audio time coordinates stay where you wrote them. It also re-authenticates that the conditioning pair really is a Relay pair; a mismatched positive gets rejected rather than quietly projected.
One projection per window
This is not a fan-out node. Window 0 and window 1 each need their own projection, because each binds different event coordinates. That's also why the pack keeps a per-window Relay loader in the example graphs - the Relay text for a window is genuinely a separate thing you can edit, which is the whole reason you'd chunk in the first place.
Install
Manager → search MiniMax H3 Audio T8, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Fully restart ComfyUI, then refresh the browser tab. You need a recent ComfyUI with native H3 support, plus the H3 main model, Qwen text encoder and both VAEs in place (models/diffusion_models, models/text_encoders, models/vae - the README's model table has the details). No extra pip packages; the deliberately empty requirements.txt means installing this pack can't swap out ComfyUI's Torch/CUDA. For a working reference, the repo's examples/workflows/54-chunked-v5-split set has per-window Relay variants.
Where it goes wrong
"Binding changed" at sampling time. You edited the Relay plan, reloaded a different Relay conditioning, or swapped a LoRA between building the projection and running the window. Rebuild the projection node rather than trying to coerce it.
Relay + EAV on the same window. The EAV apply node takes a relay_positive for the combined case, but the pack says Relay composition isn't qualified yet. If you're combining, you're past the documented path, and the standalone Relay audit won't certify the combination.
Different plan lengths between windows. Every window projects from the same global plan. Two plan nodes with different event tables in one graph is a debugging session you don't want.
Everything is red. Nine times out of ten in this repo it's a duplicate install: an old copy of the pack in custom_nodes serving stale schemas. Rename it with a .disabled suffix (leading underscores don't disable a pack), restart, and verify python_module in /object_info.
And keep the honest framing in mind: the projection proves your events landed on the right window. It doesn't prove the dialogue reads correctly on screen. That's what the audit is for, and even that is just a call count.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| raw_high_model | MODEL | — | |
| relay_model | MODEL | — | |
| relay_positive | CONDITIONING | — | |
| relay_full_av_latent | LATENT | — | |
| prompt_relay_plan | H3_T8_PROMPT_RELAY_PLAN | — | |
| partial4_denoised_output | LATENT | — | |
| lifted_full_av | LATENT | — | |
| prepared | T8_CHUNKED_V5_PREPARED | — | |
| plan | T8_H3_CHUNKED_TWO_PASS_PLAN | — | |
| sigmas | SIGMAS | — | |
| window_index | INT | 00–9999 | — |
| previous_resultopt | T8_CHUNKED_V5_WINDOW_RESULT | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| runtime | T8_CHUNKED_V5_RELAY_RUNTIME | — |
| report_json | STRING | — |