KfSinusoidalAdjustPhase
Slide a sine curve left or right in time
- curve
- KEYFRAMED_CURVE
- SINUSOIDAL_CURVE
Phase is the knob that decides when in the cycle a curve peaks. If your prompt-strength wave is cresting exactly when you don't want it to - say, your "sunset" prompt is at full blast on the frames where the motion is doing its most interesting thing - this node lets you slide the whole curve along the timeline without touching its frequency or amplitude.
It's part of the small "adjust" family in dmarx's ComfyUI-Keyframed pack, the one that treats sine curves as tweakable objects instead of forcing you to rebuild them. KfSinusoidalAdjustPhase is the most fiddly of the three adjust siblings, and also the one you'll actually reach for, because getting the timing of a curve right by mental math is a pain.
How it works
The curve stores wavelength, phase, and amplitude. This node reads those, adds your adjustment to the phase, and returns a new SinusoidalCurve with everything else preserved. Positive adjustment shifts the wave backward in its cycle (the peak comes later in time); negative shifts it forward. It's that simple - one number added, no interpolation surprises.
One detail worth knowing: the adjustment field's step is pi/24 (about 0.1309), not a round decimal. That's deliberate - it's one twenty-fourth of a full turn, so you can nudge the phase in clean 15-degree increments. If you've ever tried to hand-tune a phase offset in radians, you'll appreciate that someone picked a step that snaps to visually even positions instead of arbitrary decimals. You can still type any value you want; the step is just what the slider moves by.
Inputs and outputs
curve- aSINUSOIDAL_CURVE, forced as an input. Must come from another node (a constructor like the wavelength/frequency sine generators, or another adjust node).adjustment- aFLOAT, default0.
Both KEYFRAMED_CURVE and SINUSOIDAL_CURVE outputs hand you the same new curve. Keep the SINUSOIDAL_CURVE output connected if you're planning more tweaks in a chain; use KEYFRAMED_CURVE for anything downstream that takes a generic curve.
Installing it
It's part of ComfyUI-Keyframed. In ComfyUI Manager, search "ComfyUI-Keyframed". Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/dmarx/ComfyUI-Keyframed
Restart ComfyUI after. No model downloads. The only dependency is the keyframed Python library, which the pack auto-installs on first startup - give that first load a moment, and if your pip environment is locked down, pip install keyframed by hand. The node shows up under keyframed → sinusoidal. If you find yourself constantly nudging phase by small amounts to align two curves, this is the node that replaces a spreadsheet's worth of guesswork.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| curve | SINUSOIDAL_CURVE | — | |
| adjustment | FLOAT | 0.0000 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| KEYFRAMED_CURVE | KEYFRAMED_CURVE | — |
| SINUSOIDAL_CURVE | SINUSOIDAL_CURVE | — |