Nodes/Dream Project Animation Nodes/βš‹ Frame Counter (Simple)
ComfyUI Node

βš‹ Frame Counter (Simple)

The least complicated frame counter there is β€” a plain integer with a wrapper

By alt-key-projectΒ·Created 3 years agoΒ·Updated 2 years agoΒ· 114
βš‹ Frame Counter (Simple)
    • frame_counter
    β—„frame_index0β–Ί
    β—„total_frames100β–Ί
    β—„frames_per_second25β–Ί

    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 set
    • total_frames (INT, default 100) - animation length
    • frames_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.

    Category✨ Dream/πŸŽ₯ animation

    Inputs (3)

    NameTypeDefaultDescription
    frame_indexINT0β€”
    total_framesINT1001–5184000β€”
    frames_per_secondINT25β€”

    Outputs (1)

    NameTypeDescription
    frame_counterFRAME_COUNTERβ€”