H3 DyRoPE (layer-wise / sigma-faded time geometry) [experimental]
Give the true clock only to the blocks that can afford it
- model
- sampler
- model
- sampler
- report
This is the most research-y node in ComfyUI-MAINodes, and it's the one that best shows how this pack thinks. The question: when you time-smear a clip, the model's RoPE clock stays uniform while the content moves at a speed ramp. That's fine for the de-rope, but background agents in a held span play accelerated because the model was told the span is shorter than it really is. The pack's earlier answer, H3 True Clock, fixed that by telling the model the true world duration - at a measured cost: seam flash 7.17x and jitter 5.06x against the control, because the same non-uniform grid went to all 50 blocks at every step. H3 DyRoPE is the second attempt: hand the true-duration grid out selectively, per block or per sigma, instead of to everything at once.
The two geometries
- Physical = H3 True Clock's grid, the clip's true world duration. This is what fixes the accelerated background.
- Compact = the stock uniform grid the model was trained on. This is what keeps the image on-distribution.
The modes are a dose ladder between them. physical_all reproduces H3 True Clock exactly; compact_all reproduces having no node at all - those are the identity arms, useful for A/B. The *_blocks modes give a named block range one geometry and every other block the other. The fade_* modes give every block one interpolated grid per step, as a function of sigma, complete at fade_end (the spans are interpolated then accumulated, so the grid stays monotone - no time reversal).
What the measurements actually say
The author ran a twelve-arm dose ladder and the numbers tell two stories. Flash is an early-block effect: ten early blocks with true time reproduce the whole True Clock flash; keep true time out of blocks 0-9 and flash sits at control level. Jitter is a dose effect: it scales with how much physical-time exposure the run gets. So there are two recommended settings, and neither is a default:
physical_blocks30-49 - the timing-fidelity setting. World speed holds neutrally; cost is a slight flicker inside the span.physical_blocks40-49 - the minimal-shimmer setting. The cleanest meters on the board (jitter at or below the stock control), but can read slightly over-smooth on some content.fade_physical_to_compactatfade_end 0.7- the flash-free alternative: no flash, visible jitter, timing held.
The mechanism to keep in mind while choosing: less dose than these loses the world-time correction entirely; more dose adds shimmer. There's no setting quieter than 40-49 that's still on time. Presets (timing fidelity, minimal shimmer, flash-free fade) encode the two recommendations plus the fade, so you don't have to type the block numbers.
Wiring and the one real trap
Wire hold_map (from H3 Time Smear's hold_map_used), pass the sampler you'd otherwise hand to SamplerCustomAdvanced into sampler, and - for the *_blocks modes - route the model out of this node into your guider, or the per-block tables never reach the sampler. The one collision: DyRoPE is not composable with H3 Streamed Blocks - both own the double-block replacement slot and ComfyUI keeps only one per block. The fade modes use no block patches and compose fine. H3 Capability Probe is exactly the node that reports this collision if you've stacked them.
This is experimental, off-distribution, and explicitly not a default - the README's verdict is that both recommended settings trade the same two things and "which one is right is a property of your clip." If you only de-rope occasionally, skip it. If background acceleration is driving you mad, it's the tool that was built for exactly that question.
Installing it
Pure Python:
cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes
Restart, look under sampling/custom_sampling/samplers. Example graphs want ComfyUI-KJNodes; the nodes don't. H3 weights are community-licensed - US, EU, UK, South Korea excluded - so make sure you're allowed to run the model underneath.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| sampler | SAMPLER | — | |
| hold_map | STRING | hold_map_used from the H3 Time Smear that made this clip | |
| mode | COMBO | physical_blocks | which blocks/steps see the physical grid |
| block_lo | INT | 300–49 | first block of the range (inclusive), *_blocks modes only |
| block_hi | INT | 490–49 | last block of the range (inclusive), *_blocks modes only |
| fade_end | FLOAT | 0.700–1 | sigma at which the fade completes; linear in sigma from sigma_max down to here |
| presetopt | COMBO | custom | a measured setting overrides the mode/block/fade knobs; custom leaves the knobs in charge (old graphs resolve here) |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| sampler | SAMPLER | — |
| report | STRING | — |