Nodes/Comfyui-MMH3-UltimateUpscale/MMH3 Temporal Split Params
ComfyUI Node

MMH3 Temporal Split Params

Chunking long H3 clips without showing the cuts

By bbaudio-2025·Created 3 days ago·Updated 2 days ago· 88
MMH3 Temporal Split Params
    • temporal_split_param
    chunk_length136
    temporal_overlap17
    anchor_strength1.00

    Here's the problem this node solves: H3 can generate a 15-second clip, and 15 seconds at 24fps is 360 frames. Try to re-sample all 360 frames as one latent and your VRAM laughs at you. MMH3 Temporal Split Params is the outer loop of the MMH3 Ultimate Upscale pipeline - it bundles the settings for cutting the clip into overlapping time chunks so arbitrarily long videos fit in memory. The part that makes it non-trivial is the seams: a naive "cut, process, paste" gives you visible jumps every few seconds. This node has three knobs to stop that.

    How it works

    The clip is chopped into chunks of chunk_length frames with temporal_overlap frames of overlap between neighbors. Each chunk is processed independently, then blended back together with a linear cross-fade over the overlap region, so a transition between chunks is a smooth dissolve rather than a hard cut.

    The clever bit is anchor_strength. At the start of every chunk after the first, the chunk's frame-0 keyframe is replaced by the previous chunk's re-sampled boundary frame - that's the "Anchor MiniMax H3 Latent" trick this pack adapts. The result is pinned with a strength of 0.999 by default, which mirrors the model's own default: the seam region keeps the previous chunk's content almost exactly, so the new chunk starts from a state the model already believes in instead of one it has to invent. That's what kills the detail-mismatch you'd otherwise see at each cut.

    The inputs that matter

    Three inputs, and the first two have a quirk that will trip you up if you don't know it: everything is measured in pixel frames on H3's 17-frame keyframe grid. The node validates this and raises a ValueError if you feed it anything that isn't a multiple of 17.

    • chunk_length (default 136) - target frames per chunk. 136 ≈ 5.7 seconds at 24fps, 153 ≈ 6.4s. Longer chunks mean fewer seams but more VRAM per chunk; that's the trade-off you're actually making here.
    • temporal_overlap (default 17) - overlap frames between chunks, also a multiple of 17. 17 is the recommended value: one full keyframe grid step. Must be smaller than chunk_length.
    • anchor_strength (default 0.999) - how much of the previous chunk's boundary the anchor keeps: 1.0 for exact content, 0.999 for the model default, 0.0 to disable anchoring entirely. You basically never need to touch this, but if a seam still shows after everything else, dropping it toward 0 lets the chunk re-anchor freely instead of clamping to the old frame.

    The single output, temporal_split_param, feeds the temporal_split_param input on MMH3 Ultimate Upscale. Leave it unconnected and the main node treats the whole latent as one chunk - which is correct for short clips and wrong (or OOM) for long ones.

    Install and notes

    Same as the rest of the pack: Comfyui-MMH3-UltimateUpscale in ComfyUI Manager, or git clone https://github.com/bbaudio-2025/Comfyui-MMH3-UltimateUpscale into ComfyUI/custom_nodes and restart. No dependencies, no models - pure settings.

    The one thing to remember: this is the outer loop, so the spatial tiling (Spatial Split Params) runs inside each chunk. A long, high-res clip gets both - time chunks outside, tile grid inside. If you're only dealing with a short clip, you can skip this node entirely and let the main node process it as a single chunk; the temporal split only earns its keep once the video is long enough that one chunk doesn't fit your VRAM. The 17-multiple rule is the only real footgun, and the node will yell at you before it produces garbage, so it's a friendly footgun.

    Categorymodel/latent/minimax

    Inputs (3)

    NameTypeDefaultDescription
    chunk_lengthINT13617–100000Target pixel frames per chunk (at 24 fps). MUST be a multiple of 17 (one keyframe grid step). 136 = ~5.7s, 153 = ~6.4s.
    temporal_overlapINT170–100000Pixel frames of overlap between consecutive chunks. MUST be a multiple of 17; recommended 17. Must be smaller than chunk_length.
    anchor_strengthFLOAT1.000–1How much of the previous chunk's re-sampled boundary the frozen frame-0 anchor keeps: 1.0 = exact content, 0.999 = model default, 0.0 = no anchoring.

    Outputs (1)

    NameTypeDescription
    temporal_split_paramH3_TEMPORAL_PARAMTemporal split settings consumed by 'MMH3 Ultimate Upscale'.