Advanced Scene Switcher

Advanced Scene Switcher 1.28.1

Warmuptill

Active Member
Нет ни у кого перевода этого плагина на русский язык?
No one has a translation of this plugin into Russian?

Или подробной инструкции по пользованию на русском языке?
Or detailed instructions for use in Russian?
Unfortunately I do not know any Russian translations for this plugin or any guides in Russian.
If you should stumble upon a Russian translation, which I could integrate into the plugin, feel free to let me know.
 

mazydizzle

New Member
Hi, is it possible for this plugin to switch only the video part of a stream and not the audio? So ideally, after som sort of trigger, say every 5 mins, the video switches to some other video file, but the audio remains unchanged. Once the 2nd video has finished playing, the video swiches back to the original source. And have this behaviour continuouly loop. Thanks
 

Warmuptill

Active Member
Hi, is it possible for this plugin to switch only the video part of a stream and not the audio? So ideally, after som sort of trigger, say every 5 mins, the video switches to some other video file, but the audio remains unchanged. Once the 2nd video has finished playing, the video swiches back to the original source. And have this behaviour continuouly loop. Thanks

This plugin switches scenes not sources.
Maybe this will work for you? :)
 

qhobbes

Active Member
I use the output timer to stop a stream after a variable amount of time. Is it possible to switch to Scene X when there are 10 seconds left in the stream (or something like that)?
 

lightedcandle

New Member
Do you have a log file and more details what you have configured exactly?
(It would be best to enable verbose logging on the general tab and export the plugin settings)
Which version were you using previously?
I'm using Version
1.11.2
Thanks for your response.
It seems I didn't see that the window expands to the right for more settings. I checked the box that says "Unless Source is active" and then it worked. I also changed the transition to Cut instead of "Use current transition". Thanks for your response but its working now.
 

Warmuptill

Active Member
I use the output timer to stop a stream after a variable amount of time. Is it possible to switch to Scene X when there are 10 seconds left in the stream (or something like that)?
You could use a scene sequence in addition to the scene trigger you have set up to achieve that behaviour.
I'm using Version
1.11.2
Thanks for your response.
It seems I didn't see that the window expands to the right for more settings. I checked the box that says "Unless Source is active" and then it worked. I also changed the transition to Cut instead of "Use current transition". Thanks for your response but its working now.
Glad to hear you got it to work! :)
 

hpmoon

New Member
I love the new Video tab, but regret that so far its drop-down options include "has not changed" instead of "has changed." It would be incredibly useful for me and probably many others to have a static PowerPoint presentation running-full screen on a separate monitor, for example, getting switched to when the static slide advances to the next one, for a set period of time (say, 30 seconds), then moving along to the Sequence tab's list of scenes to cycle through. Any chance that's on the development horizon? Thanks!
 

Warmuptill

Active Member
I love the new Video tab, but regret that so far its drop-down options include "has not changed" instead of "has changed." It would be incredibly useful for me and probably many others to have a static PowerPoint presentation running-full screen on a separate monitor, for example, getting switched to when the static slide advances to the next one, for a set period of time (say, 30 seconds), then moving along to the Sequence tab's list of scenes to cycle through. Any chance that's on the development horizon? Thanks!
Thanks for the suggestion!
I quickly threw together a first version of your requested functionality.
videoHasChanged.png

A build should be available here in a few minutes:
(You will have to be signed into GitHub to be able to download it)

Please let me know if everything is working as expected! :)
 

hpmoon

New Member
Thanks for the suggestion!
I quickly threw together a first version of your requested functionality.
View attachment 70193
A build should be available here in a few minutes:
(You will have to be signed into GitHub to be able to download it)

Please let me know if everything is working as expected! :)
Thank you very much. I'm still figuring all this out so will get back to you once I've given it a good effort. What I'm hoping is that after that new option under the Video tab executes, I can resume a Sequence (the only other thing configured) based on those two tabs being the top priorities -- and that runs until interrupted by another "has changed" action under the Video tab, cycling back to Sequence after execution.

I'm amazed by the vast number, if not majority, of OBS users who integrate PowerPoint presentations into livestreams, yet despite that, there are still big obstacles in the OBS ecosystem (and plug-in authors like yourself are key to improving the situation). This functionality you so kindly started adding is one big step -- but the holy grail is to somehow let a remote clicker, or hotkey, advance PowerPoint slides manually even when PowerPoint does not "have focus" (is not the currently activated window). I know that is generally beyond the control of a given application or plug-in, but if it's at all possible that way, nirvana FYI!
 

Lawrence_SoCal

Active Member
out of scope for this thread, but for @hpmoon in reference to above post.... I find I'm able to advance PPTx slides using scroll wheel of mouse *without* making PPT the active window (ie' have 'focus). I just have a small portion of the PPTx windowed slide visible on screen, mouse over (but NOT click, bring PPTx to front/focus), scroll 1 page, and I'm all set. I'd love to automate PPTx page change based on OBS scene change, but alas MS new security and Office interface paradigm makes that a huge challenge... so I've done it manually for last year ... oh well. I have more PPTx pages than scenes, and changing OBS from PPTx doesn't work in my use case (maybe I could, and intriguing new option here I'd have possibly restructured for, but presentation format is changing, so no longer an issue for me after one last stream using old format (w/ PPTx)
 

GeeMack

Member
... but the holy grail is to somehow let a remote clicker, or hotkey, advance PowerPoint slides manually even when PowerPoint does not "have focus" (is not the currently activated window).

In some cases it may be as simple as exporting the PowerPoint slides as PNG or JPG images, then use those images (or their folder) to create an Image Slide Show source in OBS. Set a couple hotkeys for moving forward or back through the slides. Add that Slide Show source to any scene.
 

Warmuptill

Active Member
Hello, I find this plugin very awesome, and I've noticed the dev is still around :D nice one!

Btw, I don't know if it's already been suggested or the feature is already inside and it's me who cannot find it.

It would be very cool to switch to different scene using the same trigger and land on a different scene based on the starting scene.

IE.

I have 2 scenes, A1 and B1.
And have two slightly modified scenes that are A2 and B2

I'm on scene "A1"
I receive an update on my txt file "trigger.txt" (it's just a counter that increases everytime something on a website is triggered )
The switcher sends me to "A2" scene.
I then manually switch to scene "B1"
if I receive an update on my txt file "trigger.txt" it would be cool if it switched on the "B2" scene instead of the "A2"

Is there a way to do it? Am I missing something?
I am currently working on implementing functionality that would support this use case (and combining different switching methods in general).
This would be example on how to configure a macro for the "A" case:
MacroExample.PNG


If you want to give this a try you can find a build here:
(You will have to be logged into GitHub to be able download it)

Please note that it is still under development and might contain bugs.
Feedback would be much appreciated!
 

Warmuptill

Active Member
I have a default slide show running all the time but when the audio is switched on I want to move to my camera scene. In addition I want to go via a 'introduction' camera scene (which has a 'welcome' banner on), and only switch to the main camera scene when people start talking (i.e. audio above a certain level).
I also want to switch back to the default slide show when the audio is turned off.
(Audio comes from an external audio system)

So I have 2 audio triggers, Audio1 at 28% for 0s ("PTZ-New" = main camera scene), and Audio2 at 0% for 30s ("PTZ+Welcome" = introduction scene). I also have the 'audio_fallback' set to choose the main camera scene.
In addition I have a 'sequence' scene that switches from the main camera scene back to the default slide show ("24Hr+AllMasses") after 2mins.

What I found was that the default slide show would occasionally briefly fade in (only for <1sec), even though the sound was still on. What is the logic between the various categories of tiggers (i.e. Audio and Sequence)? I have the priority set to Audio then Time then Sequence. If audio is currently triggered, does (should) this prevent Sequence being triggered? Under what (audio) contitions could Sequence be triggered? I was hoping it would only be after the audio was competely turned off.
How does the 'interruptable' option come into play here?

Also it would sometimes flip back to the 'introduction' scene (I think when the audio was quiet but NOT for 30secs).
What is the logic when there are 2 audio triggers in this case? If the main scene is triggered but then the audio drops to below that trigger level should the 'introduction' scene get tiggered? and if so should this be only after 30s (in my case) of quiet audio has elapsed?
If the audio is above 28% it is also at the same time above 0% so are they both considered triggered (after being like this for 30s)? If so how so they 'recover' from this situation? What happens when the audio drops below 28% - to me this is when the 2nd audio trigger should start counting its 30s...???
I was expecting that as long as there is audio about 28% at least once every 30secs, then it would just stay on the main camera scene.

I modified the audio triggers slightly to be:
Audio1 23% for 0.5s
Audio2 1% for 30s
(fall-back is still to the 'Audio1' scene)
Sequence still switches from the 'Audio1' scene to the default slide show but now after 5mins (still not 'interruptable')
This seemed to improve things but I still don't really know what the actual logic is to know how best to configure things.
Is there a better way to get/keep the introduction scene up before people start talking (i.e. when audio system is on but there is only background noise)?
Maybe the logging could be enhanced to show exactly what parameters were detected and hence what matched (e.g. "audio above 28% was detected for 0.5s" or "audio fell below 28% for X seconds" or "no audio detected for 30secs so sequence is to be triggered")?
In the log I see 'match for sequence' at the same second as the previous match for Audio - to me there should at least be a 30sec gap before the 'sequence' trigger should kick in?
Log file attached.
Thanks
Also for your usecase the above test build might be interesting as it also allows combining multiple audio conditions.
For example:
MacroMultiAudioExample.PNG
 

GeoffMC

New Member
I simplified the scene switch for now to leave only one audio trigger.
However this week it switched away to the 24Hr scene even though there was audio present:

12:26:39.488: [adv-ss] match for 'audio' - switch to scene 'PTZ-New'
12:26:39.488: [adv-ss] try to sleep for 500
12:26:39.990: [adv-ss] try to sleep for 499
12:26:40.492: [adv-ss] try to sleep for 497
12:26:40.991: [adv-ss] try to sleep for 498
12:26:41.493: [adv-ss] try to sleep for 497
12:26:41.992: [adv-ss] try to sleep for 498
12:26:42.490: [adv-ss] match for 'sequence' - switch to scene '24Hr+AllMasses'
12:26:42.499: [adv-ss] switched scene
12:26:42.499: [adv-ss] try to sleep for 492

-> Why did it switch to 24Hr at 12:26:42 if it matched audio just before at 12:26:39?
Sequence is set for 5mins after PTZ-New but is interruptible (settings and log attached)
 

Attachments

  • OBS-AdvSwitchSettings-Simple-18Apr21.txt
    2.8 KB · Views: 19
  • 2021-04-25 11-58-40.txt
    619.9 KB · Views: 17

GeoffMC

New Member
Also I have see it apparently detect audio and hence switch to 'PTZ-New' when the (external) audio wasn't on.
There is no signal on this audio input at this time. Is there any explanation to this?
Log shows:
07:15:37.646: [adv-ss] try to sleep for 496
07:18:08.830: Last log entry repeated for 301 more lines
07:18:08.831: [adv-ss] match for 'audio' - switch to scene 'PTZ-New'
07:18:08.996: [adv-ss] switched scene
07:18:08.997: [adv-ss] try to sleep for 333
(Audio isn't switched on until 8:15 or so)
Log file attached (settings file same as previous post)
 

Attachments

  • 2021-05-02 07-14-13.txt
    34.9 KB · Views: 17

Warmuptill

Active Member
I simplified the scene switch for now to leave only one audio trigger.
However this week it switched away to the 24Hr scene even though there was audio present:

12:26:39.488: [adv-ss] match for 'audio' - switch to scene 'PTZ-New'
12:26:39.488: [adv-ss] try to sleep for 500
12:26:39.990: [adv-ss] try to sleep for 499
12:26:40.492: [adv-ss] try to sleep for 497
12:26:40.991: [adv-ss] try to sleep for 498
12:26:41.493: [adv-ss] try to sleep for 497
12:26:41.992: [adv-ss] try to sleep for 498
12:26:42.490: [adv-ss] match for 'sequence' - switch to scene '24Hr+AllMasses'
12:26:42.499: [adv-ss] switched scene
12:26:42.499: [adv-ss] try to sleep for 492

-> Why did it switch to 24Hr at 12:26:42 if it matched audio just before at 12:26:39?
Sequence is set for 5mins after PTZ-New but is interruptible (settings and log attached)
As far as I can see the scene was never changed away from 'PTZ-New' for a long time.
Meaning the start scene 'PTZ-New' was active for the necessary amount of time to trigger the scene sequence.

In fact the scene was active for quite a bit longer, but with your current setup the sequence check only get a chance to run when audio did not match anything, as the audio checks a higher priority than the sequence checks.
(Internally the sequence check counts how many times it was called with the while the start scene was active - I think I will change this behavior to instead measure the time that has passed, but this will not change anything for your use case, besides triggering your undesired behaviour earlier)


Am I understanding correctly, that what you are trying to achieve is?
1. If audio output is "active" -> switch to scene A
2. If audio output is not "active" and the current scene is A and is active for X amount of time -> wait for Y amount of time and switch to scene B.

Or is it more complicated?

Also I have see it apparently detect audio and hence switch to 'PTZ-New' when the (external) audio wasn't on.
There is no signal on this audio input at this time. Is there any explanation to this?
Log shows:
07:15:37.646: [adv-ss] try to sleep for 496
07:18:08.830: Last log entry repeated for 301 more lines
07:18:08.831: [adv-ss] match for 'audio' - switch to scene 'PTZ-New'
07:18:08.996: [adv-ss] switched scene
07:18:08.997: [adv-ss] try to sleep for 333
(Audio isn't switched on until 8:15 or so)
Log file attached (settings file same as previous post)
Unfortunately I cannot tell you why this happened.
I just read out the "peak" value for the selected audio source.
Maybe the audio source emits some tiny amount of noise that happened to be surpassing the very low threshold you have set?
 

GeoffMC

New Member
As far as I can see the scene was never changed away from 'PTZ-New' for a long time.
Meaning the start scene 'PTZ-New' was active for the necessary amount of time to trigger the scene sequence.

In fact the scene was active for quite a bit longer, but with your current setup the sequence check only get a chance to run when audio did not match anything, as the audio checks a higher priority than the sequence checks.
(Internally the sequence check counts how many times it was called with the while the start scene was active - I think I will change this behavior to instead measure the time that has passed, but this will not change anything for your use case, besides triggering your undesired behaviour earlier)


Am I understanding correctly, that what you are trying to achieve is?
1. If audio output is "active" -> switch to scene A
2. If audio output is not "active" and the current scene is A and is active for X amount of time -> wait for Y amount of time and switch to scene B.

Or is it more complicated?


Unfortunately I cannot tell you why this happened.
I just read out the "peak" value for the selected audio source.
Maybe the audio source emits some tiny amount of noise that happened to be surpassing the very low threshold you have set?
Yes your assesment is just about ok - if anything my current requirement is even simpler than that, but the only way I could see to do what I wanted was something like your point 2.
This would meet my requirements:
1. If audio output is "active" -> switch to scene A
2. If audio has not been "active" for Y amout of time then switch to scene B
but I can't see how to implement point 2 directly with the logic available...
 

Warmuptill

Active Member
Yes your assesment is just about ok - if anything my current requirement is even simpler than that, but the only way I could see to do what I wanted was something like your point 2.
This would meet my requirements:
1. If audio output is "active" -> switch to scene A
2. If audio has not been "active" for Y amout of time then switch to scene B
but I can't see how to implement point 2 directly with the logic available...
Well if it is as simple as "If audio has not been "active" for Y amount of time then switch to scene B" relying on just an entry on the audio tab should suffice.
When volume of <audio source> is below <threshold> for <Y> switch to <scene B> using <Current transition>
Or am I misunderstanding something?

If you should require something like "If audio output is not "active" and the current scene is A and is active for X amount of time -> wait for Y amount of time and switch to scene B." the Macro tab might come in handy as I mentioned above.
It provides the option to combine multiple switching methods.
For example the above statement could be translated to:
MacroExample2.PNG
 

GeoffMC

New Member
so I tried the 'audio below threshold' trigger (hadn't realised I could do that!) and while it worked initially I couldn't get it to work again.
Once it has matched once, the log continuously shows a 'match' for the audio (since it is currently always below the threshold as it is currently off) .
What is it that has to happen for it to trigger again? I.E. when would the cycle be reset? Does it just require some other match/trigger or does it need something more before it will start the 'audio below threshold' trigger timer again?
Also it seems that I can only have a max of 90secs in the audio timer...
 

Warmuptill

Active Member
so I tried the 'audio below threshold' trigger (hadn't realised I could do that!) and while it worked initially I couldn't get it to work again.
Once it has matched once, the log continuously shows a 'match' for the audio (since it is currently always below the threshold as it is currently off) .
What is it that has to happen for it to trigger again? I.E. when would the cycle be reset? Does it just require some other match/trigger or does it need something more before it will start the 'audio below threshold' trigger timer again?
Also it seems that I can only have a max of 90secs in the audio timer...
I am not sure what you mean by "reset".
The below condition works just like the above condition, so it will trigger a scene change as long as the specified condition is true.
The time is "reset" to zero if the condition is false.

>Also it seems that I can only have a max of 90secs in the audio timer...
99 seconds was just an aribrary limit I chose. I changed this recently - you can find a build where this was changed here:
 
Top