JR H3 TaoMate Chunk Planner (Experimental)
One dropdown of pure arithmetic that decides whether your 15-second H3 run works
- stream_plan
- status
- native_frames
- audio_ticks
A couple dozen lines of Python, no model, no CUDA, no sampling. If your 10-second H3 run refuses to start, this node is usually the answer - or rather, the fact that you didn't listen to it.
What it is
It's the geometry half of the pack's experimental streaming pair. You pick a preset; it emits an immutable JR_H3_STREAM_PLAN plus a status string and two exact lengths. The plan is a contract, not a suggestion: the sampler re-derives the canonical plan from the preset and rejects anything altered, so a half-configured timeline fails loudly instead of sampling the wrong thing.
Why a node for this? Because H3's frame math is the kind where being slightly off is invisible until you've burned a 15-second generation. There's a 5-frame affine prefix, then 17-frame groups mapping to 5 video latents each, with audio latents ticking at 40Hz. So "5 seconds" is nothing round: 124 frames, 5.166667 seconds, 37 video latents, 207 audio ticks.
| preset | native frames | actual seconds | video latents | audio ticks | micro-phases | |---|---:|---:|---:|---:|---:| | TaoMate 5s Canonical (default) | 124 | 5.166667 | 37 | 207 | 4 | | JR 10s Experimental | 243 | 10.125 | 72 | 405 | 8 | | JR 15s Experimental | 362 | 15.083333 | 107 | 603 | 12 |
Each ~5s window is a 2/2/2/1 group pattern, and the prefix belongs only to the start of the whole timeline. Window two therefore adds 119 frames and 35 video latents, not another 124-frame clip - don't concatenate three 124-frame generations and call it 15 seconds. There's no hard-prefix overlap and no session reset at the boundary either. The windows are accounting boundaries; the model's working unit stays the micro-phase.
The inputs and outputs
One input, preset, whose tooltip carries the spec: full output timeline 124 / 243 / 362 frames at 24fps, keep pass 1 full-length, only pass 2 streams.
Four outputs, three of them worth wiring:
stream_plan→ thestream_planinput of JR H3 Streaming Sampler. This is the node's actual product.status→ every window and phase with its exact frame, video-latent and audio-tick ranges. Park it on a text node; when a run misbehaves, this tells you which window you're in.native_frames→ the exact length your upstream has to be. Connect it to a native frame-count input, never a seconds input.audio_ticks→ audio latents, not waveform samples and not frames. Logging value only.
A 10-second run goes: planner preset at 10s, first pass generated full length at 10 seconds, then only the second pass through the streaming sampler. It won't extend an existing 5-second latent - mismatches fail with expected-versus-actual AV dimensions before any sampling. And it chooses no SIGMAS and changes none. That's geometry; your scheduler and shift stay yours.
Installing it
Same pack, nothing extra. ComfyUI Manager → search ComfyUI_JR_MiniMaxH3Node (registry comfyui-jr-minimax-h3-node, publisher goldlionren) → install → restart.
cd ComfyUI/custom_nodes
git clone https://github.com/Goldlionren/ComfyUI_JR_MiniMaxH3Node
<the Python that runs ComfyUI> -m pip install -r ComfyUI_JR_MiniMaxH3Node/requirements.txt
requirements.txt is a single line, imageio-ffmpeg>=0.5; torch, numpy and Pillow come from ComfyUI. The trap is the interpreter - use the exact Python that runs ComfyUI. Update with git pull origin main and the same pip line, then hard-refresh the browser.
Where people get burned
Confusing these presets with the Hard Prefix ones. The pack also ships JR_H3_TemporalChunkSampler and the Sequential Audio suite with their own 141 / 192 / 243 / 345-frame presets and a fixed 12-latent, 39-frame video overlap with 65 audio ticks. Different family, different algorithm, deliberately kept separate - the tables don't interchange, and the streaming sampler isn't a drop-in for it.
Treating 10s and 15s as settled. Read the labels as written: the 5s preset is the canonical default, while the longer two arrived as an experimental extension accepted after manual testing on one user's material - not broad hardware or quality certification. And memory doesn't improve wholesale with duration: the bounded KV budget covers the sampling phases, while the first pass, conditioning, buffers and final decode all still grow with clip length.
Wondering who TaoMate is. It's a nod in the node name to an external H3 reference implementation that inspired this streaming work. The docs cite a specific upstream revision, state that the implementation here is independent, and vendor none of it - nothing to install, and the author deliberately didn't adopt the upstream sigma schedule or its output renormalisation. TaoMate sigma advice from elsewhere describes a different runtime.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | TaoMate 5s Canonical | Full output timeline: 124 / 243 / 362 frames at 24fps. Keep pass 1 full-length; only pass 2 streams. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| stream_plan | JR_H3_STREAM_PLAN | — |
| status | STRING | — |
| native_frames | INT | — |
| audio_ticks | INT | — |