Advanced Scene Switcher

Advanced Scene Switcher 1.28.1

Hemux

New Member
Hi,
I just created an account here not knowing if this is the right thing to do, but after discovering and learning OBS for the past few days, I also discovered and started learning Advanced Scene Switcher... and I must say this is one of the most amazing tools I have ever used! So rich, limitless! Is Warmuptill still around here? Or anybody knowledgeable enough, because I have an issue:

I have around 8 scenes, and a couple of Stingers loaded in OBS. One stinger is selected as the transition by default.
However, I would like to automate that when switching from scene B to C for example, the second stinger gets used instead. Overriding seems to change the default stinger, so for any situation, but I would like the default stinger to be the effective transition for scene C if I come from any other scene (A, or D, but NOT B). I searched for an hour in the macros and I just can't make it work... The "old" tabs like "Transition" did not make it more successful, and the message was just telling me to use the Macros instead.

Help anybody? Thank you!
 

Warmuptill

Active Member
Hi,
I just created an account here not knowing if this is the right thing to do, but after discovering and learning OBS for the past few days, I also discovered and started learning Advanced Scene Switcher... and I must say this is one of the most amazing tools I have ever used! So rich, limitless! Is Warmuptill still around here? Or anybody knowledgeable enough, because I have an issue:

I have around 8 scenes, and a couple of Stingers loaded in OBS. One stinger is selected as the transition by default.
However, I would like to automate that when switching from scene B to C for example, the second stinger gets used instead. Overriding seems to change the default stinger, so for any situation, but I would like the default stinger to be the effective transition for scene C if I come from any other scene (A, or D, but NOT B). I searched for an hour in the macros and I just can't make it work... The "old" tabs like "Transition" did not make it more successful, and the message was just telling me to use the Macros instead.

Help anybody? Thank you!
There are a few ways you might be able to solve this, assuming you are talking about automated scene switches:
  • You can adjust the behavior of the plugin on the General tab to only change the transition overrides and not the active transition type:
    1708777927500.png

    In this case a scene switch action will not change the active transition type at all but still use the transition type you specified.
  • You can wait for you scene switch action to complete and then set the transition type back to the first stinger.
    1708778365152.png

  • You could set up a marco like this to automatically set the active transition type to "Stringer" once a scene change completed.
    1708778602975.png
You might also want to give the "transition table" plugin a try:
This might just to exactly what you are looking for and is very easy to set up.

I hope that helps! :)
 

Warmuptill

Active Member
Hi everyone,
I released a new beta version of the plugin here on GitHub:

I would very much appreciate it, if some of you could give this version a try and report back, if you should encounter any issues!
Please make sure to back up your settings before trying this new version just in case.


Additions:​

  • Added action queues.
    As the name implies you can now create queues of actions, which are executed sequentially but in parallel to the reset of the macro system.
    You can append to, start, stop, or clear action queues using the "Queue" action.
    You can check if a action queue is started, stopped, and its size using the "Queue" condition.
    The first action added to the queue will be the first one to be processed.
    You can create as many queues as you like.
    They can be useful if you have events, which can happen in quick succession, but result in relatively long chains of actions, which themselves should not necessarily run in parallel to each other.
  • Added the "Variable" tab:
    This should make it significantly easier to work with larger amounts of variables.
    The tab will only be visible if at least one variable exists.
  • Added the current pattern matching value to "Show match" dialog. (Oekn5w)
  • Added the option to wait for spawned process to exit.
  • Added the option to set the value of a variable to scene item name at a given index of a scene.
  • Added the option to check the values of single settings in the "Source" condition.
  • Added the option to check the value of single settings value in the "Filter" condition.
  • Added the option to use decibel values as input for audio action and condition, instead of percent.
  • Added the option to set the index of a given sequence action.
  • Added the option to perform media actions on sources based on a scene item selection instead of just a source selection.
    This might simplify some setups.
  • Improved the "Display" condition by adding the option to check the width and height of connected displays.

Other changes:​

  • Default settings values were adjusted:
    • The plugin will now be active by default on new scene collections.
    • The macro tab will be opened as the default tab.
    • Recently executed macros, recently executed macro actions, and conditions, which evaluate to true, will be highlighted by default.
      This will not affect settings of already existing scene collections.
  • Added tooltips to macro tab buttons, adjusted the TAB order of some widgets, and some other minor UI tweaks.
    This should at least slightly improve the usability of the plugin in combination with screen readers.
  • A warning will now be displayed if settings are exported to a file, if potentially sensitive data might be contained in that file.
    (For example websocket passwords or Twitch tokens)
  • Added new macro properties for the following conditions:
    • Websocket
    • Streaming
    • Window (window class - windows only)
  • Audio fade controls are now disabled if the fading option is not checked.
    This was done to avoid confusion on some OBS themes where checkboxes can be very difficult to see.
  • Update internal hotkey names when the description of hotekys in changed in "Hotkey" conditions.
  • The rename dialog of items (e.g. Variables, Websocket connections, etc.) will now be prefilled with the current name.
  • Disabled dragging of macro segments when interacting with scrollbars.
  • When storing numbers in variables truncate unnecessary decimal places.
    1.23 would have been previously stored as 1.2300000... and is now stored as 1.23.
  • The MIDI condition and action type will now save the name of the selected device instead of the port number.
    This should allow the device selection being restored correctly even if the devices are connected to different ports.

Fixes:​

  • Fixed the replay buffer save event only triggering in a single condition.
  • Fix text becoming invisible in certain text boxes in special circumstances.
  • Fixed macro segment widgets being squashed below a sensible minimum size.
  • Fixed pattern matching issues by excluding non-finite results. (Oekn5w)
  • Fixed media condition "any" / "all" selection ignoring some source types.
  • Fixed scene item name conflict selection not being visible in some circumstances.
  • Fixed flickering of macro list controls on widget creation.
  • Fixed else action delete button only working with active selection.
  • Fixed dialogs being opened at OBS instead of plugin window location.
  • Fixed setting of show-/hide-transitions resulting in graphical glitches during the transition.
  • Fixed Twitch chat connection not being re-established when when the Twitch account or channel was change.
  • Fixed else-actions being executed for paused macros.
  • Fixed open variable input dialogs causing a crash on shutdown.
  • Fixed hotkey condition evaluating to true if the hotkey was pressed while the macro was paused.
  • Fixed manually started macros not being stopped when stopping the plugin.
  • Fixed Twitch token warning not being displayed when the token is invalid.
  • Fixed possible crash on shutdown.
  • Fixed crash when switching settings in the "OBS stats" condition.
  • Fixed macro property references not being resolved on macro copy and import.
  • Fixed websocket messages / Twitch events / MIDI messages arriving in very quick succession resulting in some of them being skipped.
  • Fixed Twitch action not being able to send a chat message in some circumstances.
 

obs_monkey

New Member
Hello, I'm testing out this plugin and would like to know what's the best way to set up a macro so that when a Window closes (e.g. Zoom.exe or Webex.exe), it'll make OBS stop recording? The conditions for Window only have "title matches, fullscreen, maximized, focused, focus window changed, and contains text". I was hoping for something to detect the existence of such a window. I tried "Window is focused", but that means I can't click on anything else while a meeting is in session.
 

AaronD

Active Member
Hello, I'm testing out this plugin and would like to know what's the best way to set up a macro so that when a Window closes (e.g. Zoom.exe or Webex.exe), it'll make OBS stop recording? The conditions for Window only have "title matches, fullscreen, maximized, focused, focus window changed, and contains text". I was hoping for something to detect the existence of such a window. I tried "Window is focused", but that means I can't click on anything else while a meeting is in session.

I think you want the Process condition, not Window, and "If not" instead of "If". See if this works:
1709234223597.png

You probably want to uncheck the "focused" box. It does the same here as it does in the Window condition.

That said though, the simple existence of a window could be handy to add, using the list of windows instead of processes, since most of those processes don't even have windows.
 

Warmuptill

Active Member
That said though, the simple existence of a window could be handy to add, using the list of windows instead of processes, since most of those processes don't even have windows.
I can't check right now, but I think that it is already possible to check for the existence of given window title using the "Window" condition by simply unchecking all the additional optional checks. (focus, fullscreen, ...)
If not I will look into it.
 

swiftor

New Member
Hi, my goal is to stop, wait a few secs, and then start the stream only when bitrate falls for a few seconds. Is there a way I can model this so that I can have it running at all times - even when not streaming? Currently when I run the attached, it starts streaming immediately.

It's not the biggest issue to start this macro after I go live, but ideally I'd love to just set it and forget it. Thanks!
 

Attachments

  • Screen Shot 03-01-24 at 11.38 AM.PNG
    Screen Shot 03-01-24 at 11.38 AM.PNG
    87.8 KB · Views: 34

Warmuptill

Active Member
Hi, my goal is to stop, wait a few secs, and then start the stream only when bitrate falls for a few seconds. Is there a way I can model this so that I can have it running at all times - even when not streaming? Currently when I run the attached, it starts streaming immediately.

It's not the biggest issue to start this macro after I go live, but ideally I'd love to just set it and forget it. Thanks!
I would suggest a setup similar to the following:
  • Add an additional macro which pauses your "Yt auto-restart" macro on OBS startup.
    1709379130555.png
  • Add a macro which un-pauses the "Yt auto-restart" macro as soon as you start streaming.
    1709379218628.png
Note that it is important, that the macro, which pauses the "Yt auto-restart" macro, is above the "Yt auto-restart" in the macro list.
The macros are executed from the top to the bottom of the list.
So, having the macro, which pauses "Yt auto-restart" on OBS startup, above "Yt auto-restart" ensures that it is executed before "Yt auto-restart" on OBS startup.

If you want to import the example macros you can use this code:
Code:
AAAKknic7VVNb9swDP0rhs5JkGTrsOa2BS1aYMWCpvvohiBgbNoRqkiGJGftgvz3UZKtOu3Qzadcegggk3zkE8mn7NgGUq0Mm/zcMQkbZBP2RZZQGUygsirRaCxom0BuUSc518YmxmqETeIdrMd8NJvkIAy6Lw1CoIgGJadrkAVFWF3Rt7nj5dk9pp/l3Cdo4gqtqjJ+ZSq9m6O1XBZEbsc0FtwQhRiwBnNdyY+VtUo2qck2c2SeWamSrcwnWLV4rXmxFvSzl/lUyYxbrqS5IUSM0E3+G7wnnozqNdc9sPua5Knkc1/dTPKmB0UCozrosX4CGhNHe3CAOHeEXoJ4xgO274V5fkidK8bMS8EtNW+mjP/20y7d1Een430vnkf7RZ3gjNKFJC9gT95E7NAhmxldKHuHD6a1EtSBYCT0IjaqbbKqKATOnpofW+DrpkoIKA1mMTenIwsLSatCTROq4CkRohWqNDjolcp4zt3q7JjlG1xSUkIAl9bHGXRV/JZtQbj5x8NwQH77ULrj3vHmAbJFbXwvRnsykxAsRYx7jHifa1LRpaQ2UI52qsdErleQ/vNWfhB0I5SwEs4Z1jmYJ+zWeoX2a4WyJuelzPC+VXjUvkEIcbyJA8YhOx4LN8z6CZjFB6BJnygZBE8afZX8q+SPLflSVAWXyyC9o6g+8nzqO766h39TN5m2oLmrdvB3f6VoAN+pgIFtDQiNxBwqYb+GOoy1ngcPue0EmaJ7EruVCZhudb7xzK7n/Dd2Qs3X6pe/VCfUNWS8Mp0gF+ien06QH0ptOgFyekBpG5fdmt2gurW72aj/AC1aImGjwfhkMOyv0MKof9ovxu+Hb9+N4ZTt/wDIxajV

Hope that helps! :)
 

swiftor

New Member
I would suggest a setup similar to the following:
Note that it is important, that the macro, which pauses the "Yt auto-restart" macro, is above the "Yt auto-restart" in the macro list.
The macros are executed from the top to the bottom of the list.
So, having the macro, which pauses "Yt auto-restart" on OBS startup, above "Yt auto-restart" ensures that it is executed before "Yt auto-restart" on OBS startup.

If you want to import the example macros you can use this code:
Code:
AAAKknic7VVNb9swDP0rhs5JkGTrsOa2BS1aYMWCpvvohiBgbNoRqkiGJGftgvz3UZKtOu3Qzadcegggk3zkE8mn7NgGUq0Mm/zcMQkbZBP2RZZQGUygsirRaCxom0BuUSc518YmxmqETeIdrMd8NJvkIAy6Lw1CoIgGJadrkAVFWF3Rt7nj5dk9pp/l3Cdo4gqtqjJ+ZSq9m6O1XBZEbsc0FtwQhRiwBnNdyY+VtUo2qck2c2SeWamSrcwnWLV4rXmxFvSzl/lUyYxbrqS5IUSM0E3+G7wnnozqNdc9sPua5Knkc1/dTPKmB0UCozrosX4CGhNHe3CAOHeEXoJ4xgO274V5fkidK8bMS8EtNW+mjP/20y7d1Een430vnkf7RZ3gjNKFJC9gT95E7NAhmxldKHuHD6a1EtSBYCT0IjaqbbKqKATOnpofW+DrpkoIKA1mMTenIwsLSatCTROq4CkRohWqNDjolcp4zt3q7JjlG1xSUkIAl9bHGXRV/JZtQbj5x8NwQH77ULrj3vHmAbJFbXwvRnsykxAsRYx7jHifa1LRpaQ2UI52qsdErleQ/vNWfhB0I5SwEs4Z1jmYJ+zWeoX2a4WyJuelzPC+VXjUvkEIcbyJA8YhOx4LN8z6CZjFB6BJnygZBE8afZX8q+SPLflSVAWXyyC9o6g+8nzqO766h39TN5m2oLmrdvB3f6VoAN+pgIFtDQiNxBwqYb+GOoy1ngcPue0EmaJ7EruVCZhudb7xzK7n/Dd2Qs3X6pe/VCfUNWS8Mp0gF+ien06QH0ptOgFyekBpG5fdmt2gurW72aj/AC1aImGjwfhkMOyv0MKof9ovxu+Hb9+N4ZTt/wDIxajV

Hope that helps! :)
Thank you! Guessing that's why the macro did not kick in when conditions seemed like they were met last time - by the way, is there a log somewhere showing when/if macros are executed? EDIT: NEVERMIND - missed the verbose logging option!
 
Last edited:

Warmuptill

Active Member
Thank you! Guessing that's why the macro did not kick in when conditions seemed like they were met last time - by the way, is there a log somewhere showing when/if macros are executed? EDIT: NEVERMIND - missed the verbose logging option!
I will add additional logging options later today.
  • A macro action which lets you print custom log messages.
    309469536-05df1852-7da5-4b31-8e9e-5c26c36f4816.png
  • A log mode which will print actions performed by the plugin, but is less verbose than the verbose log mode.
    309469542-ec943ef3-91f0-43a7-bf80-e836a747f4c7.png

 

swiftor

New Member
I will add additional logging options later today.
Awesome! Although when you have a moment, I believe I've imported and updated your suggestions - but the macro still keeps on starting my stream - on start up (since I have it set to start on OBS startup ofc), and shortly after stopping streaming, it'll keep starting up

I'm sure I'm missing something obvious - should I be adding an "AND above 1 kb/s" so stop streaming isn't treated as 0 kb/s?

Edit: added the AND condition for an Above condition - and it stopped restarting, but it doesn't seem I can trigger it to restart by forcing a bit rate in that range.
 

Attachments

  • Screen Shot 03-02-24 at 10.18 AM.PNG
    Screen Shot 03-02-24 at 10.18 AM.PNG
    52 KB · Views: 13
  • Screen Shot 03-02-24 at 10.19 AM.PNG
    Screen Shot 03-02-24 at 10.19 AM.PNG
    54.2 KB · Views: 11
  • Screen Shot 03-02-24 at 10.19 AM 001.PNG
    Screen Shot 03-02-24 at 10.19 AM 001.PNG
    71.5 KB · Views: 15
  • Screen Shot 03-02-24 at 10.20 AM.PNG
    Screen Shot 03-02-24 at 10.20 AM.PNG
    84.5 KB · Views: 14
Last edited:

swiftor

New Member
NEVERMIND, it does work with that change - I widened the bitrate window that would trigger it and that seemed to do it - thank you very much - hope that I'm golden now!

not sure why 5k bitrate didnt trigger it when set to below 6000.00kb/s - but it did when I set it to 10000.00kb/s which will do the job

thanks again!
 

Attachments

  • Screen Shot 03-02-24 at 10.46 AM.PNG
    Screen Shot 03-02-24 at 10.46 AM.PNG
    96.1 KB · Views: 20

Warmuptill

Active Member
none of the images of the changelog work :(
Thanks for pointing that out!
For some reason the image links to the GitHub release page no longer work.
As there seems to be a 10 item attachment limit for a single post I have only added 10 of the images.
 
Last edited:

youjiman

New Member
Hi. I updated the plugin version to 1.25.0 on my intel Mac, but I had an issue.

I'm using an audio trigger with settings output volume below 1% for a game audio, but it seems like it not working like used be.

Thanks
 

David_G

New Member
Hello All,

How do you run a nested macro but only as a nested macro? If I uncheck it in the Macro list then it is paused and won't run as a nested macro, the log says that it was paused.

If it is checked then it runs both nested and as a first level macro which negates that it should only be run if other other conditions are true.

cheers,

David
 

Warmuptill

Active Member
Hi. I updated the plugin version to 1.25.0 on my intel Mac, but I had an issue.

I'm using an audio trigger with settings output volume below 1% for a game audio, but it seems like it not working like used be.

Thanks
I am sorry about that!

I think I will need a bit more information to investigate what the issue might be.
Can you share a screenshot of the macro that is not working or export your settings to a file so I can try to reproduce the issue on my end?

Hello All,

How do you run a nested macro but only as a nested macro? If I uncheck it in the Macro list then it is paused and won't run as a nested macro, the log says that it was paused.

If it is checked then it runs both nested and as a first level macro which negates that it should only be run if other other conditions are true.

cheers,

David
If I understand correctly what you are trying to do I would recommend separate out the actions into a macro which does not have any conditions.
So something like this:
1709461247709.png

You would then use the "Macro" action to run the actions this helper macro in both the "First level macro" and the "Nested macro".
1709461292078.png

I hope this helped / the explanation was clear enough! :)
 
Top