IO references
Structure
In this article we explain the internal structure, of the IOReference string.
This will help you, if you to find the correct modifiers to use in Configuration tab, and when using the JSON editor to create configs.For other users, please use the pop-up in Configuration tab.
IOreference characters and structure
- IOreference strings shall match [a-zA-Z0-9_\.-:/{}] where : and / are used to tokenize and {} is used to nest other IOreferences in designated places. [] is a part of literal values.
- Generally tokenized by colon. If no colon is found, it’s a literal value (or range of).
Literal values
- Literal values: If enclosed in brackets [], it’s a slice with multiple values. Examples: “[red,green,blue]” = 3 values. “blue” = single value
Index 0 = Var
- Index 1: Variable reference
- Index 2-…: Modifiers
Example: "Var:Shift" = Value of variable "Shift"
Example: "Var:Shift:Current:Name" = Label of variable "Shift"
Index 0 = DC
String after “DC:” is split by “/“ and the parts will mean this:
- Index 0: Device Core Key
- Index 1: IOreference to device index (Optionally encapsulated in {})
- Index 2: Parameter name
- Index 3-…: Dimensions
(After the last trailing slash, if “:” is found the following will be used as modifiers)
Example: “DC:bmd-atem/Var:DeviceIndex/program/Var:MERow/:Current”
Example: “DC:dreamchip-cam/Var:DeviceIndex/PlayAtSpeed/{DC:dreamchip-cam/Var:DeviceIndex/CurrentBuffer}”
Index 0 = Preset
String after Preset:” is split by “/“ and the parts will mean this:
- Index 0: Preset reference (like variables)
- Index 1: Command
- Index 2: Preset number (IOreference, (Optionally encapsulated in {}))
- Index 3: Device Index (IOreference, (Optionally encapsulated in {}))
- Index 4-…: Dimensions
(After the last trailing slash, if “:” is found the following will be used as modifiers)
Index 0 = Flag
(TODO)
Index 0 = Behavior
Behavior:LastEvent:Type == [Binary/Pulsed/Analog/Speed]
Behavior:LastEvent:TimeToNow:[Limit] < 500 (milliseconds); Limit is optional, but for performance reasons, please set it to the same value or higher as the one you compare with.
Behavior:LastEvent/Binary:Pressed == [true/false]
Behavior:LastEvent/Binary:Edge != NoEdge [NoEdge, Top, Left, Bottom, Right, Encoder]
Behavior:Events/[the eventHandlerKey]:TimeToNow:[Limit] < 500 (milliseconds) Last accepted event. Limit is optional, but for performance reasons, please set it to the same value or higher as the one you compare with.
Behavior:IOreference[:modifiers added to IO reference]
for example:
Behavior:IOreference:Name
Behavior:IOreference:Current
Behavior:IOreference:Current:Name
Behavior:Const:[constant]
Behavior:Path
Behavior:Name
Behavior:Id
Behavior:Panels - provides all panel IDs this behavior is mapped to.
Index 0 = System
System:Lock
System:IPAddress
Index 0 = Reactor
Reactor:ProjectTitle - Current Project title
Reactor:ConfigTitle - Current name of root layer
Reactor:UptimeFormatted - Uptime since Reactor was started
Reactor:Panels:Connected - Number of connected panels panels
Reactor:Panels:Warnings - Number of panels with warnings
Reactor:Panels:Unconnected - Number of unconnected panels (errors)
Reactor:Panels:LastEvent - Last event as a string, eg. "Down (T)" if a four way buttons top edge was pressed down.
Reactor:Panels:LastEventSource - The HWC source of last event, including panel ID, on form "P[panel id]#[HWC id]", for example "P1#43"
Reactor:Devices:Connected - Number of connected devices
Reactor:Devices:Warnings - Number of devices with warnings
Reactor:Devices:Unconnected - Number of unconnected devices (errors)
Reactor:Devices/[idx]:Name - Name of devices. idx is just an index.
Reactor:Warnings - Total number of warnings in Reactor
Reactor:Errors - Total number of errors in Reactor
Index 0 = Panels
String after Panels: is split by “/“ and the parts will mean this:
- Index 0: Target of ID: "Canvas", "Panel", "CanvasOfPanel"
- Canvas/[id]/ - forcing a given canvas id. Normally not used
- Panel/[id]/ - forcing a particular panel only. May be used when canvas is not used to represent a coherent panel
- CanvasOfPanel/[id]/ - normally the one used because Reactor knows the panel ID, but usually desires to target the canvas of the panel
(Usual source of id is: Behavior:Panels)
- Index 1: ID of target (IOreference, (Optionally encapsulated in {}))
- Index 2: Parameter
- SleepTime, minutes
- DimTime, minutes
- DisplayBrightness, 0-8
- LEDBrightness, 0-8
- GlobalBrightness, 0-8
- Sleep (binary: "on", "off") - Is reset by the panel when it wakes up again. It's probed once a second, so it can feel a little like a "hold down" function
- ResetSleepTimer (trigger)
- Name (read only)
- Model (read only)
General Modifiers
[] - Not adding any modifiers returns the values…
Name - Returns Name of the reference (like a parameter or variable name)
Mutable - Returns “true” if available for change
Assumed - Returns "true" if a parameter is assumed in the core
Exists - Returns “true” if exists
Default - Returns default values of IO reference
Default:Name - Returns names of default values of IO reference
FineSteps - For a DC this returns the recommended fine steps, else returns 1
CoarseSteps - For a DC this returns the recommended fine coarse, else returns 10
Current - Returns values (same as no modifier)
Current:Name - Returns names of values
Current:Normalized - Returns value normalized to value range 0-1000
Current:NormalizedInverted - Returns value normalized to inverted value range 1000-0
Current:Percent - Returns value normalized to value range 0-100
Current:Index - Returns index of current value from option list, starting with zero
Current:BufferTimeToNow - Returns milliseconds from buffered value time out to current time.
Label - for constants, returns the label a given constant may have
All - Returns all option values for a parameter
Index:[int/HWC behaviour constant string ref] - Returns option value with index [int] or if its a string, the constant of the HWC Behavior (works only for HWC behaviours then) (starting with zero)
Index:[int/HWC behaviour constant string ref]:Name - Returns name of option value with index [int] (starting with zero)
Index:[int/HWC behaviour constant string ref]:Exists - Returns true if the index exists
Index:Last - Returns last option value
Confirm:[int] - If added to a setting, stepping or mapping values, it will change the value only locally and waiting to be confirmed for [int] milliseconds after which it will fall back. Confirmation happens if a trigger (valueless value setting) happens. (works only for Device Cores)
Wait:[int] - like Confirm, but the change is automatically accepted on the expiry of the time. (works only for Device Cores)
Script - returns "true" if there is an event script defined
Script:IsRunning - returns "true" if there is a script and if script is running.
ASCIIOnly - Returns true if only ascii characters are found in string (<127). Works also for Behavior:Const:[ConstantName]:ASCIIOnly
FineSteps - For Device Cores: Step size for fine steps (an integer value)
CoarseSteps - For Device Cores: Step size for coarse steps (an integer value)