-
Notifications
You must be signed in to change notification settings - Fork 78
Variables
Variables allow users to simplify complex macro setups.
They each have a name and a value, which can be checked using the Variable condition and modified using the Variable action.
Variables can also be used in scene selections or scene item selections in place of scenes or sources.
In this case the value of the variable will be used to find the corresponding scene or source.
A new variable can be added to a Variable condition or action by clicking on the "Add new variable" entry in the variable selection menu.
When selecting this entry a dialog will open in which you will have to enter the variable properties:
- Unique name for this new variable (1).
- The current value of the variable (2).
- What to do with the current value when closing OBS: (3)
- Don't save it, resulting in the value to be empty when restarting OBS. (a)
- Saving it, resulting in the current value to be restored when restarting OBS. (b)
- Setting it to a different value on OBS restart. (c)
To modify the properties of an existing variable simply select it in the drop down menu of a variable action or condition and click the marked gear symbol. Next click the "Properties" entry and a dialog like described above will open in which you can modify the variable's settings.
The gear icon will also allow you to rename or remove existing variable.
The Variable condition will allow you to test for various properties of the value of a given variable.
It supports checking if the variable ...
- equals a given value.
- is empty.
- equals a given number.
- is less / greater than a given number.
- has changed.
- and more ...
The Variable action will allow you to modify the value of a given variable in various ways.
It supports ...
- setting the value of a variable.
- appending to the value of a variable.
- appending the value of another variable.
- in-/ decrement the value of a given variable. (Assuming it is a valid number)
- and more ...
-
Variables can be used in scene, scene item, and source selections of various actions and conditions.
-
Variables can be used in the text fields of various conditions and actions:
The syntax to use variable in those text fields is
${variable name here}
. -
Variables can be used in most number based selections, e.g. duration or area selections.
The default value will be 0.0 if a given variable is not a valid number.
The following example is intended to showcase how to set up macros to automatically switch scenes in a podcast setting, with scenes focusing on a single person in case only single person is speaking and a separate scene in case multiple people are speaking at the same time.
The example will use the Variable "Next Scene" to indicate which scene the advanced scene switcher will switch to at the end of the check interval.
The following setup is assumed:
- Three audio input sources named "Guest 1 mic", "Guest 2 mic", and "Host mic".
- Four scenes are created named "Guest 1 scene", "Guest 2 scene", "Host scene", and "Wide scene". The first three represent a scene focusing on the guests or host respectively and the last one is used when more than one person is speaking at a time.
Three macros are created to set the variable "Next scene" to the respective scene if only a single person is speaking.
This is achieved by using an audio condition (1) to check the volume of the particular audio source and then setting the variable to the desired value using a variable action (2).
Optionally one can add a duration modifier (3) to make sure the scenes are not switched to frequently.
Similarly, the other two macros are created using different sources and values for the variable.
To handle the case of multiple people speaking at the same time we use the "Macro" condition in combination with the option to check the states of other macros.
In case of more than one of the other macros being true we set the variable to the name of the wide scene.
Finally, we add a macro that does the scene switching.
To avoid unnecessary scene switches we choose to only run this macro if the value of the variable changed using the variable condition.
Note that it is recommended that the macro switching the scene is below the macros setting the value for the "Next Scene" variable.
Otherwise, the value of the previous interval will be used, which might lead to undesired effects.
Without the use of a variable one would have to repeatedly add condition checks to make sure a scene switch did not already happen to avoid rapidly switching between in the same interval.
This example shows how to extract the text displayed by a text source into a variable named "Text Source Text".
The condition "Source" is used to assign the settings to the Text Source Text variable initially using the "Set to condition value" variable action. The value of the condition itself does not matter as it is combined with "Or" and "Plugin is running" which is always true.
Next two "Set to substring of current value" variable actions are used to extract the "text" value of the text source's settings.
You can set up a helper macro like this to populate variables with the current date and time:
You can import this example using this code:
AAAVXnic7VhbbyI3FP4rlp/abaAMm220vG2zRIu0aVDIpqqqqDIzhxmLwR7ZHhYa8d97jj03GnVLSx4HgTT+zsXn8tmD/cw3Ijba8snvz1yJDfAJX4BjH4UD9iiMFMscLL/ghSgtClcit0AjI/Ic8gbQ6joTKm017FoW0x3Ed2rhhHENnhpdFs0o0fEap3NSpRjCMzeQSuvANAqZsPel+rl0Tis+caYM2JyieYHiTK60n8WyE1gm0yzHn5utrrVKpJNa2Qe0aDRM7f8Bdhgnx/nqfI9wPydKSvVS9iVgKI2PJgkRVUrt/EwYYBT28MjihgL6lomPeMgPF6FrH2ISNTqLIpcOizfX1o99TwvqbfT+3eGier56d3V4qhxM0V1w8s+2V9H7xnZElnWPPmm3hr3tcAIrEEC0fmoK1YWcTtMc5n+H2xL4eWOd56KwkDS+JT7yBDmJ9cp1KmOMBdlTGkFWtzqRK0mseeZObuAP9GedEVI5r2eBJvAE24qcWt88jIYod/uCHg8UsgwmWzDWlyE6IJyI/d3qV4C1lzXRhiAwqgcZFk6p2A0s2SUbjSbR28koYuPR+JK3SuNvaslUaQO09NrEPRT8B54bKEC066ksyPeduq/goFRX5n+m3Mn4OoN4XbstBHEEVfgQP+z4y4kcIv7XNm6rXQUTBkUPSe2+lvwS9qHfQBjeouMKnilMRCbM4/kSmIUc/LSojG1/DGlyHKly89hJutO46CeiRboB5WbJjk8GEY7L5cIZ3IqqHWvUheSf4BFkP+zmbR3e8Aq7FS7OvC/UWkmVoCEq0EJmTjNCvGqRixiOZRXIvkqX1e5wVa9kSm0LRepuvQ7zrmumi6rgI78ruGy6KwzY0En+HYvYD2zM3rC37Hv2IyOW4dq7Lq3Tm7nRm6JlklRF6WqMf0AXqWKeMxRj3YVJ8DDzyhR1pvOks2HLFwI+GGCVwTCH6Q4Gvu1babSi4j8et/zLYno/v7+7mX2eUjNjULBoukurO9D2on5V0VboYFOgm1YcEdFCHzzh9sSjA21i5zLyVivfoZ6SPSXPouTGE+lVOPlR7HtG9ow8l5H4wn8dPn7SZf/W7gl5NiEz4tHrvLWlKv3Joedkz8nzXtuBSa/CyoU/lPas7Fl5LivD9QayEs/f0Nzo0Bn8iaA6s6M7vupsbcW2Ug93GbASZe4ahhHP1fHR53SL8Mf0dP3qj8N/CKne1083aRbd6SYPYN0JBk+dCxQeDceXwzE//AVvTSre
- Show webcam only when speaking
- Twitch Category Changer
- Show text source with latest Twitch follower
- Detect elements on screen and hide them automatically
- Motion detection
- Start other programs when starting OBS
- Crossfading audio during scene changes
- Switch scenes randomly
- Re-shuffle VLC source
- Automatically switch scene if a game capture's target window no longer exists
- Audio based scene switching in podcast setting
- Switching scenes based on portrait or landscape mode resolution of a window capture source
- Set up a hotkey to start and stop recording with a fade from and to black
- Automatically cycle through a list of scenes
- Toggle visibility of scene items on a timer
- Advance through a list of scenes by hotkey
- Performing actions only when transitioning from A to B
- Media playlist with commercial interruptions
- Split recording of stream into chunks
- Switching scenes for Aitum Vertical plugin
- Using MIDI devices
- Change capture window of Window Capture source
- Show URLs in clipboard in browser source
- General tab overview
- Starting and stopping the plugin
- Macros explained
- Creating a macro
- Pausing macros
- Macro duration modifiers
- Exporting and importing individual macros
- Audio condition
- Cursor condition
- Date condition
- Hotkey condition
- Media condition
- Process condition
- Scene item transform condition
- Slide Show condition
- Video condition
- Audio action
- Http action
- Hotkey action
- Random action
- Scene item visibility
- Sequence action
- Action Queue example
- Variables
- Websockets
- Scripting
- Scene groups
- Troubleshooting
- Saving and loading settings