Advanced Scene Switcher

Advanced Scene Switcher 1.37.2

I just ran into something else, and this happens also when I roll back Advanced Scene Switcher to 1.29.0.

Sometimes, when I switch to another scene collection, OBS crashes, and the crash log seems to point to this plugin (as far as I can tell).

Attached is the crash log for your review.
 

Attachments

I just ran into something else, and this happens also when I roll back Advanced Scene Switcher to 1.29.0.

Sometimes, when I switch to another scene collection, OBS crashes, and the crash log seems to point to this plugin (as far as I can tell).

Attached is the crash log for your review.
Are you sure that this log is related to a crash which you observed when changing scene collections?
To me this looks like it is a crash happening on shutdown.

Regardless, I am unfortunately not sure, if I can really resolve that particular issue shown in your crash log. :(
All I am doing on the advanced scene switcher side here is call obs_websocket_vendor_emit_event, which in turn then calls proc_handler_call, which is part of OBS.

I already have a hacky "safe guard" in place, which explicitly checks, if OBS is shutting down based on the OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN event being emitted, and, if that is the case, does not send out websocket events.
(I am explicitly using OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN here as that is emitted even before OBS_FRONTEND_EVENT_EXIT)

I will give reproducing it a try / look into it further when I find the time to.
 
Are you sure that this log is related to a crash which you observed when changing scene collections?
To me this looks like it is a crash happening on shutdown.
Changing the scene collection triggers the abrupt shutdown, which gives me this log. I don't know what technical chain of events is actually happening (I don't know OBS works under the hood) - it's just that the log appeared to be pointing to this plugin.
 
Changing the scene collection triggers the abrupt shutdown, which gives me this log. I don't know what technical chain of events is actually happening (I don't know OBS works under the hood) - it's just that the log appeared to be pointing to this plugin.
Hm ... very strange.
You don't happen to have configured the advanced scene switcher to shut down OBS automatically on the scene collection you have switched to, right? (I assume you would have told me, but asking just in case :))
 
You don't happen to have configured the advanced scene switcher to shut down OBS automatically on the scene collection you have switched to, right? (I assume you would have told me, but asking just in case :))
I don't have any advanced scene switcher setting that shuts down OBS (well, intentionally) or even refers to scene collections at this moment.
 
Hi Warmuptill, I would like to propose a functionality request for consideration.

"Get User Input" Feature Request (under Variables)

1> Make data entry box default selected.
This input box has the "OK" button defaulted selected. Before any input can be accepted, additional mouse click is required to activate the data entry section.

2> "ENTER" button on keyboard = OK to accept input and close the window.
When data is entered user needs to press OK. Enter puts a carriage return. This would speed up the entry and make this box a more expected behavior.

3> Allow TAB to bounce between OK/CANCEL? When in entry box, pressing tab adds 5 spaces (as it was originally intended) but in this situation its function might be better utilized.

3> "Fill with Placeholder" default cursor position.
A selection added to set the default cursor position be on the left or right of this placeholder.

If I had the placeholder set to .JPG and "Left Cursor Position", when the user pops this box, they could just type "Image21" and it would look like "Image21.JPG"

If I had the placeholder set to IMAGE_ and "RIGHT Cursor Position", when the user pops this box, they could just type "21" and it would look like "IMAGE_21"

1742922861431.png
 
I don't have any advanced scene switcher setting that shuts down OBS (well, intentionally) or even refers to scene collections at this moment.
My growing hunch is that Advanced Scene Switcher is being "blamed" in the log, but very likely unfairly (i.e. another plugin is the culprit).

I tested scene collection switching with all my Advanced Scene Switcher macros disabled, and then again with Advanced Scene Switcher (I wish I could just use the acronym, but that wouldn't be nice, LOL) being inactivated altogether. Still getting the crash.

The dialog title of the error message is "Source Cleanup Error". The dialog text reads:
"There was a problem while changing scene collections and some sources could not be unloaded. This issue is typically caused by plugins that are not releasing resources properly. Please ensure that any plugins you are using are up to date.

OBS Studio will now exit to prevent any potential data corruption."

Unfortunately, I use a *lot* of plugins, so winnowing this down could take quite a long time. I can say that I believe they are all up-to-date (per the error message's plea).
 
It would be amazing if the MIDI control was expanded a bit, as this appears to be the only functional MIDI control plugin currently.

Note on / off for switching scenes, toggling show hide for media sources and media capture devices works perfectly!

However, when trying to use the MIDI faders and knobs to control floating values like volume controls and filter sliders, I cannot get Advanced Scene Switcher to register the entire control change range (0 to 127) to correlate to the filter values (0.0 to 1.0 for something like opacity or -180 to +180 for something like hue shift) without creating a bunch of individual "set to fixed value" macros to designate which control change value correlates to which floating point I want

Screenshot 2025-03-25 190123.png
 
I want to save Screenshot action to custom file path by creating new folder with date in the name formatting. How can I achieve this?
Now I have this custom file path (I got variables but macro don't create new folders):
H:/My files/ShareX/Autoshots/Screenshot ${Counter} (${Day}-${Month}).jpeg

Tried

H:/My files/ShareX/Autoshots/${Day}-${Month}/Screenshot ${Counter} (${Day}-${Month}).jpeg

But it doesn't work. Can anyone please help? :d
 
I'll throw out a solution. I'm sure there is more elegant stuff, but this is how I do it for instant replays saves currently.

I'm assuming you are using Windows
You could have the system create a BAT file that will generate the folders as you need. If the folder exists, it doesn't do anything.

So It creates a bat file "createpath.bat" in the location "c:\obs\"
and in that file is BAT command to create a directory with the month\day variables. mkdir c:\obs\$MONTH\$DAY

Then it runs that BAT file, which creates the folder.

Then it saves the file to that folder using $counter and $month-$day Ex " c:\obs\12\31\54 12-31.png"

1743029967236.png


1743030090869.png
 
Warmuptill It's been a while, wishing you a new year of staying happy and doing well.

The previous localized text had more machine translations, and I did a complete proofreading of the original localized files for each feature tested and translated.

Since the Twitch platform is not available properly in my area, there may still be a lot of machine translation and incorrectness in the Twitch section.

1,AdvSceneSwitcher.action.source.deinterlaceMode.disable is referenced 2 times, with two of the same dropdown options - Close
2, AdvSceneSwitcher.action.screenshot.mainOutput This part of the code seems to have the localized text reference at AdvSceneSwitcher.OBSVideoOutput, which is obviously not correct!
3、AdvSceneSwitcher.action.variable.type.trim After my test, this function seems to be useless, in my understanding is to delete 1 2 3 in the space or blank symbols, but the actual variable is still maintain the original state, maybe it is the problem of my operation?
4、AdvSceneSwitcher.settings.suffix.type.font=“ (Font)” in the localization file has two same localization text definitions, please remove it in the next version.
5, AdvSceneSwitcher.switchToken.request.fail.browser Whether the page is using ansi encoding or not, it converts to the corresponding gibberish after I use a UTF-8 text editor, so I have to keep it as is.
6, AdvSceneSwitcher.condition.temporaryVariable=“Macro property” I can't add the macro property parameter, you don't seem to have added the corresponding code? Or is there something wrong with what I'm doing?
7, AdvSceneSwitcher.action.pluginState.entry=“{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}” It seems that the last option is not applied to the localized text. I can't change three of the options.
*8, I have successfully gained access to twitch by means of VPN and local web proxy, but there are some problems that cause me to be unable to verify the handiness of this part, after I logged in to my account on the Twitch platform, and gained the Token through the plugin's add account, it shows that the acquisition has failed, which is obviously not right, I can access twitch and watch live streams normally, so I have a question, is this function normal with you? If it's normal how do I get this information through the software, and if it's not working properly, what's the best way to manually get it and add it to the plugin?

I will upload the latest Chinese localization file for 1.29.0, please update it before the next release!
 

Attachments

I have just updated to 1.29.0 and trying to use the "Shuffle" function as mentioned in this video https://www.youtube.com/watch?v=jV7e_FjmrM0 which is linked on the GitHub page. It doesn't appear to be doing this despite following every step. I'm going to rollback to an earlier version to see if it resolves the issue. I presume that no one else is having the issue or if you are, could someone enlighten me as to where I might be going wrong?

VLC Video Source in OBS > Directory
AdvSS > Macro > If VLC is showing > Source: Refresh > VLC
 
I have just updated to 1.29.0 and trying to use the "Shuffle" function as mentioned in this video https://www.youtube.com/watch?v=jV7e_FjmrM0 which is linked on the GitHub page. It doesn't appear to be doing this despite following every step. I'm going to rollback to an earlier version to see if it resolves the issue. I presume that no one else is having the issue or if you are, could someone enlighten me as to where I might be going wrong?

VLC Video Source in OBS > Directory
AdvSS > Macro > If VLC is showing > Source: Refresh > VLC
Silly me didn't press "Shuffle" on the source. Now it works.
 
I'll throw out a solution. I'm sure there is more elegant stuff, but this is how I do it for instant replays saves currently.

I'm assuming you are using Windows
You could have the system create a BAT file that will generate the folders as you need. If the folder exists, it doesn't do anything.

So It creates a bat file "createpath.bat" in the location "c:\obs\"
and in that file is BAT command to create a directory with the month\day variables. mkdir c:\obs\$MONTH\$DAY

Then it runs that BAT file, which creates the folder.

Then it saves the file to that folder using $counter and $month-$day Ex " c:\obs\12\31\54 12-31.png"

View attachment 112410

View attachment 112411
Thank you, it's working!
 
Hi Warmuptill, I would like to propose a functionality request for consideration.

"Get User Input" Feature Request (under Variables)

1> Make data entry box default selected.
This input box has the "OK" button defaulted selected. Before any input can be accepted, additional mouse click is required to activate the data entry section.

2> "ENTER" button on keyboard = OK to accept input and close the window.
When data is entered user needs to press OK. Enter puts a carriage return. This would speed up the entry and make this box a more expected behavior.

3> Allow TAB to bounce between OK/CANCEL? When in entry box, pressing tab adds 5 spaces (as it was originally intended) but in this situation its function might be better utilized.

3> "Fill with Placeholder" default cursor position.
A selection added to set the default cursor position be on the left or right of this placeholder.

If I had the placeholder set to .JPG and "Left Cursor Position", when the user pops this box, they could just type "Image21" and it would look like "Image21.JPG"

If I had the placeholder set to IMAGE_ and "RIGHT Cursor Position", when the user pops this box, they could just type "21" and it would look like "IMAGE_21"

View attachment 112386
Thanks for the suggestions!

I implemented point 1 and 3 (tab).
A build can be found here a few minutes:
Note that you have to be logged into GitHub to be able to download it.

I believe point 2 might not be necessary with point 3 (tab) being implemented as you can just press "tab" followed by "enter" to achieve the same effect.
Additionally, while for your specific use case it might not be necessary to enter values spanning multiple lines, it might brake other user's setups.
So, I am a bit hesitant here.

I will look into the cursor position stuff when I find the time to.



Warmuptill It's been a while, wishing you a new year of staying happy and doing well.

The previous localized text had more machine translations, and I did a complete proofreading of the original localized files for each feature tested and translated.

Since the Twitch platform is not available properly in my area, there may still be a lot of machine translation and incorrectness in the Twitch section.

1,AdvSceneSwitcher.action.source.deinterlaceMode.disable is referenced 2 times, with two of the same dropdown options - Close
2, AdvSceneSwitcher.action.screenshot.mainOutput This part of the code seems to have the localized text reference at AdvSceneSwitcher.OBSVideoOutput, which is obviously not correct!
3、AdvSceneSwitcher.action.variable.type.trim After my test, this function seems to be useless, in my understanding is to delete 1 2 3 in the space or blank symbols, but the actual variable is still maintain the original state, maybe it is the problem of my operation?
4、AdvSceneSwitcher.settings.suffix.type.font=“ (Font)” in the localization file has two same localization text definitions, please remove it in the next version.
5, AdvSceneSwitcher.switchToken.request.fail.browser Whether the page is using ansi encoding or not, it converts to the corresponding gibberish after I use a UTF-8 text editor, so I have to keep it as is.
6, AdvSceneSwitcher.condition.temporaryVariable=“Macro property” I can't add the macro property parameter, you don't seem to have added the corresponding code? Or is there something wrong with what I'm doing?
7, AdvSceneSwitcher.action.pluginState.entry=“{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}” It seems that the last option is not applied to the localized text. I can't change three of the options.
*8, I have successfully gained access to twitch by means of VPN and local web proxy, but there are some problems that cause me to be unable to verify the handiness of this part, after I logged in to my account on the Twitch platform, and gained the Token through the plugin's add account, it shows that the acquisition has failed, which is obviously not right, I can access twitch and watch live streams normally, so I have a question, is this function normal with you? If it's normal how do I get this information through the software, and if it's not working properly, what's the best way to manually get it and add it to the plugin?

I will upload the latest Chinese localization file for 1.29.0, please update it before the next release!
Thank you very much!
I will make sure to include the new locale file in the next release!
And of course I wish you a good new year also!

1,AdvSceneSwitcher.action.source.deinterlaceMode.disable is referenced 2 times, with two of the same dropdown options - Close
Thanks - I fixed the code to use the correct locale value for the discard entry.

2, AdvSceneSwitcher.action.screenshot.mainOutput This part of the code seems to have the localized text reference at AdvSceneSwitcher.OBSVideoOutput, which is obviously not correct!
It seems like "AdvSceneSwitcher.action.screenshot.mainOutput" is indeed unused.
I will remove it from all locale files.

3、AdvSceneSwitcher.action.variable.type.trim After my test, this function seems to be useless, in my understanding is to delete 1 2 3 in the space or blank symbols, but the actual variable is still maintain the original state, maybe it is the problem of my operation?
This function removed spaces or tabs from the beginning and end of the value of a variable.
I should probably make that more clear.

4、AdvSceneSwitcher.settings.suffix.type.font=“ (Font)” in the localization file has two same localization text definitions, please remove it in the next version.
Thanks, will do!

5, AdvSceneSwitcher.switchToken.request.fail.browser Whether the page is using ansi encoding or not, it converts to the corresponding gibberish after I use a UTF-8 text editor, so I have to keep it as is.
Thanks for letting me know.
I can't really think of a good solution at the moment.

6, AdvSceneSwitcher.condition.temporaryVariable=“Macro property” I can't add the macro property parameter, you don't seem to have added the corresponding code? Or is there something wrong with what I'm doing?
This is used for the name of a condition type.
1743099603945.png


7, AdvSceneSwitcher.action.pluginState.entry=“{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}” It seems that the last option is not applied to the localized text. I can't change three of the options.
Thanks!

*8, I have successfully gained access to twitch by means of VPN and local web proxy, but there are some problems that cause me to be unable to verify the handiness of this part, after I logged in to my account on the Twitch platform, and gained the Token through the plugin's add account, it shows that the acquisition has failed, which is obviously not right, I can access twitch and watch live streams normally, so I have a question, is this function normal with you? If it's normal how do I get this information through the software, and if it's not working properly, what's the best way to manually get it and add it to the plugin?
The plugin will try to listen for the token information on port 8080.
Maybe something is blocking that port and that is why the operation failed.
Unfortunately, it is difficult to say.
But if Twitch is not even available in your region it might not make sense to spend too much time on diagnosing the problem.



Thanks again for going through all that trouble and reporting the locale related issues you encountered!
I really do appreciate it a lot! :)
 
It would be amazing if the MIDI control was expanded a bit, as this appears to be the only functional MIDI control plugin currently.

Note on / off for switching scenes, toggling show hide for media sources and media capture devices works perfectly!

However, when trying to use the MIDI faders and knobs to control floating values like volume controls and filter sliders, I cannot get Advanced Scene Switcher to register the entire control change range (0 to 127) to correlate to the filter values (0.0 to 1.0 for something like opacity or -180 to +180 for something like hue shift) without creating a bunch of individual "set to fixed value" macros to designate which control change value correlates to which floating point I want

View attachment 112398
You can use the "Mathematical expression" of the "Variable" action type to do the scaling of the integer based input range to the output floating point range.

For example you could use a setup like this to scale the input value (0 to 127) to a range of -10 to +10.
1743101512242.png


This way you don't have to create 128 different macros to map each value :)
Let me know if you have any question!
 
You can use the "Mathematical expression" of the "Variable" action type to do the scaling of the integer based input range to the output floating point range.

For example you could use a setup like this to scale the input value (0 to 127) to a range of -10 to +10.
View attachment 112430

This way you don't have to create 128 different macros to map each value :)
Let me know if you have any question!
Can AdvSS collect the changing value of a Midi controller fader/dial in normal operation and set it to a variable? Could you show me how that is done? I can sort of make it work when I'm programming the midi and have the "Start listening" activated, but that value locks to its last known for me every time I click ok.
 
@Warmuptill Feature Request!

A dock with buttons that could be linked to macros so that I could run them adhoc.
There are times where I have macros triggered to Hotkeys because I want the done manually, not automatically.
Easily allow a button to connect to a macro that trigger system calls (Bat files, scripts, shell etc) from AdvSS.
There's a dock now with the feature to turn AdvSS on/off, a little bit of elaboration to link a macro to a button would be
quite helpful!

1743133476493.png
 
I had asked about a similar feature before, as using an HTML-like button that worked with a mouse click only, or even being dual-function (hotkey and mouse-click responsive) would be very nice for a GUI design.

I have figured out how to do this, though… using a combination of HTML and Javascript (then optional CSS styling is more icing on the cake)… then you just have to create a custom browser dock.

So, I wonder if an HTML/Javascript “template” could be utilized, and a form in AdvSS can make it possible to eliminate having to get into the “programming” side of things?
 
Back
Top