ComfyUI Node

πŸ“ˆ CSV Curve

Drive your animation from a spreadsheet β€” CSV Curve turns data into motion

By alt-key-projectΒ·Created 3 years agoΒ·Updated 2 years agoΒ· 114
πŸ“ˆ CSV Curve
  • frame_counter
  • FLOAT
  • INT
β—„csvfileβ–Ί
β—„first_column_typeβ–Ύβ–Ί
β—„interpolateβ–Ύβ–Ί
β—„csv_dialectβ–Ύβ–Ί

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 file
  • first_column_type - seconds or frames. This is the one that trips people up: if your first column is seconds, the node converts to frames using your frame counter's frames_per_second, so a "2" means 2 seconds in, not frame 2.
  • interpolate - true linearly blends between rows, false holds each value until the next row
  • csv_dialect - excel, excel-tab, or unix, 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.

Category✨ Dream/πŸŽ₯ animation/πŸ“ˆ curves

Inputs (5)

NameTypeDefaultDescription
frame_counterFRAME_COUNTERβ€”
csvfileSTRINGβ€”
first_column_typeCOMBO2 options: seconds, frames
interpolateCOMBO2 options: true, false
csv_dialectCOMBO3 options: excel, excel-tab, unix

Outputs (2)

NameTypeDescription
FLOATFLOATβ€”
INTINTβ€”