π CSV Curve
Drive your animation from a spreadsheet β CSV Curve turns data into motion
- frame_counter
- FLOAT
- INT
Most animation nodes give you curves you have to draw - sine waves, triangles, hand-tuned parameters. CSV Curve [Dream] is the one that says "no, give me data" and reads your values straight from a CSV file. If you already have a timeline in a spreadsheet - camera moves planned per second, a zoom profile someone gave you, noise levels you fiddled with in Excel - this node turns that into a per-frame value without retyping anything.
It's part of the Dream Project Animation Nodes pack, the 2023 Deforum-style animation toolkit from alt-key-project (qaozmojo). The pack's in maintenance limbo, but a data-driven curve is a data-driven curve - this still works fine.
How it reads the file
Your CSV should be two columns: first column is time or frame, second column is the value. That's it. The inputs:
csvfile- path to the filefirst_column_type-secondsorframes. This is the one that trips people up: if your first column is seconds, the node converts to frames using your frame counter'sframes_per_second, so a "2" means 2 seconds in, not frame 2.interpolate-truelinearly blends between rows,falseholds each value until the next rowcsv_dialect-excel,excel-tab, orunix, matching how your file was written
Outputs are FLOAT (the value) and INT (the same value rounded). Both update per frame based on the frame counter.
The behavior outside your data range is predictable and useful: before the first row it returns the first value, after the last row it holds the last value. So no NaN surprises at the ends of a render.
Where it earns its keep
Three honest uses: (1) you've got real data you didn't type - a motion-capture log, a music transient list, an exported timeline; (2) you're collaborating with someone who works in spreadsheets, not ComfyUI; (3) you want reproducibility - the curve lives in a file you can diff and version, not in a node's slider.
It pairs naturally with the pack's CSV Generator, which writes the Frame,Value format this node reads - so you can log a value during a render and later reuse that log as a curve. Neat trick: use the generator to capture what a Sine Curve did, then play it back as CSV.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/alt-key-project/comfyui-dream-project.git
Or via ComfyUI Manager under "Dream Project Animation". No models, no downloads. Just mind the pack's numpy<2.0 pin if you run into a NumPy conflict. Find it under Dream β animation β curves. Keep the CSV simple - the node skips any row that isn't exactly two numeric columns, so headers and comments are fine.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| frame_counter | FRAME_COUNTER | β | |
| csvfile | STRING | β | |
| first_column_type | COMBO | 2 options: seconds, frames | |
| interpolate | COMBO | 2 options: true, false | |
| csv_dialect | COMBO | 3 options: excel, excel-tab, unix |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| FLOAT | FLOAT | β |
| INT | INT | β |