Speed Ramp - klinter
Punch up a clip with a dynamic frame-speed curve
- frames
- IMAGE
The classic "speed ramp" effect - footage that eases from slow into a fast burst and back - is a staple of action and short-form video. Speed Ramp - klinter applies that effect to a frame tensor, which is exactly what you want when you're doing video work in ComfyUI and don't want to leave the node graph to use a video editor.
Here's the mechanism, because it changes how you think about the outputs: the node takes your frames and a speed curve, then resamples the frame order along cumulative time. Frames in "slow" sections of the curve get repeated or tightly clustered; frames in "fast" sections get skipped. Crucially, the output has the same number of frames as the input - it doesn't add or remove frames. When played back at a constant rate, the reordered sequence reads as speeding up and slowing down. That's a clever and cheap way to do it, and it means the total length of the clip is preserved, which video-extension models downstream tend to appreciate.
Two ways to drive it. With use_preset on (default), you pick a preset_curve: double_peak (a smooth accelerate-to-2x-and-back profile) or quad_burst (a more aggressive 1x→4x spike). With presets off, you can feed your own speed_values for full control. The other inputs are frames (the IMAGE tensor) and base_fps (default 30, 1–120) - and this is where the source is honest with you: base_fps is declared in the schema but isn't used in the current execute path. It's vestigial. Set it to whatever matches your source for future-proofing, but don't expect it to change your output today.
One trap: because it works by reordering existing frames, heavy speed changes show as choppiness - there's no frame interpolation or motion-blur blending here. A 4x section will visibly stutter on slow-moving footage. That's the trade for keeping it light and dependency-free. And frame count stays constant, so a big speed-up in one section necessarily slows the rest of the clip to compensate; you can't get a longer clip out of it.
Install is the pack standard: search "Klinter_nodes" in ComfyUI Manager, or cd ComfyUI/custom_nodes && git clone https://github.com/klinter007/klinter_nodes then restart. Pure numpy/torch, no ffmpeg, no extra deps - it only touches the frames you give it.
If you need a quick tempo curve on a clip inside ComfyUI without installing anything heavy, this does the job. For buttery interpolation you'd want a frame-interpolation pass after it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | IMAGE | — | |
| use_preset | BOOLEAN | true | — |
| preset_curve | COMBO | 2 options: double_peak, quad_burst | |
| base_fps | INT | 301–120 | — |
| speed_values | FLOAT | 1.000.1–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |