# Variables For increased flexibility in a configuration Variables are often applied. A variable works as an adjustable value which can be numerical or text based that can be used in place of a set value. Variables live on the layers of the tree but are used in lots of different places and in different ways. It is on the layers that you can see what Variables are available, their names, and their current value. In the example below you can see how: ![Screenshot 2023-12-06 at 12.51.17 PM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2023-12/scaled-1680-/screenshot-2023-12-06-at-12-51-17-pm.png)

Please note, Variables in the tree are only accessible to the same layer they are created on or higher in the tree, unless defined otherwise in the variable set up. Additionally, layers limited by Active If conditions also set limits on the variable.

There are two types of variables; range or options.
Range Variables ![Screenshot 2024-01-17 at 12.40.48.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-17-at-12-40-48.png)
NameVariable's name
DescriptionEasy to understand description to help identify the variable's purpose
TypeRange or Options
MinMinimum value for the variable (must be lower than the max). Can be set to 0
MaxMaximum value for the variable (must be higher than the max)
Center (or Default)Default value for the variable if not saved on panel reboot.
![Screenshot 2024-01-17 at 12.40.59.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-17-at-12-40-59.png)
Default to firstSets default value to the first.
Default ValueDefine the default value if not first.
Always defineSeparates this instance of the variable from ones of the same name lower in the tree (overridden by Expand Scope).
Accept Any ValueAllows any value to be accepted during conformity check.
Expand ScopeAllows the variable to be used lower in the tree towards the root.
CaptureAllows a variable to capture any expanded-scope variable from a branch.
PersistentSaves value between panel reboots.
Zero set AllowAllows for the variable to be blank
Force value (test)Force set a value for the variable, use for testing
**Variable Use Case** Range variables are great for creating dynamic device parameters. In the example below, the variable is set within a parameter.

This is only a single example of the use of Options Variables.

First looking at a breakdown of the parameter the variable is going to be added into: Atem Program Input Video Source DC:bmd-atem/1/ProgramInputVideoSource/1/1 **DC** (DEVICE CORE) **:bmd-atem** (BMD-ATEM) **/1** (DEVICE ID 1) **/ProgramInputVideoSource** (Specified parameter) **/1** (M/E number) **/1** (Input Number) A range variable would most naturally be put in place of numerical values, making Device ID, M/E Number, or Input Number great places use a variable. Using the variable in place of the Device ID will allow for switching instances of the Atem. It is possible to find the specific Device ID number of the Atems in the Device Details on the Home Page of Reactor. ![Screenshot 2024-02-06 at 10.33.51 AM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-02/scaled-1680-/screenshot-2024-02-06-at-10-33-51-am.png) When creating the variable it is best to name is something easy to identify the place it should be used. ![Screenshot 2024-02-06 at 10.34.51 AM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-02/scaled-1680-/screenshot-2024-02-06-at-10-34-51-am.png) Insetting that variable in the command would look like this: DC:bmd-atem/**Var:DeviceIndex**/ProgramInputVideoSource/1/1

Please note: Formatting is important for the variable name.

After setting the variable into a parameter it is important to set up a way to control the variable. ![Screenshot 2024-02-06 at 10.59.14 AM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-02/scaled-1680-/screenshot-2024-02-06-at-10-59-14-am.png) The feedback will look like: ![Screenshot 2024-02-06 at 10.56.22 AM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-02/scaled-1680-/screenshot-2024-02-06-at-10-56-22-am.png) Confirm the variable is changing properly in the tree: ![Screenshot 2024-02-06 at 10.56.41 AM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-02/scaled-1680-/screenshot-2024-02-06-at-10-56-41-am.png)
Options Variable **Variable Set Up**![Screenshot 2024-01-17 at 12.41.28.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-17-at-12-41-28.png)
NameVariable's name
DescriptionEasy to understand description to help identify the variable's purpose
TypeRange or Options
ValueValue string for the variable
LabelEasy to understand label used for feedback
FlagSets the option as the default value
TrashDeletes the Option
DuplicateDuplicates the line
+1Increments the line by +1
Add optionDefault value for the variable if not saved on panel reboot.
![Screenshot 2024-01-17 at 12.42.01.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-17-at-12-42-01.png)
Default to firstSets default value to the first.
Default ValueDefine the default value if not first.
Always defineSeparates this instance of the variable from ones of the same name lower in the tree (overridden by Expand Scope).
Accept Any ValueAllows any value to be accepted during conformity check.
Expand ScopeAllows the variable to be used lower in the tree towards the root.
CaptureAllows a variable to capture any expanded-scope variable from a branch.
PersistentSaves value between panel reboots.
Zero set AllowAllows for the variable to be blank
Force value (test)Force set a value for the variable, use for testing
**Variable Use Case** Options variables are great for Active If conditions on layers of the tree. In the example below, the variable is set up to make active different page layers in the tree.

This is only a single example of the use of Options Variables.

![Screenshot 2024-01-22 at 2.33.34 PM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-22-at-2-33-34-pm.png) In the tree it would look like this. The blue line next to a layer indicates it is the active layer. In the layer where the variable lives, the variable also shows what its current value is. ![Screenshot 2024-01-22 at 2.33.54 PM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-22-at-2-33-54-pm.png) On the page layer, the variable is set as the Active If conditions, meaning that need to be true for the layer to be the active layer. ![Screenshot 2024-01-22 at 2.36.04 PM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-22-at-2-36-04-pm.png) There are two main way to select the value of the parameter. To set a specific value, mainly on key press or by trigger, select the variable as a parameter with the Settings Template as Set a Value Directly. ![Screenshot 2024-01-22 at 2.44.19 PM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-22-at-2-44-19-pm.png) The feedback will look like this: ![Screenshot 2024-01-22 at 2.34.02 PM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-22-at-2-34-02-pm.png) To cycle through the values, mainly on the pulse of an encoder, select the variable as a parameter with the Settings Template as Change Variable. ![Screenshot 2024-01-22 at 2.44.05 PM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-22-at-2-44-05-pm.png) The feedback will look like this: ![Screenshot 2024-01-22 at 2.47.41 PM.png](https://wiki.skaarhoj.com/uploads/images/gallery/2024-01/scaled-1680-/screenshot-2024-01-22-at-2-47-41-pm.png)