Help guide

Cycle Clock node

Updated June 21, 2026

Product media placeholder

Replace this area with a screenshot or short walkthrough video during the media sweep.

Accumulates ambient scheduler deltaTime into a normalized 0..1 cycle progress. The canonical "looping clock" — drives any consumer that takes a 0..1 progress (textRevealAnimation, propertyAnimation, staggerAnimation) when you want continuous motion not gated by scroll or user input. No input ports: clock nodes read ambient time directly (F236), so they keep ticking even when the rest of the graph is idle.

Type cycleClockCategory bundlesContext canvasDynamic ports noCompound no

Inputs

PortTypeDescription
--No ports declared.

Outputs

PortTypeDescription
progressfloatNormalized 0..1 cycle position. With `pingPong: false` ramps 0→1 then jumps back to 0 (sawtooth). With `pingPong: true` ramps 0→1 then 1→0 then 0→1 … (triangle wave). Wire into any 0..1 consumer.
completedfloatInteger count of finished cycles since load. Useful for one-shot triggers ("after the third loop, fire X") via `thresholdPulse` or an `expression` node.

Parameters

ParameterTypeDefaultDescription
durationfloat1000Length of one cycle in milliseconds. With `pingPong: false` this is the time for progress to go 0→1 (then it jumps back). With `pingPong: true` this is the time per direction — the full 0→1→0 round trip is 2× duration. Typical values: 1000–3000ms for ambient motion, 5000–20000ms for slow ambient cycles, 200–600ms for snappy beats. min 1; step 100
iterationsint0How many cycles to run before settling. **0** (default) loops forever — the most common case for ambient clocks. **N>0** runs exactly N cycles then holds at progress=1 (one-shot intros, finite N-beat sequences). The `completed` output port reflects this count so authors can trigger downstream actions on completion. min 0
pingPongboolfalseWhen ON, progress ramps up then down each cycle (triangle wave: 0→1→0→1→0…). Doubles the perceptual "beat" since each cycle visits 1.0 once but progress=0 only at start/midpoint. When OFF (default), progress is a sawtooth (0→1, jump back to 0). Use ping-pong for symmetrical reversible motion (in-and-out shimmer); use sawtooth for "type from start, snap back, type again" patterns where the consumer (e.g. `textRevealAnimation` with `cycleMode: pingPong`) handles its own bidirectionality.

Use cases

  • Looping typewriter / phrase cycler — wire `progress` into a `textRevealAnimation`. With `iterations: 0` the cycle runs forever; pair with `cycleMode: pingPong` on the consumer for type-and-delete.
  • Ambient ticker / shimmer — drive `propertyAnimation` channels (opacity flicker, hue cycle) with `pingPong: true` for smooth back-and-forth without authoring two keyframe stops.
  • Bone secondary motion — feed into `boneJiggleCompute` / `wiggle` / `instanceStaggerCompute` as the time base when you want the motion decoupled from a Timeline.
  • Counted intro / N-beat sequence — set `iterations: 4` to play 4 cycles then settle at 1.0 (for finite intros that auto-stop).

Related nodes

Envelope

Use cycleClock as the node type inside a graph node envelope. Add id, optional params, optional connections, and optional activeWhen based on the guide context.

Generated source

Registry faster-motion-docs/node-registry.jsonCategory page /help/faster-motion/faster-motion-node-category-bundles/

Was this guide helpful?

Sunny Arora

Written by

Sunny Arora

Get technical deep dives delivered to your inbox

Join creators and developers who get exclusive insights, tutorials, and behind-the-scenes content every week.

No spam. Unsubscribe anytime.

Continue Exploring

You might also enjoy