Time & playback

How frames, the timeline and simulations stay in sync when you press play.

Almost everything you build can move. Animation, fields, audio and simulations all read from a shared sense of what time it is now.

This page covers the transport, frames and FPS, the $T and $F you type into Expressions, and what keeps moving live against what freezes the moment you pause.

Frames, FPS and the timeline

A project plays back at a frame rate, typically 24, 30 or 60 fps. Each tick of the clock is one frame.

Two values track this everywhere:

Either can be dropped straight into an The Expression language to drive anything that changes over time. sin($T) sways a value back and forth once per ~6 seconds. $F * 2 ramps up steadily as the timeline advances.

Frames go negative. Scrubbing before frame 0, or applying a time offset, puts $F in negative-frame space, which is expected rather than a glitch.

The transport

The transport is the set of playback controls, and the single source of 'now' for the entire project, so every node, the audio engine and any external sync agree on the same moment.

Scrubbing backward is a jump rather than playback. Time-based effects that build up over many frames, trails, accumulation and simulations, may need to replay forward to look right.

What plays live, what freezes when paused

There are two kinds of motion.

Always live. Anything that reads the current time or your inputs recomputes instantly, even while paused. Drive a parameter with $T, move a Gradient, tweak a field, or feed in a live pointer position, and the result appears immediately, because the graph re-cooks on change.

Only advances during playback. Anything that integrates over time, particles, cloth, hair, soft bodies, fluids, feedback loops, needs the timeline to move forward. These step one frame at a time, building each frame on top of the last. Paused, they hold their current state. They advance only while the transport is playing, or as you step frames forward.

If a simulation looks frozen, check that you're actually playing. A paused transport intentionally freezes every simulation in place. It isn't broken, it's waiting for time to advance.

The split is what makes a paused frame workable: look and layout can be tweaked with instant feedback while physics stays exactly where you left it.

Cook

The single letter in a node's title bar sets its cook policy, and clicking it cycles S, A, F. Cooking is the recalculation of a node's output. Most nodes sit on S (Selective) and cook only when something they depend on changes. Live sources such as a pointer input default to A (Auto Cook) and run every frame, so downstream work always sees fresh values. See The graph & cooking.

Audio and tempo

Time is also tracked two other ways, alongside frames.

All three move together under the same transport, so a beat-synced LFO, an audio effect and a visual animation line up. Tempo-aware and audio nodes read the right clock.

Retiming

Two nodes shift time rather than read it.

Time Offset evaluates everything upstream of it at a different frame. The offset is one number for the whole branch rather than a per-element value, and it can be keyframed or wired like any other parameter. Clamp Mode decides what happens at the ends: Clamp holds at the boundary, Wrap loops, and Mirror ping-pongs. The last two fold the shifted frame into the Range you set, which only appears once you pick one of them.

Time Remap retimes a captured or frame-based source. Speed and Reverse cover slow motion and running backwards, a bezier Time Curve maps input time to output time for ramps and freezes, Posterize Step holds every N frames, and Interpolation chooses hard cuts or blended frames. Its Temporal Mode reduces a window of remapped frames into one: Wide Time averages the window, and the Echo modes add, decay, max or min across it. Three controls shape that window: how many frames wide it is, how many samples are taken across it, and whether it trails behind the current frame, centres on it, or leads it. Echo Decay sets how much less each older frame counts.

See also