The timeline

Play, pause, scrub, set your frame range, and see every keyframe at a glance.

The timeline runs along the bottom of the window. Its top strip is the transport — the play controls and frame readouts — and below it sits the dopesheet, where your keyframes live. This is where time happens.

The transport

The transport bar holds the play controls on the left and a row of live readouts on the right.

From left to right, the playback buttons are:

Next to them is the Frame field. Drag it to scrub through time, or click and type to jump to an exact frame. It stays clamped to your range.

You can also scrub by dragging directly on the dopesheet ruler — grab the playhead and slide it. Same result, more tactile.

Range and looping

The Range fields set the first and last frame of your composition — Range: 0 to 240, for example. Playback loops between these by default, so a 0-to-240 range plays as a clean 4-second cycle at 60 fps.

If the start and end are the same, the range is treated as open-ended (shown as ∞) and just keeps counting forward.

The range is the heartbeat of a looping piece — for a seamless loop, make sure your animation returns to its starting state on the last frame.

Playback modes

The Realtime toggle decides how DNA spends time when a frame is heavy to compute:

The right-hand side of the bar shows live timing: Time (seconds elapsed), Frames (total frames drawn), Δ (milliseconds per frame), and FPS. These are your performance gauges — if FPS dips well below your project rate, head to the The performance panel.

The dopesheet

Below the transport, the dopesheet shows your animated parameters as rows, with a dot for every keyframe placed in time. It's a bird's-eye view of the whole piece: where things move, where they hold, and how the timing lines up across parameters.

You can select keyframes here, drag them to retime, and box-select a group to move them together. For shaping the values between keyframes — easing, overshoot, bezier handles — flip on the Curves toggle to open the The curve editor.

Keyframes are created from a parameter's right-click menu or by recording live input — see Keyframing and Recording live input.

Working inside subgraphs

When you dive into a subgraph, a breadcrumb appears on the right of the transport showing your path, like Project > Particles > Spawn. Click any earlier segment to pop back up a level. A small (fps) tag next to it shows the frame rate of the level you're currently in, which can differ from the parent.

This matters because time can flow differently inside a subgraph — see Time & playback for how nested clocks work.

If your project uses a musical clock, the transport also shows a BPM field, a time signature, and a bar-and-beat readout. Those are covered in Clocks & tempo.

See also