Widget reference#
Generic properties
Properties shared by all widgets
| property | type | default | description | 
|---|---|---|---|
| type# | string | "auto" | |
| id# | string | "auto" | Widgets sharing the same idwill act as clones and update each other's value(s) without sending extra osc messages. | 
| linkId# | string|array | "" | Widgets sharing the same linkIdupdate each other's value(s) AND send their respective osc messages.When prefixed with >>, the linkIdwill make the widget act as a master (sending but not receiving)When prefixed with <<, the linkIdwill make the widget act as a slave (receiving but not sending) | 
| geometry# | |||
| left# | number|string | "auto" | When both top and left are set to auto, the widget is positioned according to the normal flow of the page (from left to right, by order of creation). Otherwise, the widget will be absolutely positioned | 
| top# | number|percentage | "auto" | When both top and left are set to auto, the widget is positioned according to the normal flow of the page (from left to right, by order of creation). Otherwise, the widget will be absolutely positioned | 
| width# | number|percentage | "auto" | |
| height# | number|percentage | "auto" | |
| style# | |||
| label# | string|boolean | "auto" | Set to falseto hide completelyInsert icons using the prefix ^ followed by the icon's name : ^play, ^pause, etc (see https://fontawesome.com/icons?d=gallery&s=solid&m=free) | 
| color# | string | "auto" | Defines the widget's accent color (css variable --custom-color). Must be a valid CSS color. Set to "auto" to inherit from parent widget. | 
| css# | string | "" | CSS rules. See documentation. | 
| value# | |||
| default# | * | "" | If set, the widget will be initialized with this value when the session is loaded. | 
| value# | * | "" | Define the widget's value depending on other widget's values / properties using property inheritance and property maths | 
| osc# | |||
| precision# | integer|string | 2 | Defines the number of decimals to display and to send. Set to 0to send integers only.Data type can be specified by appending a valid osc type tag to the precision value, for example : 3dwill make the widget send double precision numbers rounded to three decimals | 
| address# | string | "auto" | OSC address for sending messages, it must start with a / | 
| preArgs# | *|array | "" | A value or array of values that will be prepended to the OSC messages. Values can be defined as objects if the osc type tag needs to be specified: {type: "i", value: 1} | 
| target# | string|array|null | "" | This defines the targets of the widget's OSC messages - A stringorarrayof strings formatted as follow:ip:portor["ip:port"]- If midi is enabled, targets can be midi:device_name- The special item "self"can be used to refer to the emitting client directly.- If no target is set, messages can still be sent if the server has default targets - The server's default targets can be bypassed by setting one of the items to null | 
| bypass# | boolean | false | Set to trueto prevent the widget from sending any osc message | 
Sliders#
fader
Vertical / horizontal slider.
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| css# | string | "" | Available CSS variables: - --color-gauge: color;- --color-knob: color;- --color-pips: color;- --gauge-opacity: number;- --gauge-width: number;(2-16, requires a manual resize to take effect) | 
| fader# | |||
| horizontal# | boolean | false | Set to trueto display the fader horizontally | 
| alignRight# | boolean | false | Set to trueto invert the pip's and fader's position | 
| pips# | boolean | true | Set to falseto hide the scale | 
| input# | boolean | true | Set to falseto hide the built-in input | 
| meter# | boolean | false | Set to true to display a vu-meter next in the fader - the meter's idwill be the same as the widget's with/meterappended to it- the meter's addresswill be the same as the widget's with/meterappended to it | 
| compact# | boolean | false | Set to trueto display a compact alternative for the widget. Ifinputistrue, the input can be focused with a right-click (mouse only). Disablespipswhen enabled. | 
| dashed# | boolean | false | Set to trueto display a dashed gauge | 
| snap# | boolean | false | By default, dragging the widget will modify it's value starting from its last value. Setting this to truewill make it snap directly to the mouse/touch position | 
| spring# | boolean | false | When set to true, the widget will go back to itsdefaultvalue when released | 
| doubleTap# | boolean | false | Set to trueto make the fader reset to itsdefaultvalue when receiving a double tap.Can also be an osc address, in which case the widget will just send an osc message ( /<doubleTap> <preArgs>) | 
| range# | object | { | Defines the breakpoints of the fader's scale: - keys can be percentages and/or min/max- values can be numberorobjectif a custom label is neededExample: ( {min:{"-inf": 0}, "50%": 0.25, max: {"+inf": 1}}) | 
| logScale# | boolean|number | false | Set to trueto use logarithmic scale (base 10). Set to anumberto define the logarithm's base. | 
| sensitivity# | number | 1 | Defines the fader's sensitivity when snapisfalse | 
| steps# | string|number|array | "" | Restricts the widget's value: - auto: use values defined inrange- number: define a number of evenly spaced steps- array: use arbitrary values | 
| unit# | string | "" | Unit will be appended to the displayed widget's value (it doesn't affect osc messages) | 
| origin# | number | "auto" | Defines the starting point's value of the fader's gauge | 
| osc# | |||
| touchAddress# | string | "" | OSC address for touched state messages: /touchAddress [preArgs] 0/1 | 
| meterAddress# | string | "" | OSC address for the built-in meter | 
knob
Rotative knob slider.
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| css# | string | "" | Available CSS variables: - --color-gauge: color;- --color-knob: color;- --color-pips: color; | 
| knob# | |||
| pips# | boolean | false | Set to trueto show the scale's breakpoints | 
| input# | boolean | true | Set to falseto hide the built-in input | 
| compact# | boolean | false | Set to trueto display a compact alternative for the widget. Ifinputistrue, the input can be focused with a right-click (mouse only). Disablespipswhen enabled. | 
| dashed# | boolean | false | Set to trueto display a dashed gauge | 
| angle# | number | 270 | Defines the angle's width of the knob, in degrees | 
| snap# | boolean | false | By default, dragging the widget will modify it's value starting from its last value. Setting this to truewill make it snap directly to the mouse/touch position | 
| spring# | boolean | false | When set to true, the widget will go back to itsdefaultvalue when released | 
| doubleTap# | boolean | false | Set to trueto make the knob reset to itsdefaultvalue when receiving a double tap.Can also be an osc address, in which case the widget will just send an osc message ( /<doubleTap> <preArgs>) | 
| range# | object | { | Defines the breakpoints of the fader's scale: - keys can be percentages and/or min/max- values can be numberorobjectif a custom label is neededExample: ( {min:{"-inf": 0}, "50%": 0.25, max: {"+inf": 1}}) | 
| logScale# | boolean|number | false | Set to trueto use logarithmic scale (base 10). Set to anumberto define the logarithm's base. | 
| sensitivity# | number | 1 | Defines the knob's sensitivity when snapisfalse | 
| steps# | string|number|array | "" | Restricts the widget's value: - auto: use values defined inrange- number: define a number of evenly spaced steps- array: use arbitrary values | 
| unit# | string | "" | Unit will be appended to the displayed widget's value (it doesn't affect osc messages) | 
| origin# | number | "auto" | Defines the starting point's value of the knob's gauge | 
| osc# | |||
| touchAddress# | string | "" | OSC address for touched state messages: /touchAddress [preArgs] 0/1 | 
encoder
A knob that sends a relative direction infomation instead of an absolute value.
| property | type | default | description | 
|---|---|---|---|
| encoder# | |||
| compact# | boolean | false | Set to trueto display a compact alternative for the widget. | 
| ticks# | number | 360 | defines the granularity / verbosity of the encoder (number of step for a 360° arc) | 
| back# | * | -1 | Defines which value is sent when rotating the encoder anticlockwise | 
| forth# | * | 1 | Defines which value is sent when rotating the encoder clockwise | 
| release# | number | "" | Defines which value is sent when releasing the encoder: - Set to nullto send send no argument in the osc message- Can be an objectif the type needs to be specified | 
| snap# | boolean | false | By default, dragging the widget will modify it's value starting from its last value. Setting this to truewill make it snap directly to the mouse/touch position | 
| doubleTap# | boolean | false | Set to trueto make the fader reset to itsdefaultvalue when receiving a double tap.Can also be an osc address, in which case the widget will just send an osc message ( /<doubleTap> <preArgs>) | 
| osc# | |||
| touchAddress# | string | "" | OSC address for touched state messages: /touchAddress [preArgs] 0/1 | 
range
A fader with two heads for setting a range.
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| css# | string | "" | Available CSS variables: - --color-gauge: color;- --color-knob: color;- --color-pips: color;- --gauge-opacity: number; | 
| range# | |||
| range# | object | { | See fader's range | 
| horizontal# | boolean | false | See fader's horizontal | 
| alignRight# | boolean | false | See fader's alignRight | 
| input# | boolean | true | See fader's input | 
| compact# | boolean | false | See fader's compact | 
| pips# | boolean | true | See fader's pips | 
| snap# | boolean | false | See fader's snap | 
| spring# | boolean | false | See fader's spring | 
| logScale# | boolean | false | See fader's logScale | 
| sensitivity# | number | 1 | See fader's sensitivity | 
| osc# | |||
| touchAddress# | string | "" | See fader's touchAddress | 
| split# | boolean|object | false | Set to trueto send separate osc messages forlowandhighhandles. Theaddresswill be the same as the widget's with/lowor/highappended to itCan be set as an object to specify a different address:['/osc_address_low', '/osc_address_high']Note: the widget will only respond to its original osc address, not to the splitted version | 
Buttons#
toggle
On / off button.
| property | type | default | description | 
|---|---|---|---|
| toggle# | |||
| doubleTap# | boolean | false | Set to trueto make the button require a double tap to be toggled instead of a single tap | 
| led# | boolean | false | Set to trueto display the toggle's state with a led | 
| on# | * | 1 | Set to nullto send send no argument in the osc messageCan be an objectif the type needs to be specified (see preArgs) | 
| off# | * | 0 | Set to nullto send send no argument in the osc messageCan be an objectif the type needs to be specified (see preArgs) | 
push
On / off button that turns off when released.
| property | type | default | description | 
|---|---|---|---|
| push# | |||
| doubleTap# | boolean | false | Set to trueto make the button require a double tap to be pushed instead of a single tap | 
| on# | * | 1 | Set to nullto send send no argument in the osc messageCan be an objectif the type needs to be specified (see preArgs) | 
| off# | * | 0 | Set to nullto send send no argument in the osc messageCan be an objectif the type needs to be specified (see preArgs) | 
| norelease# | boolean | false | Set to trueto prevent sending any osc message when releasing the button | 
switch
Value selector button.
| property | type | default | description | 
|---|---|---|---|
| switch# | |||
| horizontal# | boolean | false | Set to trueto display values horizontally | 
| showValues# | boolean | false | If values is an object, set to trueto display both values and labels instead of labels only | 
| values# | array|object | { | Arrayof possible values to switch between :[1,2,3]Objectof"label":valuepairs. Numeric labels must be prepended or appended with a white space (or any other non-numeric character) otherwise the order of the values won't be kept | 
| traversing# | boolean | true | Set to falseto disable traversing gestures | 
dropdown
Native dropdown menu.
| property | type | default | description | 
|---|---|---|---|
| dropdown# | |||
| values# | array|object | { | Arrayof possible values to switch between :[1,2,3]Objectof label:value pairs. Numeric labels must be prepended or appended with a white space (or any other non-numeric character) otherwise the order of the values won't be keptAn empty option will always be prepended to values (sends an osc message without any value); it can be hidden by adding option:first-child{display:none}to the widget'scss | 
menu
Drag and drop menu with a circular or grid layout.
| property | type | default | description | 
|---|---|---|---|
| menu# | |||
| size# | number|array | 200 | - If circularistrue: diameter (in px)- If circularisfalse: square size or[width, height]array | 
| circular# | boolean | true | Defines whether the menu should be rendered in a circle or in a box | 
| vertical# | boolean|number | false | If circularisfalse, set this totruefor vertical layoutIgnored when gridistrue | 
| grid# | boolean|number | false | - If circularisfalse, set this totruefor grid layout- Can be a numberto define the number of columns | 
| toggle# | boolean | false | Set to trueto make the menu stay opened after mouse/touch release | 
| doubleTap# | boolean | false | Set to trueto make the menu require a double tap to be opened instead of a single tap | 
| values# | array|object | { | Arrayof possible values to switch between :[1,2,3]Objectof label:value pairs. Numeric labels must be prepended or appended with a white space (or any other non-numeric character) otherwise the order of the values won't be kept | 
| weights# | array | "" | Arrayofnumberdefining the weights of each value invaluesIgnored when gridistrue | 
Pads#
xy
Two-dimensional slider.
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| css# | string | "" | Available CSS variables: - --background: background;: sets the dragging area's background- --pips-color: color;- --pips-opacity: number;- --point-opacity: number; | 
| xy# | |||
| pointSize# | integer | 20 | Defines the points' size | 
| snap# | boolean | false | By default, the points are dragged from their initial position. If set to true, touching anywhere on the widget's surface will make them snap to the touching coordinates | 
| spring# | boolean | false | When set to true, the widget will go back to its default value when released | 
| pips# | boolean | true | Set to falseto hide the scale | 
| rangeX# | object | { | Defines the min and max values for the x axis | 
| rangeY# | object | { | Defines the min and max values for the y axis | 
| logScaleX# | boolean|number | false | Set to trueto use logarithmic scale for the x axis (base 10). Set to anumberto define the logarithm's base. | 
| logScaleY# | boolean|number | false | Set to trueto use logarithmic scale for the y axis (base 10). Set to anumberto define the logarithm's base. | 
| input# | boolean | true | Set to false to hide the built-in input widget | 
| doubleTap# | boolean|string | false | Set to trueto make the fader reset to its default value when receiving a double tap.Can also be an osc address, which case the widget will just send an osc message: /<doubleTap> <preArgs> | 
| sensitivity# | number | 1 | Defines the pad's sensitivity when snapisfalse | 
| osc# | |||
| touchAddress# | string | "" | OSC address for touched state messages: /touchAddress [preArgs] 0/1) | 
| split# | boolean|object | false | Set to trueto send separate osc messages for each point's x and y axis. The address will be the same as the widget's with/xor/yappended to itCan be set as an objectto specify a different address : ['/osc_address_x', '/osc_address_y']Note: the widget will only respond to its original osc address, not to the splitted version | 
rgb
Color picker with optional alpha slider.
| property | type | default | description | 
|---|---|---|---|
| rgb# | |||
| snap# | boolean | false | By default, the points are dragged from their initial position. If set to true, touching anywhere on the widget's surface will make them snap to the touching coordinates | 
| spring# | boolean | false | When set to true, the widget will go back to its default value when released | 
| range# | object | { | Defines the widget's output scale. | 
| input# | boolean | true | Set to falseto hide the built-in input widget | 
| alpha# | boolean | false | Set to trueto enable alpha channel | 
| osc# | |||
| split# | boolean|object | false | Set to trueto send separate osc messages for for r and g & b. The address will be the same as the widget's with/r,/gor/bappended to itCan be set as an objectto specify a different address :['/r', '/g', 'b']Note: the widget will only respond to its original osc address, not to the splitted version | 
multixy
Multi-point XY pad.
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| css# | string | "" | Available CSS variables: - --background: background;: sets the dragging area's background- --pips-color: color;- --pips-opacity: number;- --color-text: point-color;Pads can be targetted individually with the .pad-X selector (where X is the pad's index) | 
| multi xy# | |||
| points# | integer|array | 2 | Defines the number of points on the pad Can be an array of strings that will be used as labels for the points (ex: ['A', 'B']) | 
| xy# | |||
| pointSize# | integer | 20 | Defines the points' size | 
| snap# | boolean | false | By default, the points are dragged from their initial position. If set to true, touching anywhere on the widget's surface will make them snap to the touching coordinates | 
| spring# | boolean | false | When set to true, the widget will go back to its default value when released | 
| pips# | boolean | true | Set to falseto hide the scale | 
| rangeX# | object | { | Defines the min and max values for the x axis | 
| rangeY# | object | { | Defines the min and max values for the y axis | 
| logScaleX# | boolean|number | false | Set to trueto use logarithmic scale for the x axis (base 10). Set to anumberto define the logarithm's base. | 
| logScaleY# | boolean|number | false | Set to trueto use logarithmic scale for the y axis (base 10). Set to anumberto define the logarithm's base. | 
| sensitivity# | number | 1 | Defines the pad's sensitivity when snapisfalse | 
| osc# | |||
| touchAddress# | string | "" | OSC address for touched state messages: /touchAddress [preArgs] 0/1 | 
| split# | boolean|object | false | Set to trueto send separate osc messages for each point's x and y axis. The address will be the same as the widget's with/N/xor/N/yappended to it, where N is the point's id (or the point's label if points is an array)Can be set as an objectto specify a different address :['/0/x', '/0/y', '/1/x', '/2/y']Note: the widget will only respond to its original osc address, not to the splitted version | 
Matrices#
matrix
Generic matrix for creating rows/columns of widgets.
| property | type | default | description | 
|---|---|---|---|
| matrix# | |||
| widgetType# | string | "toggle" | Defines the type of the widgets in the matrix | 
| matrix# | array | [ | Defines the number of columns and and rows in the matrix | 
| start# | integer | 0 | First widget's index | 
| spacing# | integer | 0 | Adds space between widgets | 
| traversing# | boolean | true | Set to falseto disable traversing gestures | 
| border# | boolean | true | Set to falseto disables the widgets' borders | 
| props# | object | {} | Defines a set of property to override the widgets' defaults. Formulas in this field are resolved with an extra variable representing each widget's index: $Note: by default, the widgets inherit from the matrix' idand osc properties (idandaddressare appended with/$) | 
keyboard
Piano keyboard.
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| css# | string | "" | Available CSS variables: - --color-white:color;(white keys color)- --color-black:color;(black keys color) | 
| matrix# | |||
| keys# | number | 25 | Defines the number keys | 
| start# | number | 48 | MIDI note number to start with (default is C4) Standard keyboards settings are: [25, 48],[49, 36],[61, 36],[88, 21] | 
| traversing# | boolean | true | Set to falseto disable traversing gestures | 
| on# | * | 1 | Set to nullto send send no argument in the osc messageCan be an objectif the type needs to be specified (see preArgs) | 
| off# | * | 0 | Set to nullto send send no argument in the osc messageCan be an objectif the type needs to be specified (see preArgs) | 
| toggles# | boolean | false | Set to trueto make keys bahave like toggle buttons | 
| osc# | |||
| split# | boolean|string | false | true: the widget's index will be appended to the matrice's osc addressfalse: it will be prepended to the widget's preArgsstring: will be used to define the widgets' addresses, replacing dollar signs ($) with their respective index (to insert the actual dollar sign, it must be escaped with a backslash (\$)) | 
patchbay
Connect inputs to outputs.
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| css# | string | "" | The inputs/ouputs width can be adjusted by using the .nodesselector:.nodes { width: 25% } | 
| patchbay# | |||
| inputs# | array|object | [ | - Arrayof input names :['input_1', 'input_2']- Objectof"label_1": "input_1"pairs. Numeric labels must be prepended or appended with a white space (or any other non-numeric character) otherwise the order of the values won't be keptPatchbay inputs can be connected to one or more outputs and will send messages of the following form when they are connected/disconnected: /patchbay_address input_x output_x output_y etcIf no output is connected to the input, the message will be /patchbay_address input_xThe inputs values can be consumed with the property inheritance syntax: @{patchbay_id/input_1}returns an array of output names connected toinput_1 | 
| outputs# | array|object | [ | List of output values the inputs can connect to (see inputs). | 
Plots#
plot
XY coordinates plot.
| property | type | default | description | 
|---|---|---|---|
| plot# | |||
| rangeX# | object | { | Defines the min and max values for the x axis | 
| rangeY# | object | { | Defines the min and max values for the y axis | 
| logScaleX# | boolean|number | false | Set to trueto use logarithmic scale for the x axis (base 10). Set to anumberto define the logarithm's base. | 
| logScaleY# | boolean|number | false | Set to trueto use logarithmic scale for the y axis (base 10). Set to anumberto define the logarithm's base. | 
| origin# | number | "auto" | Defines the y axis origin. Set to falseto disable it. | 
| dots# | boolean | true | |
| bars# | boolean | false | Set to trueto use draw bars instead (disableslogScaleXand forcesx axiseven spacing) | 
| smooth# | boolean|number | false | Set to trueto make the line smooth. Float values are also acceptable (works fine between0and0.5) | 
| pips# | boolean | true | Set to falseto hide the scale | 
| value# | |||
| value# | array|string | "" | - Arrayofyvalues- Arrayof[x, y]arrayvalues- Stringarray- Stringobjectto update specific coordinates only:{0:1, 4:0}will change the 1st and 5th points' coordinates | 
eq
Draws frequency response between from from an array of filter objects.
| property | type | default | description | 
|---|---|---|---|
| eq# | |||
| pips# | boolean | true | Set to false to hide the scale | 
| resolution# | number | 128 | Defines the number of points used to compute the frequency response | 
| rangeY# | object | { | Defines the min and max values for the y axis | 
| origin# | number|boolean | "auto" | Defines the y axis origin. Set to falseto disable it | 
| logScaleX# | boolean|number | false | Set to trueto use logarithmic scale for the x axis (base 10). Set to anumberto define the logarithm's base. | 
| smooth# | boolean|number | false | Set to trueto make the line smooth. Float values are also acceptable (works fine between0and0.5) | 
| value# | |||
| value# | array | "" | Each item must be an object with the following properties - type: string ("highpass", "highshelf", "lowpass", "lowshelf", "peak" or "notch")- freq: number (filter's resonant frequency)- q: number (Q factor)- gain: number- on: boolean | 
visualizer
Display its value over time.
| property | type | default | description | 
|---|---|---|---|
| visualizer# | |||
| duration# | number | 1 | Defines visualization duration in seconds | 
| range# | object | { | Defines the min and max values for the y axis | 
| origin# | number | "auto" | Defines the y axis origin. Set to falseto disable it | 
| logScale# | boolean|number | false | Set to trueto use logarithmic scale for the y axis (base 10). Set to anumberto define the logarithm's base. | 
| smooth# | boolean|number | false | Set to trueto make the line smooth. Float values are also acceptable (works fine between0and0.5) | 
| pips# | boolean | true | Set to falseto hide the scale | 
led
Intensity display.
| property | type | default | description | 
|---|---|---|---|
| led# | |||
| range# | object | { | Value to led intensity mapping range | 
| logScale# | boolean|number | false | Set to trueto use logarithmic scale (base 10). Set to anumberto define the logarithm's base. | 
rgbled
Rgb / rgba color display
| property | type | default | description | 
|---|---|---|---|
| value# | |||
| value# | array|string | "" | - Array:[r, g, b](r,gandbbetween0and255)- Array:[r, g, b, alpha](alphabetween0and255)- String: CSS color | 
meter
Non-interactable fader.
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| css# | string | "" | Available CSS variables: - --color-gauge: color;- --color-knob: color;- --color-pips: color;- --gauge-opacity: number; | 
| meter# | |||
| range# | object | { | See fader's range | 
| logScale# | boolean | false | See fader's logScale | 
| origin# | number | "auto" | See fader's origin | 
| unit# | string | "auto" | See fader's unit | 
| alignRight# | boolean | false | See fader's alignRight | 
| horizontal# | boolean | false | See fader's horizontal | 
| pips# | boolean | false | See fader's pips | 
| dashed# | boolean | false | See fader's dashed | 
| gradient# | array|object | [] | When set, the meter's gauge will be filled with a linear color gradient - each item must be a CSS color string. - as an object: each key must be a number between 0 and 1- each item must be a CSS color string. Examples: ['blue', 'red'], {'0': 'blue', '0.9': 'blue', '1': 'red'} | 
text
Display text.
| property | type | default | description | 
|---|---|---|---|
| text# | |||
| vertical# | boolean | false | Set to trueto display the text vertically | 
| wrap# | boolean | false | Set to trueto wrap long lines automatically.This will not break overflowing words by default, word-breaking can be enabled by adding word-break: break-all;to thecssproperty | 
| align# | string | "" | Set to leftorrightto change text alignment (otherwise center) | 
image
Load a image (url or base64-encoded).
| property | type | default | description | 
|---|---|---|---|
| image# | |||
| size# | string | "cover" | CSS background-size | 
| position# | string | "center" | CSS background-position | 
| repeat# | string | "no-repeat" | CSS background-repeat | 
| border# | boolean | true | Set to falseto disable the borders and background-color | 
| cache# | boolean | true | Set to false to disable image caching (forces file reload when updating or editing the widget). When true, sending reloadto the widget reloads its image without changing its value | 
| value# | |||
| value# | string | "" | - File urlorpath(relative to the session file location by default, falling back to absolute path)- Base64 encoded image : data:image/... | 
svg
Svg parser.
| property | type | default | description | 
|---|---|---|---|
| svg# | |||
| svg# | string | "" | Svg xml definition: - will be wrapped in a < svg />element- <path>commands support a special percent notation (%xand%y) | 
| border# | boolean | true | Set to falseto disable the borders and background-color | 
html
Simple HTML parser.
| property | type | default | description | 
|---|---|---|---|
| html# | |||
| html# | string | "" | Allowed HTML tags: h1-6, blockquote, p, a, ul, ol, nl, li, b, i, strong, em, strike, code, hr, br, div, table, thead, img, caption, tbody, tr, th, td, pre | 
| border# | boolean | true | Set to falseto disable the borders and background-color | 
frame
Embed a page in a frame (local network only).
| property | type | default | description | 
|---|---|---|---|
| style# | |||
| label# | string|boolean | "auto" | Set to falseto hide completelyInsert icons using the prefix ^ followed by the icon's name : ^play, ^pause, etc If set to false, all pointer-events will be disabled on the frame as long as the editor is enabled to ensure it can be selected | 
| frame# | |||
| border# | boolean | true | Set to falseto disable the borders and background-color | 
| value# | |||
| value# | string | "" | External web page URL. Only local URLs are allowed (starting with http://127.0.0.1/,http://10.x.x.x/,http://192.168.x.x/, etc) | 
Containers#
panel
Widgets or Tabs container.
| property | type | default | description | 
|---|---|---|---|
| panel# | |||
| scroll# | boolean | true | Set to falseto disable scrollbars | 
| border# | boolean | true | By default, widgets in panels/strip have their border disabled, except for panels and strips. Set to falseto apply this rule to the panel too | 
| value# | |||
| value# | integer | "" | Defines currently opened tab in the widget A tab can be opened only by setting its parent's value | 
| children# | |||
| variables# | * | "@{parent.variables}" | Defines one or more arbitrary variables that can be inherited by children widgets | 
| widgets# | array | [] | Each element of the array must be a widget object. A panel cannot contain widgets and tabs simultaneously. | 
| tabs# | array | [] | Each element of the array must be a tab object. A panel cannot contain widgets and tabs simultaneously | 
strip
Widget container that display its children in a single column or row.
| property | type | default | description | 
|---|---|---|---|
| strip# | |||
| scroll# | boolean | true | Set to falseto disable scrollbars | 
| horizontal# | boolean | false | Set to trueto display widgets horizontally | 
| stretch# | boolean | false | Set to trueto stretch widgets evenly | 
| border# | boolean | true | By default, widgets in panels/strip have their border disabled, except for panels and strips. Set to falseto apply this rule to the panel too | 
| spacing# | integer|percentage | 0 | Adds space between widgets. Percents are always relative to the strips width | 
| children# | |||
| variables# | * | "@{parent.variables}" | Defines one or more arbitrary variables that can be inherited by children widgets | 
| widgets# | array | [] | Each element of the array must be a widget object - By default, children widgets that don't have an explicit width/heightset will be shrinked to respect the sizes specified by others- Adding flex:1;to a children'scsswill give it the ability the fill the remaining space- Multiple children can have a flex:x;css property (xwill ponderate their expansion) | 
modal
A toggle button that opens a popup panel. Cannot contain tabs directly.
| property | type | default | description | 
|---|---|---|---|
| modal# | |||
| doubleTap# | boolean | false | Set to trueto make the modal require a double tap to open instead of a single tap | 
| popupLabel# | string | "" | Alternative label for the modal popup | 
| popupWidth# | number|percentage | "80%" | Modal popup's size | 
| popupHeight# | number|percentage | "80%" | Modal popup's size | 
| popupLeft# | number|percentage | "auto" | Modal popup's position | 
| popupTop# | number|percentage | "auto" | Modal popup's position | 
| scroll# | boolean | true | Set to falseto disable scrollbars | 
| value# | |||
| value# | integer | "" | Defines the modal's state: 0for closed,1for opened | 
| children# | |||
| variables# | * | "@{parent.variables}" | Defines one or more arbitrary variables that can be inherited by children widgets | 
| widgets# | array | [] | Each element of the array must be a widget object | 
clone
Widget replication with overridable properties.
| property | type | default | description | 
|---|---|---|---|
| clone# | |||
| widgetId# | string | "" | idof the widget to clone | 
| overrides# | |||
| props# | object | {} | Cloned widget's properties to override | 
root
Main (unique) container
| property | type | default | description | 
|---|---|---|---|
| id# | string | "root" | Widgets sharing the same id will act as clones and update each other's value(s) without sending extra osc messages | 
| value# | |||
| value# | integer | "" | Defines currently opened tab in the widget A tab can be opened only by setting its parent's value | 
| children# | |||
| traversing# | boolean | false | Set to trueto enable traversing gestures in this widget. Set tosmartorautoto limit affected widgets by the type of the first touched widget | 
| variables# | * | {} | Defines one or more arbitrary variables that can be inherited by children widgets | 
| tabs# | array | [ | Each element of the array must be a tab object | 
tab
Tabbed panel widget
| property | type | default | description | 
|---|---|---|---|
| tab# | |||
| detached# | boolean | true | Set to falseif the tab containsframewidgets that should not be reloaded when the tab opens | 
| value# | |||
| value# | integer | "" | Defines currently opened tab in the widget A tab can be opened only by setting its parent's value | 
| children# | |||
| variables# | * | "@{parent.variables}" | Defines one or more arbitrary variables that can be inherited by children widgets | 
| widgets# | array | [] | Each element of the array must be a widget object. A tab cannot contain widgets and tabs simultaneously | 
| tabs# | array | [] | Each element of the array must be a tab object. A tab cannot contain widgets and tabs simultaneously | 
Switchers#
state
Save and recall the state of other widgets.
| property | type | default | description | 
|---|---|---|---|
| state# | |||
| filter# | string|array | "" | Only save state from widgets contained in widgets designated by id. If empty, the whole session's state is saved. Switchers are always ignored. - widget id string- arrayof widget id strings | 
| saveLabel# | string | "Save" | Label for save button | 
| loadLabel# | string | "Load" | Label for load button | 
| horizontal# | boolean | false | Set to trueto display buttons horizontally | 
| value# | |||
| value# | object|string | "" | - object:"widget_id": VALUEpairs- string:"save"(trigger save action),"load"(trigger load action) or""(reset value)Note: the widget's actual value is never "save"or"load", it's either an empty string or an object. | 
switcher
Store other widgets' values and recall them.
| property | type | default | description | 
|---|---|---|---|
| switcher# | |||
| linkedWidgets# | string|array | "" | - String: a widget'sidwhose state changes will be stored- Array: a list of widgetidstring | 
| horizontal# | boolean | false | Set to trueto display values horizontally | 
| values# | array|object | { | Each item represents a bank that stores the values from the widgets listed in linkedWidgets- Arrayof possible values to switch between :[1,2,3]- Objectof"label":valuepairs. Numeric labels must be prepended or appended with a white space (or any other non-numeric character) otherwise the order of the values won't be kept | 
crossfader
Switcher with linear interpolation slider.
| property | type | default | description | 
|---|---|---|---|
| crossfader# | |||
| linkedWidgets# | string|array | "" | - String: a widget'sidwhose state changes will be stored- Array: a list of widgetidstring | 
| horizontal# | boolean | false | Set to trueto display values horizontally | 
Inputs#
input
Text input.
| property | type | default | description | 
|---|---|---|---|
| input# | |||
| vertical# | boolean | false | Set to trueto display the text vertically | 
| align# | string | "" | Set to leftorrightto change text alignment (otherwise center) | 
| unit# | string | "" | Unit will be appended to the displayed widget's value (it doesn't affect osc messages) | 
| editable# | boolean | true | Set to falseto make the input non-editable | 
| asYouType# | boolean | false | Set to trueto make the input send its value at each keystroke | 
keys
Keyboard binding.
| property | type | default | description | 
|---|---|---|---|
| keys# | |||
| binding# | string|array | "" | Key combo stringorarrayof strings (see KeyboardJS documentation) | 
| keydown# | string | "" | This property is evaluated each time the key combo is pressed and defines the widget's own value. Formulas are given extras variables in this context: - key: pressed key name (usefull for handling multiple keys with a single keys widget, lowercased when referencing a character key)- code: pressed key code name (full list)- ctrl: control key state- alt: alt key state- shift: shift key state- meta: command/windows key state | 
| keyup# | string | "" | Same as keydown, but evaluated when releasing the key combo | 
| repeat# | boolean | true | Set to falseto prevent keydown repeats when holding the key combo pressed | 
script
Evaluates a script each time it receives a value.
| property | type | default | description | 
|---|---|---|---|
| script# | |||
| condition# | string | 1 | When the widget receives a value, if this property return a falsy value, the script property won't be evaluated. If it's non-falsy, it will be evaluated normally. Formulas are given one extra variable in this context: - value: the value received by the widget | 
| script# | string | "" | This property is evaluated each time the widget receives a value* if condition is non-falsy. Formulas are given extras variables in this context: - value: value received by the widget- id: id of the widget that triggered the script- send(target, address, arg1, arg2, ...): function for sending osc messages (ignores the script's targets and the server's defaults unlesstargetisfalse; ignores the script'spreArgs)- set(id, value): function for setting a widget's value- get(id): function for getting a widget's value (dynamic equivalent of @{id})- getProp(id, property): function for getting a widget's property value ((dynamic equivalent of @{id.property})- httpGet(url, callback): function for making http requests (asynchronous "GET" request and local urls only)* Note: valueorlinkIdproperties can be used to receive other widgets' values. Thevalueproperty must actually change to trigger the execution, where linked widgets vialinkIdcan submit the same value over and over and trigger the execution | 
gyroscope
Device motion/orientation sensor.
| property | type | default | description | 
|---|---|---|---|
| gyroscope# | |||
| frequency# | number | 30 | Value update frequency (updates per seconds) | 
| normalize# | boolean | true | Normalize gravity related values | 
| compass# | boolean | false | Set to trueto return the orientation values with respect to the actual north direction of the world instead of the head direction of the device | 
| screenAdjusted# | boolean | false | Set to trueto return screen adjusted values | 
| value# | |||
| value# | object | "" | The gyroscope's value is an object containing multiple values, which can be used by other widgets via the property maths syntax - value.do.alpha: deviceorientation event alpha- value.do.beta: deviceorientation event beta- value.do.gamma: deviceorientation event gamma- value.do.absolute: deviceorientation event absolute- value.dm.x: devicemotion event acceleration x- value.dm.y: devicemotion event acceleration y- value.dm.z: devicemotion event acceleration z- value.dm.gx: devicemotion event accelerationIncludingGravity x- value.dm.gy: devicemotion event accelerationIncludingGravity y- value.dm.gz: devicemotion event accelerationIncludingGravity z- value.dm.alpha: devicemotion event rotationRate alpha- value.dm.beta: devicemotion event rotationRate beta- value.dm.gamma: devicemotion event rotationRate gamma | 
file
File/Folder selector (server-side).
| property | type | default | description | 
|---|---|---|---|
| input# | |||
| directory# | string | "auto" | Default browsing directory | 
| extension# | string | "*" | Only display files with this extension | 
| hidePath# | boolean | false | Set to trueto only display the filename (the whole path will still be used as value) | 
| allowDir# | boolean | false | Allow selecting a folder (by pressing "open" when no file is selected) | 
