π Sine Curve
Breathe life into your animation with a sine wave you can actually wire up
- frame_counter
- FLOAT
- INT
If your animation looks static, the fix is usually not a better prompt - it's a value that moves. Sine Curve [Dream] is the most honest version of that idea: it hands you a smooth, endlessly repeating float that oscillates between two numbers, and you plug it into anything that wants a number. Zoom that breathes in and out. A prompt weight that swells and relaxes. A light that pulses. It's the wave everyone recognizes, which is exactly why it's the curve most beginners should start with.
The node is part of Dream Project Animation Nodes, the pack the "Alt Key Project" music channel built for Deforum-style animations in ComfyUI. It's built around the pack's core abstraction: a frame counter that tracks where you are in the animation, and curves that turn that position into a value. The source is dead simple - it computes midpoint + amplitude * sin(2Ο * time / period + phase) - which means the output is deterministic and boring in the best way. No surprise jumps.
The inputs that matter
- frame_counter - this is the beating heart. Plug in any Dream frame counter (Frame Counter (Simple) works great). The curve reads its
current_time_in_secondsevery frame, so without one the node has nothing to chew on. - min_value / max_value - the floor and ceiling of the wave. Defaults of 0 and 1 are fine for a prompt weight or zoom factor; for a brightness sweep you'd set 0 to 1.5.
- periodicity_seconds - how long one full oscillation takes. The default of 10 seconds feels sedate; crank it down to 2 and things get jittery.
- phase - shifts the wave left or right in time, from -1 to 1. Handy when you want the pulse to start down instead of up.
It outputs both FLOAT and INT - same value, one rounded. Use FLOAT for anything continuous like Image Motion zoom or a CFG scale; use INT when the destination demands a whole number (say, driving a seed or an integer parameter). Both come out of the same node, so you don't need two curves.
Installing it
The pack installs through ComfyUI Manager - search "Dream Project Animation Nodes" and click Install - or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/alt-key-project/comfyui-dream-project.git
cd comfyui-dream-project
pip install -r requirements.txt
Then restart ComfyUI. The dependencies are modest (imageio, scipy, torchvision, evalidate) but note the numpy<2.0 pin in requirements - pip may reshuffle your numpy, which is normal for this pack but worth knowing if other nodes complain after.
Common issues
The usual stumble is forgetting the frame counter. A curve with no frame_counter input fails immediately in the graph, and ComfyUI's stock primitive won't produce a FRAME_COUNTER - you need one of the pack's own counter nodes feeding it. Also know that this pack's README announces it's no longer being updated; the author moved on to comfyui-dream-video-batches. None of that matters for a sine wave - it still runs fine on current ComfyUI, which is the right way to think about a tool this old and this stable.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| frame_counter | FRAME_COUNTER | β | |
| max_value | FLOAT | 1.00 | β |
| min_value | FLOAT | 0.00 | β |
| periodicity_seconds | FLOAT | 10.00 | β |
| phase | FLOAT | 0.00-1β1 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| FLOAT | FLOAT | β |
| INT | INT | β |