Frame Ramp Boogie
Slow Motion That Blends Frames Instead of Repeating Them
- images
- images
- original_count
- new_count
- info
There are two ways to slow down a clip, and they look nothing alike. The cheap way duplicates frames - the video gets longer, but motion stutters because nothing new is actually drawn. The good way interpolates: for every pair of frames you insert a new one that's a blend of both, so the action glides. Frame Ramp Boogie is the blending kind, GPU-accelerated and with real control over how the blend happens.
Fair warning about expectations: this is not optical-flow interpolation. There's no motion estimation, no RIFE-class warping here. It blends adjacent frames - the classic cross-fade-between-frames trick. That's perfect for smoothing, subtle slow-motion, and stylized ramps, and it will never hallucinate the kind of true synthesized motion a flow-based interpolator does. Knowing that up front saves you the disappointment.
How it works
Give it an image batch with at least two frames. For every consecutive pair, it inserts frames_to_insert blended intermediates:
frames_to_insert = 1→ one new frame per pair, so 2x the output2→ 3x output,3→ 4x, and so on up to 32 per pair
The blend weight between frame A and frame B follows the easing curve, which is where the "ramp" in the name lives:
linear- constant-speed blend, the plain crossfadeease_in/ease_out- accelerating or decelerating blendsease_in_out- the smooth S-curve, natural for most motionsmooth- Hermite smoothstepcubic_bezier- full manual curve: pick a preset (ease,ease_in,ease_out,ease_in_out,sharp,gentle) or gocustomand drag thep1_x/p1_y/p2_x/p2_ycontrol handles
The second control is target_region: interpolate the whole batch, or just the start, middle, or end with region_size (fraction of the batch, default 0.33). That's the feature that makes this more than a dumb slow-mo - you can slow just the end of a shot for a ramp-to-freeze, or ease into a loop.
Outputs: images (the interpolated batch), original_count and new_count (frame counts, for sanity checks and downstream math), and info (a description of what ran). Keep the count outputs handy - anything downstream that assumed the original frame count will be off, and these are how you recompute.
Install
Search "Trent Nodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TrentHunter82/TrentNodes.git
cd TrentNodes
pip install -r requirements.txt
No model downloads - it's pure tensor blending on the GPU. Restart ComfyUI after installing. (Manager can be flaky on this pack per the author's early-rename note; manual clone if so.)
Common issues
- "It looks like a double exposure." On fast motion, blending adjacent frames ghosts the movement - that's inherent to blend interpolation. Slow the source motion or keep
frames_to_insertlow. For true motion synthesis you need a flow-based tool. - Unexpected output length.
new_countis roughlyoriginal_count × (frames_to_insert + 1)minus the tail pair's slack - always read it from the output rather than predicting. - Region does nothing. If
target_regionisstart/middle/end, rememberregion_sizedecides how much of the batch is affected. Tinyregion_size= tiny effect.
For a quick 2x smooth-out, a stylized easing ramp, or adding a slow settle to the end of a shot, this is the node. Just don't ask it for RIFE-grade motion synthesis - it's a blend, done beautifully, not a magic motion generator.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Image batch to interpolate (needs 2+ frames) | |
| frames_to_insert | INT | 11–32 | Frames to blend per pair (1 = 2x output, 2 = 3x, 3 = 4x) |
| easing | COMBO | linear | Blend curve shape (see preview below) |
| target_region | COMBO | full_batch | Where to interpolate: full_batch (all), or just start/middle/end |
| region_sizeopt | FLOAT | 0.330.1–1 | How much of the batch to affect (0.33 = one-third, 0.5 = half) |
| bezier_presetopt | COMBO | ease | Curve shape preset (choose custom for manual control - see preview) |
| p1_xopt | FLOAT | 0.250–1 | First control handle X (see curve preview) |
| p1_yopt | FLOAT | 0.100–1 | First control handle Y (see curve preview) |
| p2_xopt | FLOAT | 0.250–1 | Second control handle X (see curve preview) |
| p2_yopt | FLOAT | 1.000–1 | Second control handle Y (see curve preview) |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| original_count | INT | — |
| new_count | INT | — |
| info | STRING | — |