Nodes/comfyui-minimax-h3-audio-T8/H3 Chunked v1 · Project Relay to ONE Segment (T8 EXP)
ComfyUI Node

H3 Chunked v1 · Project Relay to ONE Segment (T8 EXP)

Projecting a whole-clip prompt timeline onto one chunk without breaking it

By T8mars·Created 2 months ago·Updated about 7 hours ago· 1,158
H3 Chunked v1 · Project Relay to ONE Segment (T8 EXP)
  • raw_model
  • relay_model
  • relay_positive
  • relay_full_av_latent
  • prompt_relay_plan
  • source_segment
  • lifted_segment
  • segment_spec
  • pass2_context
  • plan
  • sigmas
  • previous_result
  • model
  • positive
  • runtime
  • report_json

You built a lovely prompt timeline for an eight-second clip: scene description that persists, three lines of dialogue at three timestamps. Then you decided to render it in three chunks. Now what? Splitting the text per chunk by hand is how you get a character who changes clothes between segments.

H3 Chunked v1 · Project Relay to ONE Segment is the adapter. You keep the one full-clip Relay plan and conditioning pair, and this node re-projects their event coordinates and packed AV layout onto one actual v1 temporal segment - including the anchor from the previous completed segment. One instance per PASS2 segment, wired in front of it.

Why this needs a node at all

A Prompt Relay plan is bound to a model as a packed layout: event timings, text token ranges and audio time coordinates are all laid out against the whole clip's frame grid. A 34-frame segment doesn't share that grid. If you just hand the full-clip conditioning to a segment sampler, you're asking the model to attend to events that occur outside the window it can see - best case it ignores them, worst case it smear-copies the wrong moment.

So the node authenticates the pair you supplied (relay_model, relay_positive, relay_full_av_latent and the prompt_relay_plan), then rebinds those event coordinates and the layout to the segment, preserving absolute motion time. What it deliberately does not do is change the global plan or the legacy sampling trajectory - the original all-in-one chunked math stays authoritative, which is why old chunked behaviour and new explicit graphs agree.

Inputs and outputs

The required set is long because it's an identity check, not a UI: raw_model (the model without the Relay binding), relay_model, relay_positive, relay_full_av_latent, prompt_relay_plan, source_segment, lifted_segment, segment_spec, pass2_context, plan and sigmas. The optional previous_result is how the node gets the previous segment's anchor - it needs to know what already happened, otherwise the opening of segment 2 has no continuity.

Out comes model (the Relay-bound model for this segment), positive (the projected conditioning), runtime (the T8_CHUNKED_V1_LOCAL_RELAY_RUNTIME), and report_json.

Wire model and positive into the PASS2 segment's model and positive, and wire runtime into the matching MiniMaxH3ChunkedV1RelayAuditEXPT8. If you don't run the audit, you have no idea whether the routing fired - a wired patch is not evidence.

Constraint worth reading twice

This is the full-frame, locked-input-audio v1 contract only. The node requires full_frame_safe; spatial tiles have no Relay certification. And your input audio has to be locked, because the whole point of the projection is that audio time coordinates stay put. Break either and you're off the qualified path.

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 and refresh the tab. Recent Core with native H3 support is a hard requirement. Base nodes pull no extra pip packages - the pack keeps requirements.txt empty so an install can't stomp your Torch/CUDA build. The Relay plan itself comes from the pack's Prompt Relay Plan node; weights come from t8star on HuggingFace (main model in models/diffusion_models, Qwen in models/text_encoders, video and audio VAEs in models/vae).

Where it goes wrong

Binding-changed errors. Change the plan, swap a LoRA, or reorder the Relay loader after you built the graph and the runtime's binding hash won't match the model at sampling time. Rebuild the projection node in the graph rather than patching around it.

One node per segment. This is not a loop. Three segments means three projection nodes, each on its own segment's source_segment/lifted_segment/segment_spec, each with the right previous_result. The pack's S18 example set was built exactly that way for a reason.

Stale duplicate installs. If the node is absent or its sockets don't match the example workflow, look for a second copy of the pack in custom_nodes; rename it with .disabled (a leading underscore won't disable it), restart, and check python_module in /object_info.

CategoryT8/MiniMax H3/Modular Sampling/Chunked Experimental

Inputs (12)

NameTypeDefaultDescription
raw_modelMODEL—
relay_modelMODEL—
relay_positiveCONDITIONING—
relay_full_av_latentLATENT—
prompt_relay_planH3_T8_PROMPT_RELAY_PLAN—
source_segmentLATENT—
lifted_segmentLATENT—
segment_specT8_CHUNKED_SOURCE_SEGMENT—
pass2_contextT8_CHUNKED_PASS2_CONTEXT—
planT8_H3_CHUNKED_TWO_PASS_PLAN—
sigmasSIGMAS—
previous_resultoptT8_CHUNKED_PASS2_RESULT—

Outputs (4)

NameTypeDescription
modelMODEL—
positiveCONDITIONING—
runtimeT8_CHUNKED_V1_LOCAL_RELAY_RUNTIME—
report_jsonSTRING—