Resource icon

Advanced Scene Switcher 1.26.4

Macro tab UI changes:
  • Add the ability to reorder, add and remove macro conditions and actions in place.
    These new controls will appear when hovering over a macro condition or action.
  • Persist collapse / expanded state of conditions and actions.
  • Add option to expand or collapse all macro actions or conditions.
    Right click inside the conditions or actions area to access these controls.
  • Prevent accidental edits of actions and conditions when scrolling by disabling scroll wheel interactions for widgets which have not explicitly gained focus by clicking on them.
Cursor macro condition changes:
  • Extend the mouse cursor macro condition to support detecting if the cursor was moved.
  • Add the option to show a frame highlighting the current screen region selected for a cursor macro condition.
  • Show current cursor position.
  • Fix crash on Wayland based Linux systems.
    Note that functionality relying on information provided X window manager (e.g. current foreground window) might not be functional on these systems.
Important note: The minimum supported version of OBS for this update is OBS 27!

The main focus of this update was to extend the capabilities of the macro tab once again.
  • Add macro condition and action "hotkey"
    The action will allow you to simulate key presses. (Windows and Linux only)
    The condition will allow you to trigger arbitrary macros with via hotkeys in OBS.
  • Add macro condition "Macro"
    The macro condition "Macro" contains the condition type previously named "Count" and also adds the option to check the condition state of other macros.
    This allows nesting of macro conditions in other macros.
    For example the following can now be configured using this new option:
    "If (scene 1 or scene 2 or scene 3 is active) for at least x amount of time"
  • Add macro filter condition and extend the filter action to allow modifying filter settings.
  • Add macro condition "timer" (previously known as "interval")
  • Add macro action and condition "scene item order"
  • Add macro action "scene transform"
  • Add macro condition "replay buffer"
  • Add support for arguments for macro action "run"
  • Add macro action "file", which will allow you to write or append to files
  • Add macro condition "date"
  • Add macro action and condition for virtual camera
  • Add option to only trigger window condition if the foreground window changed (Thanks jan-leila!)
  • Expand macro action plugin-state to support changing no-match behaviour
  • Add option to select "current scene" for some macro actions and conditions to reduce the need for multiple macros for each scene
  • Display more information about macros in collapsed state
Other changes:
  • Abort macro actions if a wait action was aborted by manual scene change
  • Place extended sequence widget in a scroll area
  • Allow matching empty files with the macro file condition and file tab
  • Format JSON strings whenever they are shown to the user to make editing them much easier
  • Set timeouts in curl calls to avoid blocking the whole plugin
  • Add a scene trigger to control virtual camera
  • Check for invalid settings on the transition tab which would result in the configured transitions to be ignored. (Thanks AuracleTech!)
  • Do not only check for libcurl in hardcoded paths (Should only affect Linux / MacOS)
Special thanks to ASchneider for his great support in testing and spotting bugs!
The main focus of this update was to extend the capabilities of the macro tab.
  • Macro actions:
    • Added macro action to control scene item visibility
    • Added macro action to control filters
    • Added macro action to control media sources
    • Added macro action to control source settings and en-/disable sources globally
    • Added macro action to stop the plugin
  • Macro conditions:
    • Added generic time constraint option to most macro conditions
    • Added macro condition which lets you trigger actions based on the settings or visibility or activity of sources
    • Added macro condition which lets trigger specified actions at a given interval
    • Added macro condition which lets you trigger actions based on how often other macros were run
  • Pause macros:
    • Added the option to un-/pause individual macros via the plugin's UI
    • Added the option to un-/pause individual macros via hotkeys
    • Added the option to un-/pause individual macros via other macros
      Pause1 Pause2
  • Added new network tab options:
    • Added option to synchronize preview scene
    • Added option to not send scene change messages
  • Added Russian locale (Thanks to Alex-1968!)
Other changes:
  • Reduced logging in non-verbose mode
  • The macro condition and action areas on the macro tab can now be resized
  • Fix rapid scene switches by random tab
  • Fix potential crash in audio macro action
  • Fix fullscreen and implement maximized checks for MacOS
Added the Macro tab

Macros will allow you to perform a string of actions based on a combination of conditions.
For example this will allow you to only used audio based scene switching if a certain window is currently in focus.
But the actions are also not limited to just scene switching so you could for example mute your microphone while a media source is playing.​
The macro actions currently supported are:​
  • wait
  • switch scene
  • audio un-/mute / set volume
  • streaming start / stop
  • recording start / stop / un-/pause
  • replay buffer start / stop / save
  • run a program
Macro conditions that are currently supported are:​
  • window
  • screen region
  • audio
  • file
  • media
  • video
  • stream
  • recording
  • scene
  • process
  • idle
I plan on mostly focusing development on this new functionality and will be slowly fading out other tabs which do the same thing but worse. (For example media / video / audio tab)
If you should disagree with this approach please let me know.

Other changes and fixes:
  • Add option "has changed" to video tab
  • Add option to set transition duration
  • Only send scene switch messages if scene was actually switched (Network tab)
  • Adjust default setting values of transition tab
  • Fix previous scene not working for some sequences
  • Fix transition overrides not restoring duration correctly
  • Reset tab order if config is invalid
  • Fix crash on Linux if no ewmh support is available
  • Re-enable network tab for MacOS
  • Add add option to use transition overrides for transition changes instead of changing the active transition.
    The option can be found on the transition tab.
  • Added option to save window state
    This new option can be found on the general tab and allows you to save the size and position of the plugin's settings window.

  • Fix Crash on macOS:
    The asio library ran into issues e.g. when the obs-websocket plugin (or others which rely on this library) was starting a server leading to a crash in the obs-websocket's listen() calls.
    As the use obs-websocket plugin is more widespread than the use of the advanced scene switcher's network features, the network tab functionality will be disabled for macOS for the time being.
    This is of course only a temporary measure to avoid crashes on macOS.

    The Windows and Linux versions of the pluign are not affected by this change.
Additions and changes:
  • Add "Network" tab.

    The network tab allows you to open a web-socket or connect to a web-socket to synchronize the active scene between two or more instances of OBS.
    The functionality is mostly based on
    An OBS instance running a server will send its currently active scene to all connected clients on scene change.
    By default all scene switches will trigger a message to be sent to all clients, but you also have the option to limit sending these messages only when an automated scene change is triggered by the advanced scene switcher.

  • Add option to check volume of 'inactive' audio sources.
  • Add option to configure default transition delay.
  • Enable use of Scene Groups for Random tab.
  • Fix audio tab not supporting mono audio output. (Thanks nospam2k for your help!)
  • Fix window based scene switching always testing for focus.
  • Added video tab.

    This new tab will allow you to switch scenes based on the current video output of selected sources.
    You have to option to either trigger a scene change if the output matches a target images, does not match the target image or has not changed for a specified duration.
    The "Get screenshot for selected entry" will create a screenshot of whatever video source is currently chosen for the selected entry and set it as the target entry.

    If you want to perform more complex image comparisons please have a look at the following plug-in:

  • Add German locale for extended sequences.

  • Update base sequence entry if values of base sequence entry were changed in the extend edit window.
Additions / Changes:
  • Add option to extend scene sequences.
Extending a scene sequence allows for more complex switching setups, but should also simplify some setups.​
So for example sequences like "A -> B -> A -> C", which previously were only possible by creating a copy of A, can now be specified in a single entry.​
To extend a sequence either select the sequence you want to modify and click the extend sequence button or simply double click the entry.​
  • Add option to select 'current transition' as an option for most switching methods.
This will use whichever transition is currently active.​
The rules specified on the transition tab still take priority of this stetting.​
  • Add a scene trigger to unmute an audio source.
  • Add a scene trigger for starting and stopping the scene switcher.
  • Allow specifying transition when reading scenes from file.
The first line in the file specifies the scene the second line, if present, the transition.​
  • Default transitions will now only be set after about 50ms after a scene change. This should prevent the transition change interrupting an ongoing scene change.

  • Fix name conflict with Time and Scene Trigger tab, which would make the Time tab unusable. (Only the Windows version was affected - The 1.9 release was updated to contain this fix)
  • Fix scene switching via reading the scene name from file ignoring the pause option for for file based scene switching.
  • Update the UI's "status" field on the general tab even if the status of the plugin changed externally (For example via hotkey).
Major Additions:
  • Add scene trigger tab
    This tab allows you to trigger actions on scene change, like stopping streaming or recording.
    Feel free to make suggestions for additions.

    Please note that the options to automatically start or stop streaming or recording on specific scenes were removed from the general tab.
    Corresponding entries will be automatically created on this new tab!

  • Add scene group tab
    Scene Groups can be selected as a target just like a regular scene.

    As the name suggests a scene group is a collection of multiple scenes.
    The scene group will advance through the list of its assigned scenes depending on the configured settings.

    You can configure the scene group to advance to the next scene in the list:
    After a number of times the scene group is selected as a target.
    After a certain amount of time has passed.
    Or randomly.

    For example, a scene group containing the scenes ...
    Scene 1
    Scene 2
    Scene 3
    ... will activate "Scene 1" the first time it is selected as a target.
    The second time it will activate "Scene 2".
    The remaining times "Scene 3" will be activated.
Minor Additions and Changes:
  • Ask for backup of settings if a new version is detected
  • Add help messages if tab is empty
  • Add option to specify scenes to exclude from Region triggers (Implemented by kieve)
  • Add option to automatically activate the scene switcher on recording or streaming start
  • Fix crash on settings import
  • Fix regex matching for window tab, which would not allow matching if full-screen or maximized was selected as a condition

As usual I hope I didn't break anything.
In case I did please let me know! :)
  • Like
Reactions: OpenFields