Nodes/JR MiniMax H3/JR H3 TaoMate Chunk Planner (Experimental)
ComfyUI Node

JR H3 TaoMate Chunk Planner (Experimental)

One dropdown of pure arithmetic that decides whether your 15-second H3 run works

By Goldlionren·Created about a month ago·Updated 2 days ago· 52
JR H3 TaoMate Chunk Planner (Experimental)
    • stream_plan
    • status
    • native_frames
    • audio_ticks
    presetTaoMate 5s Canonical

    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 → the stream_plan input 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.

    CategoryJR MiniMax H3/Experimental

    Inputs (1)

    NameTypeDefaultDescription
    presetCOMBOTaoMate 5s CanonicalFull output timeline: 124 / 243 / 362 frames at 24fps. Keep pass 1 full-length; only pass 2 streams.

    Outputs (4)

    NameTypeDescription
    stream_planJR_H3_STREAM_PLAN
    statusSTRING
    native_framesINT
    audio_ticksINT