Advanced property syntax#

Inheritance: @{id.property}#

Widgets can use each other's properties values and update automatically when they change by using this syntax.

Value#

The property name (and the dot) can be omitted and defaults to value (@{widgetId} => @{widgetId.value}). value always resolves to the target widget's current value, not its value property

this & parent#

A widget can fetch its own properties or its direct parent's by using the keywords this or parent instead of id. When this or parent can be used, using the target widget's id instead won't work.

Dynamic properties#

Some properties, when changed, trigger a complete widget recreation that ends any ongoing user interaction. Also, updating these properties continuously (e.g. when linked to a slider's dynamic value) can be very cpu expensive.

Some properties have much cheaper update routines and can be considered as dynamic, as in performance safe. These properties are marked in the documentation with a .

Circular references cases#

Object properties#

If the retreived property is an object ({}) or an array ([]), a subset can be retreived directly by appending a dot and a key (array index or object key) : @{parent.variables.key}

Nesting#

The inheritance syntax supports 1-level nesting : @{fader_@{toggle_1}}

OSC listeners: OSC{address, default, usePreArgs}#

This syntax allows listening on an osc address to define a property.

Dynamic address#

The address can contain @{} blocks

Javascript: JS{{ <code> }}#

This syntax allows writing formulas in pure javascript. The code will be compiled as a function and executed in a restricted context.

In this context, @{} / OSC{} are seen as variables, not as the value they hold,

Parsing errors can be read in the DevTool console (F12).

Formulas: #{}#

Deprecated

This syntax is now deprecated and will be removed in the future, sessions using it will be working for a few more versions but users are strongly encouraged to migrate to the javascript syntax.

The following syntax allow writing mathematical formulas in widgets' properties:

#{FORMULA}

Where FORMULA is a valid MathJS expression:

Additionnal functions:

A single widget property can contain multiple formulas. Variables and functions declared in a formula are available to subsequent formulas in the same property definition.