Skip to content

Reference

Complete listing of all form properties, control types, their top-level fields and props, stylesheet macros, and the Lua API.

Sections marked TODO will be filled in from source files in a later pass.


width: <int> # form width in pixels (required)
height: <int> # form height in pixels (required)
color: <color> # background fill color (optional)
controls:
<control-id>: # unique string ID — referenced from Lua and macro params
type: <string> # control type (required)
visible: <bool> # default: true
enabled: <bool> # default: true
zOrder: <int> # stacking order for overlapping controls
comment: <string> # ignored at runtime — for your own notes
pos: { x, y, w, h } # absolute placement — use pos OR anchors
anchors: { left, right, top, bottom, hCenter, vCenter, width, height }
props:
# type-specific properties
# omitted props fall back to internal defaults,
# which are usually the corresponding stylesheet macros

PropertyTypeRequiredDescription
widthintyesForm width in pixels
heightintyesForm height in pixels
colorcolornoBackground fill color
infoOverlayColorcolornoInfo overlay text color
infoOverlayBackgroundcolornoInfo overlay background color

FieldTypeRequiredDefaultDescription
typestringyesControl type (see types below)
visibleboolnotrueWhether the control is rendered
enabledboolnotrueWhether the control accepts input
zOrderintnoStacking order for overlapping controls
commentstringnoIgnored at runtime; for your notes
KeyTypeDescription
xintPixels from left edge of form
yintPixels from top edge of form
wintControl width in pixels
hintControl height in pixels
KeyTypeDescription
leftintDistance from left edge of the form
rightintDistance from right edge of the form
topintDistance from top edge of the form
bottomintDistance from bottom edge of the form
hCenterintOffset from the horizontal center of the form
vCenterintOffset from the vertical center of the form
widthintRequired when left+right do not fully constrain width
heightintRequired when top+bottom do not fully constrain height

Used in text and parameterDisplay props.

ValueDescription
topLeft
topCenter
topRight
centerLeft
center
centerRight
bottomLeft
bottomCenter
bottomRight

Rotary control. Bind to a parameter via parameterUid, or drive from Lua via value + onChange.

props:

PropTypeDefaultDescription
parameterUidstringBound parameter (name or UUID)
valuedoubleInitial value for script-driven mode
bipolarboolCenter-zero display (pan, pitch, etc.)
displayModeenumstandardstandard, phaseBitmap, rotatedBitmap
bitmapstringBitmap path for phaseBitmap / rotatedBitmap modes
dragAxisenumverticalvertical, horizontal
tickAngledouble0.0Rotation of the tick mark in degrees
bgColorcolor$knob-bg-color (#1AFFFFFF)
borderColorcolor$knob-border-color (#33FFFFFF)
trackColorActivecolor$knob-track-color-active (#C0C7FF)Arc from min to current value
trackColorInactivecolor$knob-track-color-inactive (#2A2A2A)Remaining arc
tickColorcolor$knob-tick-color (#FFFFFF)Position indicator tick
tintColorcolorTint applied over bitmap
onChangestringLua handler name, called on value change
onChangeStartstringLua handler name, called on drag start
onChangeEndstringLua handler name, called on drag end

Linear fader. orientation is required.

props:

PropTypeRequiredDefaultDescription
orientationenumyeshorizontal, vertical
parameterUidstringnoBound parameter (name or UUID)
valuedoublenoInitial value (script mode)
bipolarboolnoCenter-zero display
trackColorActivecolorno$fader-track-color-active (#9095DB)
trackColorInactiveFgcolorno$fader-track-color-inactive-fg (#343434)
trackColorInactiveBgcolorno$fader-track-color-inactive-bg (#232323)
handleColorFgcolorno$fader-handle-color-fg (#575757)
handleColorBgcolorno$fader-handle-color-bg (#3A3A3A)
trackWidthstringno$fader-track-width (4)Can be a macro or pixel value
tintColorcolorno
trackBitmapstringnoCustom track image
handleBitmapstringnoCustom handle image
onChangestringnoLua handler name
onChangeStartstringnoLua handler name
onChangeEndstringnoLua handler name

Binary switch (iOS-style). Bind via parameterUid or drive from Lua via value + onChange.

props:

PropTypeDefaultDescription
parameterUidstringBound parameter (name or UUID)
valueboolInitial state (script mode)
invertboolfalseFlip on/off meaning
transitionTimeint300Animation duration in ms
trackColorActivecolor$toggle-track-color-active (#C0C7FF)
trackColorInactivecolor$toggle-track-color-inactive (#2A2A2A)
thumbColorActivecolor$toggle-thumb-color-active (#FFFFFF)
thumbColorInactivecolor$toggle-thumb-color-inactive (#808080)
borderColorActivecolor$toggle-border-color-active (#C0C7FF)
borderColorInactivecolor$toggle-border-color-inactive (#808080)
phaseBitmapstringCustom filmstrip image
tintColorcolor
onChangestringLua handler name

Push button. No parameterUid — driven entirely via onPressed Lua handler or used as a purely visual element with value.

props:

PropTypeRequiredDefaultDescription
textstringyesButton label
valueboolnoDisplay state (pressed/unpressed)
fgColorcolorno$button-fg-color (#C0C7FF)Label color
bgColorcolorno$button-bg-color (#2A2A2A)Background color
fgColorPressedcolorno$button-fg-color-pressed (#FFFFFF)Label color when pressed
bgColorPressedcolorno$button-bg-color-pressed (#808080)Background color when pressed
fontScalestringno$button-font-scale (1.0)Font size scale factor
fontWeightstringno$button-font-weight (500)
cornerRadiusstringno$button-corner-radius (4)Can be a macro or pixel value
phaseBitmapstringnoCustom filmstrip image
tintColorcolorno
onPressedstringnoLua handler name

A horizontal or vertical row of labeled buttons where exactly one is active at a time. The active index is tracked by a parameter or via value + onChange.

props:

PropTypeDefaultDescription
parameterUidstringBound parameter (name or UUID)
valueintActive index (script mode)
labelsstring listButton label for each slot
bitmapsstring listInactive-state bitmap per slot
activeBitmapsstring listActive-state bitmap per slot
orientationenumhorizontalhorizontal, vertical
indicatorAlignmentenumendstart, end — where active indicator appears
textColorActivecolor$button-selector-text-color-active (#FFFFFF)
textColorInactivecolor$button-selector-text-color-inactive (#808080)
fontScalestring$button-selector-font-scale (1.0)
fontWeightstring$button-selector-font-weight (500)
indicatorColorcolor$button-selector-indicator-color (#C0C7FF)
onChangestringLua handler name

Static text label. Supports macro substitution in text.

props:

PropTypeDefaultDescription
textstringDisplay text (macro substitution applies)
alignmentenumSee alignment values
colorcolor$text-color (#FFFFFF)
fontScalestring$text-font-scale (1.0)Scale factor relative to base font size
fontWeightstring$text-font-weight (500)

Read-only display of a bound parameter’s current value. parameterUid is required.

props:

PropTypeRequiredDefaultDescription
parameterUidstringyesParameter to display (name or UUID)
alignmentenumnoSee alignment values
colorcolorno$parameter-display-color (#C0C7FF)
fontScalestringno$parameter-display-font-scale (1.0)

A compact left/right arrow selector for stepping through a parameter’s discrete values. parameterUid is required.

props:

PropTypeRequiredDefaultDescription
parameterUidstringyesParameter to control (name or UUID)
textColorcolorno$inline-selector-text-color (#FFFFFF)
arrowColorcolorno$inline-selector-arrow-color (#C0C7FF)
fontScalestringno$inline-selector-font-scale (1.0)

Displays a static image asset.

props:

PropTypeRequiredDefaultDescription
imagestringyesPath to image file
fitenumnocontain, cover, fill, fitWidth, fitHeight, none, scaleDown
tintColorcolornoTint color applied over the image

Shows one of several forms based on a parameter value or value prop. This is the primary tool for tabbed interfaces, conditional panels, and any layout that switches between sub-forms.

props:

PropTypeDefaultDescription
formslist of form entriesOrdered list of forms; active index = parameter value
parameterUidstringBound parameter (name or UUID)
valueintActive index (script mode)
transitionenumcrossfadecrossfade, slide
transitionTimeint500Transition duration in ms

Each entry in forms is an object with:

KeyTypeRequiredDescription
formstringyesForm name (without .frm)
macroParametersstring mapnoMacro overrides for this form instance

Example:

content:
type: portal
anchors: { left: 0, right: 0, top: 32, bottom: 0 }
props:
parameterUid: tab-index
forms:
- form: osc_tab
- form: filter_tab
- form: env_tab

Embeds another form inside this control’s bounds.

props:

PropTypeRequiredDescription
formstringyesForm name (without .frm)
macroParametersstring mapnoMacro overrides scoped to this instance

Example:

my_panel:
type: subForm
anchors: { left: 0, right: 0, top: 0, bottom: 0 }
props:
form: param_knob
macroParameters:
$param-id: "uuid-or-name"
$label-text: Cutoff

VU / peak meter driven by an audio processor output.

props:

PropTypeRequiredDefaultDescription
processorUidstringyesUID of the metered audio processor
channelOfInterestintyesChannel index to display
typeenumyesrms, peak
orientationenumnohorizontalhorizontal, vertical
phaseBitmapstringnoCustom filmstrip image
colorActivecolorno$level-meter-color-active (#C0C7FF)
colorActiveHighcolorno$level-meter-color-active-high (#FF8000)
colorActivePeakcolorno$level-meter-color-active-peak (#FF0000)
colorInactiveBgcolorno$level-meter-color-inactive-bg (#232323)
colorInactiveFgcolorno$level-meter-color-inactive-fg (#343434)
thresholdHighstringno$level-meter-threshold-high (0.8)Can be a macro or numeric value
thresholdPeakstringno$level-meter-threshold-peak (0.9)
decayFactorstringno$level-meter-decay-factor (0.97)
trackWidthstringno$level-meter-track-width (4)
conversionFormulastringno$level-meter-conversion-formula (x ^ 0.33)

Piano keyboard widget.

props:

PropTypeRequiredDefaultDescription
variantenumyesgeneric, synth
showKeyLabelsboolnofalseShow note names on keys
allowOctaveShiftboolnofalseEnable octave shift controls
startOctaveintno0Lowest displayed octave
bgColorcolorno#000000Background color

A scriptable drawing surface. All rendering is performed in the onPaint Lua callback; the canvas does not redraw automatically. Mouse events are routed to optional callbacks. Call sys_canvas_repaint whenever the visual content changes.

See Lua Scripting — Canvas Control for the full drawing API (sys_canvas_* functions, the paint object, paths, and transforms).

props:

PropTypeRequiredDescription
onPaintstringyesLua function name; called with (controlName, ctx, width, height)
onMouseDownstringnoLua function name; called with (controlName, x, y) on press
onMouseUpstringnoLua function name; called with (controlName) on release
onMouseMovestringnoLua function name; called with (controlName, x, y) on move
onMouseDoubleClickstringnoLua function name; called with (controlName, x, y) on double-click

Macros appear as $macro-name in any property value and are resolved before rendering. A macro value may itself reference other macros (resolved recursively). Use macroParameters in a subForm or portal entry to override macros for a specific instance.

MacroDefault
$text-color#FFFFFF
$text-font-scale1.0
$text-font-weight500
MacroDefault
$knob-track-color-active#C0C7FF
$knob-track-color-inactive#2A2A2A
$knob-tick-color#FFFFFF
$knob-bg-color#1AFFFFFF
$knob-border-color#33FFFFFF
MacroDefault
$fader-track-color-active#9095DB
$fader-track-color-inactive-fg#343434
$fader-track-color-inactive-bg#232323
$fader-handle-color-fg#575757
$fader-handle-color-bg#3A3A3A
$fader-track-width4
MacroDefault
$toggle-track-color-active#C0C7FF
$toggle-track-color-inactive#2A2A2A
$toggle-thumb-color-active#FFFFFF
$toggle-thumb-color-inactive#808080
$toggle-border-color-active#C0C7FF
$toggle-border-color-inactive#808080
MacroDefault
$button-fg-color#C0C7FF
$button-bg-color#2A2A2A
$button-fg-color-pressed#FFFFFF
$button-bg-color-pressed#808080
$button-corner-radius4
$button-font-scale1.0
$button-font-weight500
MacroDefault
$button-selector-text-color-active#FFFFFF
$button-selector-text-color-inactive#808080
$button-selector-indicator-color#C0C7FF
$button-selector-font-scale1.0
$button-selector-font-weight500
MacroDefault
$parameter-display-color#C0C7FF
$parameter-display-font-scale1.0
MacroDefault
$level-meter-color-active#C0C7FF
$level-meter-color-active-high#FF8000
$level-meter-color-active-peak#FF0000
$level-meter-color-inactive-bg#232323
$level-meter-color-inactive-fg#343434
$level-meter-threshold-high0.8
$level-meter-threshold-peak0.9
$level-meter-decay-factor0.97
$level-meter-conversion-formulax ^ 0.33
$level-meter-track-width4
MacroDefault
$inline-selector-text-color#FFFFFF
$inline-selector-arrow-color#C0C7FF
$inline-selector-font-scale1.0

See Lua Scripting for usage context and patterns.

Top-level script code runs once when the form loads. Named top-level functions can be referenced by name in control props (e.g. onChange, onPressed).

A read-only Lua table available in every form script. Keys are macro names (including the $ prefix); values are the substituted strings. Contains both built-in stylesheet macros and any custom macroParameters supplied when the form was embedded as a subForm.

local uid = sys_form_macros["$param-id"]

ArgumentTypeDescription
objectanyValue to print — strings, numbers, and tables are all accepted

Writes to the script console in the editor.


sys_modify_control(control_name, domain, changes)

Section titled “sys_modify_control(control_name, domain, changes)”
ArgumentTypeDescription
control_namestringControl ID as defined in the controls: map
domainstring"pos", "anchors", "props", or "" for a root-level field
changestableLua table of key = value pairs to update

Not all properties are mutable at runtime. Bitmaps cannot be changed via script (they require preloading at form initialization).

domain values:

domainTargets
""Root-level fields: visible, enabled, zOrder
"pos"Absolute placement fields: x, y, w, h
"anchors"Anchor fields: left, right, top, bottom, etc.
"props"Type-specific props (colors, text, etc.)

sys_set_parameter_value(parameter_id, value)

Section titled “sys_set_parameter_value(parameter_id, value)”
ArgumentTypeDescription
parameter_idstringParameter UUID, or its name if it has one (global parameters only)
valuenumberNew value (clamped to the parameter’s min/max range)

sys_subscribe_to_parameter(parameter_id, callback)

Section titled “sys_subscribe_to_parameter(parameter_id, callback)”
ArgumentTypeDescription
parameter_idstringParameter UUID, or its name if it has one (global parameters only)
callbackfunctionCalled with (value) whenever the parameter changes

Returns: the parameter’s current value at the time of subscription.

Replaces any existing subscription for the same parameter. Passing the return value into the same callback function applies the initial state and registers for future changes in one call:

local function sync(value) sys_modify_control("panel", "", {visible = value}) end
sync(sys_subscribe_to_parameter(uid, sync))

These props fields accept a string naming a top-level Lua function:

All handler callbacks receive the control’s ID as their first argument. This is a strict convention that allows wiring the same function to multiple controls and dispatching on the caller.

PropControlsHandler signature
onChangeknob, fader, toggle, buttonSelectorfunction(controlName, value)
onChangeStartknob, faderfunction(controlName, value)
onChangeEndknob, faderfunction(controlName, value)
onPressedbuttonfunction(controlName)
onPaintcanvasfunction(controlName, ctx, width, height)
onMouseDowncanvasfunction(controlName, x, y)
onMouseUpcanvasfunction(controlName)
onMouseMovecanvasfunction(controlName, x, y)
onMouseDoubleClickcanvasfunction(controlName, x, y)

Note: The scripting surface is an initial set. It will expand based on user feedback over time.