KfSinusoidalAdjustFrequency
Speed up a sine curve without rebuilding it
- curve
- KEYFRAMED_CURVE
- SINUSOIDAL_CURVE
You've built a sine curve that drives some parameter - a conditioning weight, a strength, a mask - and now you realize it oscillates too slowly. The lazy move is to delete the constructor node and retype the whole thing. The smarter move is this node: feed it the existing SINUSOIDAL_CURVE, type in a frequency adjustment, and get back the same curve with the oscillation sped up or slowed down.
This is one of the little "adjust" utilities in the keyframed family from dmarx's ComfyUI-Keyframed pack. It doesn't make anything new - it takes a curve you already have and shifts one of its defining numbers, so you can keep the rest of your graph wired up while you tune.
How it works
Under the hood, a sinusoidal curve in the keyframed library stores three numbers: wavelength, phase, and amplitude. This node reads those off your input curve, converts wavelength to frequency (frequency = 1 / wavelength), adds your adjustment on top, converts back, and builds a fresh SinusoidalCurve. Positive values speed the wave up, negative values slow it down.
Two things to keep in mind. First, adjustment is in frequency units (cycles per frame), not wavelength - adding 0.01 to a curve sitting at the default 1/12 is roughly a 12% speed-up, not a small tweak. Second, it's an additive offset to a single float, so you can't animate it over time by wiring a curve into the input; if you want a frequency that changes during the animation, you're better off building a couple of separate curves and blending them with the curve arithmetic nodes.
Inputs and outputs
curve- aSINUSOIDAL_CURVE. It's forced as an input (must come from another node, not a widget), which is exactly right for a modifier.adjustment- aFLOAT, default0, stepped at0.01.
Both outputs - KEYFRAMED_CURVE and SINUSOIDAL_CURVE - carry the same new curve object. Wire the SINUSOIDAL_CURVE output into another sinusoidal adjust node if you're chaining tweaks; wire KEYFRAMED_CURVE into anything that eats a generic curve, like Evaluate Curve At T or Apply Curve To Conditioning.
Installing it
It ships in ComfyUI-Keyframed. Easiest route is ComfyUI Manager: search "ComfyUI-Keyframed" and install. Or, from the terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/dmarx/ComfyUI-Keyframed
Restart ComfyUI after. There are no model files to download - the pack's only real dependency is the tiny keyframed library, which it pip-installs for you on first startup (its requirements.txt literally just says keyframed). That auto-install is the one thing that bites: the first load can stall for a minute while pip runs, and if your environment blocks pip installs, you'll need to pip install keyframed manually before the nodes show up.
Where people get confused: the node lives under the keyframed → sinusoidal category in the menu, alongside its siblings that adjust phase and wavelength. Don't reach for this one if you're thinking in frames-per-cycle - that's the wavelength variant's job.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| curve | SINUSOIDAL_CURVE | — | |
| adjustment | FLOAT | 0.00 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| KEYFRAMED_CURVE | KEYFRAMED_CURVE | — |
| SINUSOIDAL_CURVE | SINUSOIDAL_CURVE | — |