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:

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