Nodes/ComfyUI-MAINodes/H3 True Clock (density-corrected RoPE t-grid) [experimental]
ComfyUI Node

H3 True Clock (density-corrected RoPE t-grid) [experimental]

Why your held frames play back at double speed, and the fix that's off-distribution

By matlowai·Created 17 days ago·Updated about 17 hours ago· 112
H3 True Clock (density-corrected RoPE t-grid) [experimental]
  • sampler
  • sampler
hold_map

H3 True Clock fixes a bug most people blame on the de-rope itself, and its own README opens with the appropriate level of fear: "the model was trained on uniform time grids and has never seen the one this node builds. Expect it to be able to make things worse." Experimental, default-off, genuinely off-distribution. Read that twice before wiring it.

The bug it fixes

MiniMax-H3's RoPE time axis is physical - the model reads time in real units, roughly 5/3 units per world frame. So when H3 Time Smear dilates a clip by duplicating frames, the model doesn't read it as "slow motion" at all. It reads it as a longer take. The held frames are just more frames of the same scene, and background agents - gulls, crowds, traffic - keep animating through them at their own pace. After H3 Exact Recover drops the held frames, those agents come out accelerated. That's not a smear defect; it's the model being told the span is shorter than it really is.

The fix: this node divides each latent token's RoPE span by the local hold density. The dilated clip's total RoPE duration then equals its world duration, and held copies share one world frame's worth of time. Background agents hold world speed through the held span. That part works - it's the validated result.

The cost, measured

Here's where it gets uncomfortable. The same non-uniform time grid goes to all 50 blocks at every step, and that's off-distribution - the pack measured seam flash at 7.17× a control's 1.87× and jitter at 5.06× against 0.85×. The correction is right and the side effects are real. That tension is exactly why H3 DyRoPE (same pack, same experimental shelf) exists: it splits the grid into physical vs compact and lets you hand the true clock to some blocks or some steps instead of all of them - e.g. blocks 30-49 for timing fidelity, or 40-49 for minimal shimmer. If True Clock is the hammer, DyRoPE is the set of chisels, and the README's dose ladder is worth reading before you use either.

Using it

Wire sampler (the same sampler you'd otherwise pass to SamplerCustomAdvanced) and hold_map - specifically hold_map_used from the H3 Time Smear that made the clip, so the tail pad rides along correctly. Output is the wrapped sampler. Nothing else to set; the whole node is two inputs and one output.

Install

Ships with matlowai/ComfyUI-MAINodes:

cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes

Restart, under sampling/custom_sampling/samplers. No extra Python deps; you need MiniMax-H3 weights and ComfyUI's H3 support (mind the licence's US/EU/UK/Korea carve-outs).

The honest recommendation: judge True Clock on playback, not on meters - the meters can't tell you whether world-speed still holds for the thing you actually care about. And if your clip has a moving background, this node is the difference between "the birds got faster" and "the birds stayed put." Just budget for a seam check, because the fix and the flash travel together.

Categorysampling/custom_sampling/samplers

Inputs (2)

NameTypeDefaultDescription
samplerSAMPLER
hold_mapSTRINGhold_map_used from the H3 Time Smear that made this clip

Outputs (1)

NameTypeDescription
samplerSAMPLER