Advanced Scene Switcher

Advanced Scene Switcher 1.29.2

StefenTower

Member
I really like how I can use Advanced Scene Switcher to set up projections. But I'm wondering... how can I "unproject"? Like, when I stop recording, I want to retract a projection. Is that possible?
I have realized a partial workaround when using the system's default monitor for projection: Send an ESC key to Windows. This seems technically unsatisfying, though, as I wouldn't know how to apply this to a secondary monitor.
 

Warmuptill

Active Member
I really like how I can use Advanced Scene Switcher to set up projections. But I'm wondering... how can I "unproject"? Like, when I stop recording, I want to retract a projection. Is that possible?
A build with the option to close projector windows with a given name will be available here in a few minutes:
1742597091583.png

Note that you have to be logged into GitHub to be able to download it.
Let me know if you face any issues!
 

StefenTower

Member
A build with the option to close projector windows with a given name will be available here in a few minutes:
1742597091583.png

Note that you have to be logged into GitHub to be able to download it.
Let me know if you face any issues!
Wow, such quick service. This works! I assumed I needed to replace "Image" after "Fullscreen Projector.*" with my projected scene's name. Thank you so very much for this!
 

StefenTower

Member
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

  • AdvancedSceneSwitcherCrash.txt
    111 KB · Views: 17

Warmuptill

Active Member
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.
 

StefenTower

Member
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.
 

Warmuptill

Active Member
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 :))
 

StefenTower

Member
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.
 

yukon92

Member
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
 

StefenTower

Member
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).
 

bradfastcar

New Member
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
 

K4GM

New Member
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
 

yukon92

Member
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

  • zh-CN.rar
    36.9 KB · Views: 6

chrischris

New Member
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
 

chrischris

New Member
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.
 

K4GM

New Member
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!
 

Warmuptill

Active Member
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! :)
 

Warmuptill

Active Member
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!
 
Top