Parameter expressions
Type = in any parameter to drive it with a live formula — reference time, maths, or another node's value.
Most parameters in DNA hold a plain number you set by hand. But any of them can instead hold a formula that recomputes every frame. Click into a parameter, type =, and whatever follows becomes a tiny expression that drives the value.
= sin($T) * 10
= circle1.r * 2
= value + 1
This is the same Expression language you'd use in an Expression node — just inline, on a single parameter, instead of across a whole collection.
Writing a formula
Start the parameter with =. The = marks "this is a formula, not a literal" and is stripped before the maths runs.
A few things you can reach for:
Time globals —
$F(current frame),$T(time in seconds),$FPS,$DT(one frame's duration). So= sin($T * 2) * 5gives a smooth wobble that follows playback.Maths constants —
$PI,$TAU,$E,$PHI, and friends.Functions and maths — the full function set:
sin,cos,clamp,fit,noise, and the usual+ - * /.
When the formula can't be parsed or hits an error, the parameter quietly falls back to its plain value instead of breaking your graph — so a half-typed formula never blanks the viewport.
Referencing another node
Type a node's name, a dot, then the parameter you want: circle1.radius. DNA looks up that node and reads its current value, live.
= circle1.radius * 2
= move1.position.x + 50
A node's name is whatever you renamed it to (or an automatic name derived from its type if you never renamed it). The dot path can reach into a single axis of a multi-part value too — move1.position.x reads just the X of that node's position.
When you write a reference like this, DNA automatically wires the two nodes together behind the scenes so the referenced node always computes first and your parameter updates the moment it changes. You don't draw anything — the link just appears.
You can also point one parameter at another node's computed output (for example a maths node's result), not just its parameters. Wire that output into the parameter, then reference it by name in the formula.
DNA refuses a reference that would chase its own tail — if node A already depends on node B, you can't make B reference A back. The reference is simply rejected so your graph can't deadlock.
The value token
Inside a parameter formula, value means this parameter's own current value — whatever it would be from its keyframes or hand-set number. That lets a formula build on top of animation instead of replacing it.
= value + sin($T) * 2 # add a wobble on top of a keyframed value
= value * 1.5 # scale whatever's already there
On a dropdown (menu) parameter, value is the current option's position in the list, so = value + 1 advances to the next option. Referencing another node's dropdown reads it as a number the same way.
Per-axis formulas
A position, scale, or colour has several axes, and each can carry its own formula. Drive just the X of a position with a formula while Y and Z stay hand-set — handy for "move sideways with the beat, leave height alone."
When to reach for the Expression node instead
Inline parameter formulas work on one value at a time. They can't read per-point attributes (@P, @Cd), can't sample textures or fields, and per-element globals like point number read as 0. The moment you want to drive every point of a collection differently — that's the job of the Expression node, which runs your formula across the whole thing.
See also
Connections vs expressions — when to wire a value in versus type a formula
Keyframing — hand-author values over time
The Expression language — the full expression language
Globals & parameters — every
$global you can useBuilt-in functions — the function reference