Skip to content

Expression language

A preset is a small text file that describes one visual: it names a built-in rendering system and binds each of that system’s parameters to a short expression over the live audio analysis. Editing a preset needs no Rust, no rebuild, and no shader knowledge — you change a line, save, and the running app picks it up.

This document is the reference for the expression language — the vocabulary you write on the right-hand side of every binding — plus how presets load, where they live, and how a mistake is reported. It is the authoring counterpart to ADR-0002 (the layered preset architecture) and ADR-0020 (the v2 grammar). Only layers 1-2 of that architecture exist today — TOML data presets over a pure expression language. Layer 3 (Rhai scripting) and cross-preset blending are deferred.

The per-system parameter reference lives in Parameter roster, next to the preset files themselves — every parameter of every system, with its default, the range that reads and a line saying what it does, generated from the engine’s own declarations. That is the one place it is maintained; this document does not duplicate it.

New to presets? Start with Preset guide — the illustrated entrance: what each built-in system looks like, which of these three references owns which surface, and the loop you work in. Come back here for the grammar. The quickstart below overlaps the guide’s opening on purpose; where they disagree, the guide is the newer one (ADR-0101).

Accurate as of 2026-08-13, against the curated set in presets/ — one or more presets for every built-in system — and the v2 expression grammar. The number of presets is deliberately not written down here: it moves constantly, and a count in this line is a line that goes stale without anything noticing.


Sections

Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.