H3 De-RoPE Recover
Putting the pieces back on the clock
- images
- derope
- audio
- images
- audio
- report
H3 De-RoPE Recover is the second half of a two-node trick, and by itself it does almost nothing. H3 De-RoPE Stretch took the fast parts of a MiniMax H3 clip and showed those frames several times over so a sampler had room to redraw the smear. That means the clip you are holding right now is too long - every held frame appears three or four times, so it plays slow. Recover takes the refined, decoded clip plus the derope plan from Stretch and returns one frame per source frame, at the source timing, with the audio to match.
That is the whole job. It is the node that makes the trick invisible.
Inputs and outputs
images is the refined clip, decoded from the sampler's output - the over-long one. derope is the WAS_H3_DEROPE plan output of H3 De-RoPE Stretch. Both are required, and the plan is what knows which frames were duplicates and which were real.
audio is optional, and the choice is more consequential than it looks. Leave it empty and the node passes out the source audio, which matches the recovered frames exactly - that is the clean path, and the one you want if you have the original soundtrack available. Wire it and the audio decoded from the refining pass gets sped back up to match; the author's own tooltip says it "comes back rough", and you should believe that. Pitch is preserved when it re-times, so it will not chipmunk, but a stretched-then-squeezed decode is not going to sound like the original.
Three outputs: images (one frame per source frame, at source timing), audio (the pass's audio at source timing, or the source audio when none was wired, and empty when neither exists - so do not assume you will always get sound), and report, which is the frames-in/frames-out count. Check report. If frames out is not what you expect, the stretch config and the recovery do not agree, and you will notice it as a clip that plays at the wrong speed long before you notice anything about the picture.
The wiring, in full
frames/latent + vae ─→ H3 De-RoPE Stretch ─→ latent ─→ your sampler (denoise ← denoise)
─→ derope ─┐
─→ denoise ─┘
sampler latent ─→ VAE Decode ─→ images ──────────────→ H3 De-RoPE Recover ─→ images → Create Video
↑ derope ──────────┘
source audio / audio_vae ─→ audio ─────────→ audio
Do not put a Save Video node between the two halves. The recovery works on decoded frames, so if you write out the stretched version and re-load it, you have to keep the plan alongside it - which is more bookkeeping than just keeping both nodes in the graph.
Install
ComfyUI Manager → search WAS Node Suite v3 → install → restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
ComfyUI 0.14.0+, Python 3.10+. The pack installs no packages of its own - requirements.txt is a comment and no pip runs at install or later. No models to fetch for this node; it just re-orders the frames you hand it. First start (and after an update) is a second or two slower while config.yaml is written and the pack compiles.
Where it goes wrong
Recover with no Stretch plan. You cannot point it at an ordinary clip and have it tidy up the length. Give it the wrong derope and the frame count will not match - the report output is your tell.
Wrong audio path. The common mistake is wiring the sampler pass's decoded audio because it is closer to hand. Take the source audio unless you specifically need the pass's audio, because "rough" is doing real work in that tooltip.
Speed looks wrong. That is almost always a mismatch between the stretch's peak_hold and what the sampler re-rendered, which is why the recommended sampler step count scales with strength - 4 steps after an 8-step pass at 0.5, 13 after 25. If the motion is re-timed rather than smoothed, that ratio is the first thing to check.
Memory. This node carries the whole decoded clip's worth of frames at once. If your card was already tight in the sampler, expect the decode and recovery step to be the next thing that hurts.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The refined clip, decoded from the sampler's output. | |
| derope | WAS_H3_DEROPE | The derope output of H3 De-RoPE Stretch. | |
| audioopt | AUDIO | Leave empty to pass out the source audio, which matches the recovered frames. Wired, audio decoded from the refining pass is sped back up to match and comes back rough. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | One frame per source frame, at the source timing. |
| audio | AUDIO | The pass's audio at the source timing, or the source audio when none is wired. Empty when neither exists. |
| report | STRING | Frames in and frames out. |