H3 Extend Take (seconds -> windows)
Type how long you want, get the window math done for you
- model
- num_shots
- frames_per_shot
- total_frames
- summary
MiniMax-H3 natively generates blocks of roughly 10-15 seconds, and if you want a 65-second take, somebody has to work out how many windows that is, how many frames each, and how the joins line up. H3ExtendTake is that somebody. Feed it "65 seconds," and it hands you the window count and frames-per-window the chain samplers need - plus the numbers for the prompt writer, so the dialogue budget matches the actual windows. It's the standalone version of the take_seconds feature that shipped in the 2.6.0 "extend take" release, exposed as a node for graphs that want the sizing logic outside the MASTER CONTROLS panel.
How it works
The core decision is window: how many frames per window. The default is auto, which computes the largest window whose estimated activation pool fits beside the model's weights on your card - the fewest joins that won't thrash VRAM. That estimate is only as good as the weight size it assumes: wire your loaded MODEL into the optional model input and it uses the real weight size; otherwise it assumes 15GB. Pick an explicit window value (243, 226, 209, 192, … 90) and it sizes around that instead. take_seconds (3 to 600, default 30) is the target; the last window may run a little long rather than short, which is the right trade - better an extra half-second than a truncated one.
The rest is plumbing: width, height, fps (keep 24; other rates audibly shift voice accents) and pin_frames (the sampler's picture pin, the head-trim per join - 22 unless you changed it on the sampler).
Outputs: num_shots, frames_per_shot, total_frames - wire these into the sampler and the writer's dialogue pacing - plus a human-readable summary string.
How it fits the bigger picture
This node is the front half of the extend-take flow. The writer, in its extend-take join style, writes one continuous speech and cuts it across the windows at sentence boundaries; the memory sampler chains the windows under context_pin, and the result is H3 continuing the speech across every join in its own voice - no TTS, no per-shot dialogue budget to think about. The README's honest limits apply though: keep extend takes to about four windows (~30-40s) for now, because the chain's texture ratchet is not fully solved for very long takes - around +13% fine texture per join measured at 736x1280. Under four windows it's slight; at seven it's visible sharpening.
Install
Ships in the H3 Multishot pack:
cd ComfyUI/custom_nodes
git clone https://github.com/jlucasmcrell/ComfyUI-H3-Multishot
or ComfyUI-Manager → H3 Multishot. Restart; ComfyUI v0.30.0+.
Wiring the model input is the one thing people skip, and it's exactly what makes auto honest. Without it you get the 15GB guess; with it you get a window sized for the quant you actually loaded. One wire, real difference on a tight card.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| take_seconds | FLOAT | 30.03–600 | How long the finished take should be. Windows are derived; the last one may run a little long rather than short. |
| window | COMBO | auto | Frames per window. auto = the largest window whose estimated activation pool fits beside the model's weights on THIS card (fewest joins that will not thrash). Wire the MODEL for a real weight size; otherwise 15 GB is assumed. Pick a number to override. |
| width | INT | 73664–2048 | Render width - wire from MASTER CONTROLS. |
| height | INT | 128064–2048 | Render height - wire from MASTER CONTROLS. |
| fps | INT | 241–60 | — |
| pin_frames | INT | 220–56 | The sampler's picture pin (head trim per join). 22 unless you changed it on the sampler. |
| modelopt | MODEL | Optional: the loaded H3 model, so auto can size the weights. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| num_shots | INT | — |
| frames_per_shot | INT | — |
| total_frames | INT | — |
| summary | STRING | — |