Nodes/comfyui-minimax-h3-audio-T8/H16-3 · External Window EAV (T8 EXP)
ComfyUI Node

H16-3 · External Window EAV (T8 EXP)

Bolting EAV onto a single H16 PASS2 window

By T8mars·Created 2 months ago·Updated about 7 hours ago· 1,158
H16-3 · External Window EAV (T8 EXP)
  • model
  • sigmas
  • source_segment
  • lifted_segment
  • segment_spec
  • pass2_context
  • plan
  • eav_config
  • previous_result
  • relay_positive
  • model
  • runtime
  • report_json
  • stage_context
◄audio_outputpreserve_first_pass►

What it is

"H16-3" is the pack's chunked second pass: instead of refining a whole long clip in one go, it splits the finished HIGH clip into temporal windows - the example recipe uses 34-frame windows with 17 frames of overlap - and runs a second sampling pass on each separately. That's how you get detail work on a clip that wouldn't fit in one render.

This node binds the pack's EAV effect to one of those windows. EAV here is the Enhance-A-Video / FETA routing the pack applies inside a stage - a temporal attention effect that changes how the model carries motion across frames - and the selling point is per-window configuration instead of one global setting. Put EAV on the window with the fast pan and leave it off the rest.

The node's own scope note is the honest part: connect the MODEL to that window and audit its actual calls, and external Relay composition needs a separate local projection.

How it works

It takes a MODEL that's already been prepared for this specific window (that's why source_segment, lifted_segment, segment_spec, pass2_context and plan are all inputs - it's not guessing which window it's in), plus the window's sigmas, plus an eav_config that must come from the pack's external Stage EAV Config node. Feed it a hand-rolled config object and it refuses with a type error.

Three checks in the source are worth knowing about because they're the ones you'll trip:

  • Sigmas must be finite and descending, with at least two values. It wants the actual PASS2 schedule, not a placeholder.
  • The MODEL has to carry H3's native AV clocks. If the AV sigma shifts aren't on the model options, it'll tell you it needs them - that's a "you loaded the wrong thing" error.
  • Relay and EAV have to agree. If the incoming MODEL already has Relay routing attached, you must also pass the matching projected relay_positive conditioning, and it asserts the binding. Pass relay_positive without a Relay-projected MODEL and it's an error too. Half a Relay setup is not a setup.

It also handles the overlap properly: the inherited video mask and the previous window's guarded overlap come in with the window geometry, which is why previous_result is an optional input - window 4 wants to know how window 3 ended.

Ports

Required: model, sigmas, source_segment, lifted_segment, segment_spec, pass2_context, plan, eav_config, plus audio_output - which defaults to preserve_first_pass and is the option you should leave alone until you've validated a clip. The other choice, refined_exp, only matters at the final window and is explicitly experimental.

Optional: previous_result (the prior window's result, for overlap handling) and relay_positive (the projected conditioning when Relay is active).

Outputs: model (patched, for this window's sampler), runtime (the typed runtime the audit node consumes), report_json, and stage_context (T8_STAGE_CONTEXT, the identity the stage-level audit and attestation nodes want).

The setting people get wrong

The EAV config's mode has three values: disabled, report_only, and apply_exp. report_only is the default in the config node and it's not a synonym for "off" - it measures and reports what the effect would do. apply_exp is the one that changes the render. There's also a trap the config node's own description calls out: tau=0 is not an off switch. If you want it off, use disabled.

Progression is measured in absolute video sigma across the run (15%–90% by default), and it isn't reset at a stage boundary - so a window's effect range is where the global timeline sits, not where the window starts. That's easy to misread when you're thinking window-by-window.

Install

ComfyUI Manager → 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

Quit ComfyUI fully, restart, refresh the browser. The pack's requirements.txt is deliberately empty so nothing can replace ComfyUI's Torch/CUDA stack; optional EXP features check their own dependencies only when used. You need a recent ComfyUI with native H3 support, H3 weights in models/diffusion_models, Qwen in models/text_encoders, both VAEs in models/vae, and the learned 3D upscaler the H16 plan references. One licence note while you're here: H3's weights exclude the US, EU, UK and South Korea from their licensed territory, so local weights aren't licensed for everyone.

Where it goes wrong

A common one: this node wired in without the plan and segment spec that describe its window. It can't invent the geometry, and the error points at a missing or mismatched window identity rather than saying "you forgot the plan." You need one instance per active window, each bound to its own spec.

The other: assuming an apply_exp EAV is a quality upgrade on faith. The pack's own testing found unit gain from the effect in one measured configuration - real calls, no measurable benefit - and it states repeatedly that EAV apply_exp quality isn't certified across materials. Run it in report_only first, then A/B one window with the same seed and input before you commit a whole clip.

CategoryT8/MiniMax H3/Modular Sampling/H16 Experimental

Inputs (11)

NameTypeDefaultDescription
modelMODEL—
sigmasSIGMAS—
source_segmentLATENT—
lifted_segmentLATENT—
segment_specT8_CHUNKED_SOURCE_SEGMENT—
pass2_contextT8_CHUNKED_PASS2_CONTEXT—
planT8_H3_CHUNKED_TWO_PASS_PLAN—
eav_configT8_STAGE_EAV_CONFIG—
audio_outputCOMBOpreserve_first_pass2 options: preserve_first_pass, refined_exp
previous_resultoptT8_H16_PASS2_RESULT—
relay_positiveoptCONDITIONING—

Outputs (4)

NameTypeDescription
modelMODEL—
runtimeT8_STAGE_EAV_RUNTIME—
report_jsonSTRING—
stage_contextT8_STAGE_CONTEXT—