β Frame Counter (Simple)
The least complicated frame counter there is β a plain integer with a wrapper
- frame_counter
Every animation system needs a "where am I" signal, and the Dream Project Animation Nodes pack abstracts that as a FRAME_COUNTER. Frame Counter (Simple) [Dream] is the honest version of that: you type an integer, it wraps it in a frame counter. That's the whole job. No disk reading, no state, no surprises.
It's from the 2023 Deforum-style animation pack by alt-key-project (qaozmojo), alongside the fancier directory-backed counter. The pack isn't maintained anymore, but "wrap an int" doesn't need maintenance.
What it does
Three inputs, one output:
frame_index(INT, default 0) - the current frame, manually settotal_frames(INT, default 100) - animation lengthframes_per_second(INT, default 25) - how many frames per second the animation plays at
Output is a frame_counter carrying exactly those three numbers.
In the source it's a two-line constructor: FrameCounter(frame_index, total_frames, frames_per_second). The reason a plain integer isn't enough is that downstream Dream nodes expect the full counter object - curves use it to compute "what time is this frame," offsets use it to shift, the info node unpacks it. The Simple counter is how you bootstrap that whole system from a number you control.
The two ways people actually use it
Testing. When you're building a curve or a color adjustment and you don't want to wait for a full animation to see if it works, drive the frame_index by hand (or with a loop) and watch the output change. It's the fastest way to sanity-check the pack's curve math.
An auto-incrementing primitive. The pack's own node list describes it as useful "if an auto-incrementing primitive is used as a frame counter" - i.e., you're on a ComfyUI version or workflow where you drive frame_index from a counter primitive that ticks per queue run. It's the lightweight alternative to the directory-backed counter when you don't care about surviving restarts.
Where it's the wrong tool: long unattended renders. If ComfyUI restarts or you re-queue, the integer resets to whatever's in the widget. For crash-resilient animation, reach for Frame Counter (Directory) instead - it derives its position from files on disk.
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 model downloads; pack deps are imageio, scipy, torchvision, pilgram, evalidate, and it pins numpy<2.0. Find it under Dream β animation.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| frame_index | INT | 0 | β |
| total_frames | INT | 1001β5184000 | β |
| frames_per_second | INT | 25 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| frame_counter | FRAME_COUNTER | β |