Advanced Scene Switcher

Advanced Scene Switcher 1.28.1

Lawrence_SoCal

Active Member
We’re a church that uses one computer to run PowerPoint type presentations and then I have another computer solely for streaming. My goal with this plugin was following a video played on the presentation computer, the streaming computer would switch scenes. We’re pulling in the presentation and video via NDI. Is it possible to do this or will this only work through one machine. Thanks in advance!
If you go back about 3 years on this thread, you'll see lots of conversation with me regarding automating our HoW service, PPT and pre-recorded videos. If you are a HoW worship with enough volunteers to always staff 2 computers (or more), good for you. Personally, I found that with adequate training, even non-technical folks can run OBS Studio, PPT, PTZ camera controls, and act as Digital Usher (ie monitor livestream comments) from a single dual-monitor PC. Fingers crossed, we will add simple mic mute/fader controls to OBS PC as well.
And then I made good use of AdvSS to automate intro section, thumbnail page, countdown and copyright scenes, etc, and then our ending Go in Peace, fade-to-black sequence
In the keep-it-simple thought process, I prefer to use pre-recorded videos via Media Source and Exceldro's Media Controls (to keep an eye on time remaining in video, at the time OBS v26), and then AdvSS to change scenes when video ended.
Using a 2 PC setup, I suspect you could set up and ending visual in PPT, and the 'video condition' function (CPU intensive) could look for that marker and use that to trigger a scene change. Though that seems like way-too-error-prone for my tastes (and the whole time-delay from sending some visible (ex black screen, or ?? or could be largely non-visible) indicator and then detect that 'video indicator signal' and then trigger scene change. I'd be way more inclined, if one insists on a 2 PC setup, to use a macro within PowerPoint towards/at the end of the presentation, and for that to initiate a web-socket call to OBS Studio. Then little to no chance of false positive scene change (or missed altogether).
Again, unless a REALLY good reason, I'd keep all content on the same OBS computer (properly resourced). If need be, I'd then set up a remote control on another device (ex handheld wireless remote 'clicker', stream deck type item, mobile device, etc??? lots of options) for a 2nd person to control a given application (like PPT) if need be.
As for computer resources, we have a business class PC with an i7-10700 and a GTX 1660 Super with a single 1080p60 NDI PTZ feed ... and that CPU & GPU often only run in the single digit % utilization rates (intentionally spec'ed to handle multiple cameras, DAW, and 4K should we upgrade to that within PCs lifecycle). The only 'tricky' thing I did was to run a 50ft fiber optic DisplayPort cable from the sound mixer closet and OBS PC to the choir/organ loft, and then used DisplayPort MST (daisy-chain) to drive both monitors from a single source cable (oh, and same length active USB cable for keyboard/mouse). I mention that only in terms of there being options outside standard 6ft cables if space constraints on device vs operator positions
 

AaronD

Active Member
A build with the option to do this will be available here in a few minutes:

View attachment 93651

It also gives the user a 10 second grace period to cancel the OBS shut down.
Let me know if this works for you!
Just got around to trying it. Looks like everything worked except uploading to GitHub:
1683225429188.png
 

Warmuptill

Active Member
Just got around to trying it. Looks like everything worked except uploading to GitHub:
View attachment 93801
Ah sorry about that - the link I posted earlier was not quite correct.
The build artifacts are only available on the "summary" screen on GitHub.
 

AaronD

Active Member
Ah sorry about that - the link I posted earlier was not quite correct.
The build artifacts are only available on the "summary" screen on GitHub.
That's better! But it doesn't seem to work for me.

It took a long time to find. Your screenshot only shows "Plugin state", whereas mine is here:
1683228204678.png

That's fine I guess, as long as it's in there *somewhere*.

But then it doesn't actually close. The popup confirmation works:
1683228316798.png

But it doesn't actually close unless I click Yes *within* the 10 seconds. Clicking Yes *after* the timeout is the same as No.

I really had in mind that it would be unattended by the time this happens. The opportunity to cancel is a good idea, but more important is to actually close with no one there.

Would this be possible?:
  • Clicking Yes closes immediately
  • No response closes after 10 sec
  • Clicking No keeps it open
Thanks!
 

Warmuptill

Active Member
Would this be possible?:
  • Clicking Yes closes immediately
  • No response closes after 10 sec
  • Clicking No keeps it open
Thanks!
That is how it was intended to work and how it does work in my development environment.
I can however confirm that this does not work on the official OBS releases for some reason.

I will try to investigate - thanks a lot for letting me know!

(Btw. I don't know why your locale files seem to be broken - I could not reproduce that problem with the release above)

Update:
It seems to work reliably if the dialog displaying the message is not modal / blocking input to the OBS window.
I have no idea why this works in the development environment however.

But please confirm if this also works for you - a build should be available here in a few minutes:
 
Last edited:

AaronD

Active Member
That is how it was intended to work and how it does work in my development environment.
I can however confirm that this does not work on the official OBS releases for some reason.

I will try to investigate - thanks a lot for letting me know!

(Btw. I don't know why your locale files seem to be broken - I could not reproduce that problem with the release above)

Update:
It seems to work reliably if the dialog displaying the message is not modal / blocking input to the OBS window.
I have no idea why this works in the development environment however.

But please confirm if this also works for you - a build should be available here in a few minutes:
It seems to work now...but I got a TON of crash messages for a bunch of different graphics-related services. (KDE Plasma) The OBS window itself did not close except for when it was supposed to, so that logic works, but it's still included as one of the things that crashed.

Repeating the test, without rebooting first, didn't have any crash messages at all.

The locale has not changed.



Edit: Rebooted, and I still can't reproduce the crashes.
 
Last edited:
Is "PREVIOUS SCENE" always crashing OBS for anyone else? I stopped using Bar Raiders' app entirely because of this - it was the only thing they had that no one else did - till I discovered Advanced, but now Advanced' "Previous" scene always crashes it - always.... Not sure if this is from a new update or if OBS is just fighting this hugely obvious option that should be built into their software anyway.... I am deleting all of my Previous Scene commands as of now....
 
Also - for the record - I have a 4090 i-13 128gb DDR5 computer, new, with fresh OBS, etc.... My older 3070 had all sorts of issues with plugins - but I've only added more "Trusted" ones from people like Exeldro, Warm, etc
 

AaronD

Active Member
Is "PREVIOUS SCENE" always crashing OBS for anyone else?
Works for me:
1683376339488.png

This is for a "presentation style" remote meeting. The Previous Scene is assumed to always be a camera. If not, this needs to be paused and something else set up beforehand. For its intended purpose, it still works perfectly, across several updates.
1683376376794.png
 

Warmuptill

Active Member
Is "PREVIOUS SCENE" always crashing OBS for anyone else? I stopped using Bar Raiders' app entirely because of this - it was the only thing they had that no one else did - till I discovered Advanced, but now Advanced' "Previous" scene always crashes it - always.... Not sure if this is from a new update or if OBS is just fighting this hugely obvious option that should be built into their software anyway.... I am deleting all of my Previous Scene commands as of now....
Can you please share a crash log?
That could indicate where the problem is.
 

JaysJams

New Member
ASS 1.21.1 is simply too complicated. How do I get it back to an earlier version? I just want "A" to "B" after xx seconds. TIA!
 

Warmuptill

Active Member
ASS 1.21.1 is simply too complicated. How do I get it back to an earlier version? I just want "A" to "B" after xx seconds. TIA!
Just uncheck this box on the General tab.
200110831-02c6dce9-4f20-4c91-be41-e8d9fdebcb55.PNG


Alternatively have a look at these examples:

Let me know if you have questions!
 

CastleWaco

New Member
I have a pair of push-buttons and a makey-makey board for a game I’m working on. Could I use Advanced Scene Switcher for a lockout first-button-pushed scenario? I’m hoping to find something that resembles a hotkey, but works only inside one scene instead of globally.
 

AaronD

Active Member
I have a pair of push-buttons and a makey-makey board for a game I’m working on. Could I use Advanced Scene Switcher for a lockout first-button-pushed scenario? I’m hoping to find something that resembles a hotkey, but works only inside one scene instead of globally.
You could do something like this:
1683641824788.png

You can expand that to as many buttons as you like, plus one more macro that unpauses all of them.

The caveat though, is this:
1683641920355.png

If the buttons are closer than that, then they take priority in the order that the macros are run.



A more effective way to do this might be to use a physical circuit to detect the first button press - lots of those available through a google search, and they're also used for pinewood derby tracks - and then take your time, comparatively speaking, to translate that into a keypress on a custom keyboard.
(I just took a membrane keyboard apart to try and fix a problem with it. It looks incredibly easy to inject a keystroke into: it has two conductive layers separated by an insulating layer, that has a hole for each key. Connect the conductive layers through that hole, and that's a keypress.)

Or an Arduino variant with native USB might do all of that. (not all do: some have a USB to serial converter on-board, and the CPU chip itself only has serial; that will not work for this) Set it up to be a keyboard on USB, and then your sketch runs a tight loop watching for any button. As soon as it sees one, stop scanning the buttons and decode that one to send as a keystroke.

If you have up to 8 buttons on an 8-bit variant, this becomes easy: accept some weird-looking wiring if necessary to put them all on the same 8-bit port, which can be read all at once. Wait for that port to not be 0 (or 0xFF (255), depending on how you've wired it), then decode the one different bit. If multiple, use a priority scheme, which will probably come naturally from the way you write the sketch anyway, or random to make it more "fair" but takes some extra work on the programming side. Likewise for up to 16 buttons on a 16-bit core, or up to 32 on 32-bit.

Either way, the "only on a specific scene" part is still handled in Adv. SS as above.
 

TazChris94

New Member
I am having issues with the Media Source option. The media source I have is just a 5 minute countdown timer. When it ends, I would like for it to switch to a default scene. But the issue is that it will switch to the default scene at any time, Since I have really looked into it, it is been after about 5-20 seconds. Below is a screen shot of the settings and macro. It is the only macro I have setup currently. I also tried the verbose logging, but cannot find the logs. Any thoughts on why this is?

1683657688560.png
 

AaronD

Active Member
I am having issues with the Media Source option. The media source I have is just a 5 minute countdown timer. When it ends, I would like for it to switch to a default scene. But the issue is that it will switch to the default scene at any time, Since I have really looked into it, it is been after about 5-20 seconds. Below is a screen shot of the settings and macro. It is the only macro I have setup currently. I also tried the verbose logging, but cannot find the logs. Any thoughts on why this is?

View attachment 93924
I'd do this:
1683673662748.png

Notable differences are:
  • Only on change
    • I use this for everything! It ensures that the macro only runs once when the condition becomes true, instead of continuously while it's true.
  • Any source on Current Scene
    • This works regardless of what you add or remove later, so you don't have to keep coming in here and changing the macros. If you have multiple videos and you only want it to do this for one of them, then you would still specify the exact one, instead of Any on Current.
  • Playing and less than X time remaining
    • This gives it X time to figure out that the condition is true (check your scan interval on the General tab), but it's usually pretty quick about it.
    • Ended has always been somewhat vague to me. Does it have to have been playing first? Or is it *always* Ended, except for when it's playing, even if it hasn't played at all yet? Depending on the answer to that, is the Ended signal short enough to be missed sometimes? Playing and almost done, doesn't have that ambiguity.
  • Transition over the same X time
    • This gives a nice professional look, as the video is practically over anyway, and the last X time of it is still playing during the transition. That gives the impression that it could have gone on longer, but you made a production decision to end it there. In other words, you appear proactive instead of reactive.
 

videored

New Member
Is there a way to set a variable to a fixed value based on what's written inside a .txt file? I keep track of certain stuff in a single line in a .txt and it would help me a lot (Considering that I've seen this can do the opposite already, modify a .txt file).
 
Top