Advanced Scene Switcher

Advanced Scene Switcher 1.28.1

That Cicero Guy

New Member
Can you please enable verbose logging on the general tab and share the log file?

Edit: Sorry if this is stating the obvious - but did you enable the scene switcher and did you set a reasonable interval on the general tab ?
I have not been able to test this feature much so there could definitely be some issues I did not think about.

Hello,

I’m running across the same issue. I have OBS 26.0.2 installed. I have a bit of an elaborate setup with multiple cams, scenes, etc. Everything works great with the updated plugin from today for the 10 or so scenes I use switching with but this audio switcher. I haven’t used a version since this was added, so this is the first time I’ve seen or tried the feature. I have it enabled and set so it’s triggered with 10% Above by my main microphone. Nothing I do seems to work. I’ve tried multiple other audio sources as well.

Should I enable logging and attach to the thread, or message privately?

Thanks! Appreciate the plug-in. It’s great!

Happy New Year!
 

Warmuptill

Active Member
Hello,

I’m running across the same issue. I have OBS 26.0.2 installed. I have a bit of an elaborate setup with multiple cams, scenes, etc. Everything works great with the updated plugin from today for the 10 or so scenes I use switching with but this audio switcher. I haven’t used a version since this was added, so this is the first time I’ve seen or tried the feature. I have it enabled and set so it’s triggered with 10% Above by my main microphone. Nothing I do seems to work. I’ve tried multiple other audio sources as well.

Should I enable logging and attach to the thread, or message privately?

Thanks! Appreciate the plug-in. It’s great!

Happy New Year!
Just for anyone interested what the problem was:

The scene switcher was "stuck" in a scene sequence.
During the waiting time of a scene sequence the scene switcher does not perform any additional checks, so it misses the audio input.

For this to work I added the option to mark a sequence as "interruptible".

interruptible.PNG


An interruptible sequence can be interrupted by any other switching method during the wait period and will only switch to the next scene if the specified previous scene was active for the specified duration.
(This new behaviour is of course only optional and will not take place if "interruptible" is not checked)

This then allows you to setup a sequence of scenes which can be interrupted at any time by audio input triggering a scene change (or any other switching method).

I have updated the last release to also contain this change.
 
Last edited:

That Cicero Guy

New Member
Thanks again for this fix.:) Much appreciated.

I have a suggestion, but I'm not sure if it's valid or even worth adding. It may already be there somewhere, as I missed the Pause tab... :-O

Is there a way to set an override up so when the audio-activated scene activates, it overrides the Sequence time interval to switch to the next scene.

For example, a scene I have is set to switch after 20 seconds, but if it's activated by the audio switch, it will progress to the next scene after only 5 second of no audio. I set up a separate duplicate scene to mimic this, but figure I would ask. Kinda like an argument which says, for this activation, switch to next scene after X seconds, which does a one-time override of what's in the sequence for that scene.

Or, is there a way to only show an audio-switched scene when speaking, and have it go back to the sequence rotation after the audio is silent, without that scene being in the sequence, so the scene is only active when triggered by audio, and only then? I may be missing something again.

Thanks!
 

Warmuptill

Active Member
Thanks again for this fix.:) Much appreciated.

I have a suggestion, but I'm not sure if it's valid or even worth adding. It may already be there somewhere, as I missed the Pause tab... :-O

Is there a way to set an override up so when the audio-activated scene activates, it overrides the Sequence time interval to switch to the next scene.

For example, a scene I have is set to switch after 20 seconds, but if it's activated by the audio switch, it will progress to the next scene after only 5 second of no audio. I set up a separate duplicate scene to mimic this, but figure I would ask. Kinda like an argument which says, for this activation, switch to next scene after X seconds, which does a one-time override of what's in the sequence for that scene.

Or, is there a way to only show an audio-switched scene when speaking, and have it go back to the sequence rotation after the audio is silent, without that scene being in the sequence, so the scene is only active when triggered by audio, and only then? I may be missing something again.

Thanks!
At the moment the scene switcher does not know what it did in the last cycle and there is no built-in feature like that.

You could of course create a copy of the no-audio scene, which you could switch to automatically, if there was no audio for a certain time period (chose 'below' x% ... on the audio tab) and create a dedicated scene sequence entry with the reduced duration, which leads back to the regular scene sequence.

Simplified example:

Sequences:
  • SequenceScene1 -> wait 20s -> audioScene
  • audioScene -> wait 20s -> noAudio
  • noAudioScene -> wait 20s -> SequenceScene2
  • SequenceScene2 -> wait 20s -> SequenceScene1
  • noAudioSceneCopy -> wait for 0s -> SequenceScene2
Audio:
  • If volume of mic is above 10% for 5s switch to AudioScene
  • If volume of mic is below 10% for 5s switch to noAudioSceneCopy

I hope I understood your request correctly and it is somewhat clear what I mean.
 
Last edited:

That Cicero Guy

New Member
At the moment the scene switcher does not know what it did in the last cycle and there is no built-in feature like that.

You could of course create a copy of the no-audio scene, which you could switch to automatically, if there was no audio for a certain time period (chose 'below' x% ... on the audio tab) and create a dedicated scene sequence entry with the reduced duration, which leads back to the regular scene sequence.

Simplified example:

Sequences:
  • SequenceScene1 -> wait 20s -> audioScene
  • audioScene -> wait 20s -> noAudio
  • noAudioScene -> wait 20s -> SequenceScene2
  • SequenceScene2 -> wait 20s -> SequenceScene1
  • noAudioSceneCopy -> wait for 0s -> SequenceScene2
Audio:
  • If volume of mic is above 10% for 5s switch to AudioScene
  • If volume of mic is below 10% for 5s switch to noAudioSceneCopy

I hope I understood your request correctly and it is somewhat clear what I mean.

Yes. That makes perfect sense. I was actually playing around with the Below option before I created the posts. Great idea. Thank you. :)
 
Wow this plugin might be exactly what I've been looking for.

Unless there is already a way of doing this, it would be great if there was a way of creating 'cumulative' audio trigger.

IE. "If Input A AND Input B are above x dB, then cut to Scene X"

This would most obviously be useful for when multiple people are talking and you want to automatically cut to a wide shot.
 

Warmuptill

Active Member
Wow this plugin might be exactly what I've been looking for.

Unless there is already a way of doing this, it would be great if there was a way of creating 'cumulative' audio trigger.

IE. "If Input A AND Input B are above x dB, then cut to Scene X"

This would most obviously be useful for when multiple people are talking and you want to automatically cut to a wide shot.
Combining conditions is currently not possible.
I will add it to the todo list but I cant promise implementing it soon.

Thanks for the suggestion!
 
so how would audio trigger work if i use a tone? i want to use something like this and when that plays switch to switch

i would prob use a DTMF Tone like Tv does

so would your trigger do that?
 

Warmuptill

Active Member
so how would audio trigger work if i use a tone? i want to use something like this and when that plays switch to switch

i would prob use a DTMF Tone like Tv does

so would your trigger do that?
The plugin only checks the volume of an audio source and not the frequencies used - if that is your question.
 
yes! it should help... does anyone do videos on how these things work, im a visual learner i get confused reading things ( plus om half blind lol)
 

flyingdoodah

New Member
Thanks for making this plugin! Can't wait to use it! I just installed it and all of the options seem to be displaying some of the coding (not sure if I'm saying this right). Any tips on correcting the display?
advancedscenedisplay.jpg
 

Warmuptill

Active Member
Thanks for making this plugin! Can't wait to use it! I just installed it and all of the options seem to be displaying some of the coding (not sure if I'm saying this right). Any tips on correcting the display?View attachment 65424
Looks like you missed installing the "data" folder, which contains the translations for these strings.

I would recommend just running the installer, but if you want to manually install it you have to copy "SceneSwitcher\Windows\data" folder from the downloaded "SceneSwitcher.zip" archive to your OBS Studio installation directory, which is usually located at "C:\Program Files (x86)\obs-studio\".

├───data
│ ├───obs-plugins
│ │ ├───advanced-scene-switcher
│ │ │ └───locale <- translations are in here :)
...
 

Warmuptill

Active Member
Wow this plugin might be exactly what I've been looking for.

Unless there is already a way of doing this, it would be great if there was a way of creating 'cumulative' audio trigger.

IE. "If Input A AND Input B are above x dB, then cut to Scene X"

This would most obviously be useful for when multiple people are talking and you want to automatically cut to a wide shot.


As something like this was requested multiple times over the last couple of days I added a simpler version of your suggestion:

audioMulitMatch.PNG

If that should suffice for your use case also you can find a first build with these changes here in a couple of minutes:
(Downloading the release might require you to be logged into Github - if that is an issue for you let me know)

I would appreciate if you could give this a try and let me know if you run into any issues.
 

ghostman90215

New Member
I found another feature to ask for:

Next Scene Selector

As an OBS Producer I would like to configure the logical next scene based on the current scene so that when I am streaming the next scene I want to cut to will already be selected in the scene list.

I know this will be done when:

Given:
I have three scenes in OBS: Scene A, Scene B, and Scene C​
When:
  1. I add Scene A to the list of Next Scene Selector tab, and
  2. Specify that Scene C is the Next Scene behind Scene A, and
  3. Specify that Scene B is the Next Scene behind Scene C, and
  4. I am streaming Scene A, and
  5. Scene C is queued in the Scene list, and
  6. I press the transition button to Scene C
THEN
  • Scene B is automatically selected in the Scene list and queued as the next scene
 
As something like this was requested multiple times over the last couple of days I added a simpler version of your suggestion:

Great work! A couple of things I've found with some early testing:

It's exacerbating an already existing problem, in that it's easy for very quick cuts to happen, because maybe two sources hit their change threshold/time almost simultaneously. To really make this perfect there would need to be both the minimum time to trigger, as well as a minimum hold time on a shot before it can be changed again.

This could either be done on each shot, so it would look like:
When the volume of ___ is </> _____ for _____ switch to _____ using ______ for at least _____ seconds

Or it could just be a global setting, of minimum hold time between triggers.

I know there is the general "check switch conditions every ___" setting, but that also affects the responsiveness in general, rather than just buffering between subsequent triggers.


Also, there appears to be a bug where triggering two sounds at once often first triggers one of the individual triggers to go first, before it goes to the fallback. (I tested this by simultaneously running tone to both inputs, and seeing that it wouldn't always just cleanly go to the fallback scene)
 

Warmuptill

Active Member
I found another feature to ask for:

Next Scene Selector

As an OBS Producer I would like to configure the logical next scene based on the current scene so that when I am streaming the next scene I want to cut to will already be selected in the scene list.

I know this will be done when:

Given:
I have three scenes in OBS: Scene A, Scene B, and Scene C​
When:
  1. I add Scene A to the list of Next Scene Selector tab, and
  2. Specify that Scene C is the Next Scene behind Scene A, and
  3. Specify that Scene B is the Next Scene behind Scene C, and
  4. I am streaming Scene A, and
  5. Scene C is queued in the Scene list, and
  6. I press the transition button to Scene C
THEN
  • Scene B is automatically selected in the Scene list and queued as the next scene

Thanks for the suggestion!

Just to confirm: You are interested in an option which would allow you to automatically set the correct "Preview" Scene while running in "Studio Mode", right?

If so, I added it to the todo list, but I am not sure when I will get around to implementing it.

Althoug not exactly what you are looking for maybe this might help you in the meantime?

Great work! A couple of things I've found with some early testing:

It's exacerbating an already existing problem, in that it's easy for very quick cuts to happen, because maybe two sources hit their change threshold/time almost simultaneously. To really make this perfect there would need to be both the minimum time to trigger, as well as a minimum hold time on a shot before it can be changed again.

This could either be done on each shot, so it would look like:
When the volume of ___ is </> _____ for _____ switch to _____ using ______ for at least _____ seconds

Or it could just be a global setting, of minimum hold time between triggers.

I know there is the general "check switch conditions every ___" setting, but that also affects the responsiveness in general, rather than just buffering between subsequent triggers.


Also, there appears to be a bug where triggering two sounds at once often first triggers one of the individual triggers to go first, before it goes to the fallback. (I tested this by simultaneously running tone to both inputs, and seeing that it wouldn't always just cleanly go to the fallback scene)

The "minimum hold time" is a good suggestion and I agree that adjusting the check interval to achieve the same behaviour has undesired side effects.

Adding it as a global option should be rather simple to do, so I went for that approach.
(Although configuring it for each entry in the scene switcher would also be possible)

MatchCooldown.PNG


A build should be available here in a couple of minutes - feedback is appreciated:

Regarding the latter observation, please note that the duration specified for the fallback is additive to the earliest second audio entry match.
So for example if all audio sources start playing a sound at the same time and the following is configured:
  • if volume ... for 3s ...
  • if volume ... for 2s ...
  • if multiple entries match for 1s ...
What will happen is that second entry will match first after two seconds have passed and the scene switcher will switch to the configured scene.
Then after another second has passed the scene switcher will switch to the first entry as it has a higher priority than the second one.
Finally after another second - so at second four - the fallback comes into effect as now both entry one and entry two have matched at the same time for one second.

Could this have been what you were experiencing?
If so you might have to set the duration of the fallback option to 0s.
 

ghostman90215

New Member
What you are doing here is nothing short of amazing! Thank you for all the hard and wonderful work!


Thanks for the suggestion!

Just to confirm: You are interested in an option which would allow you to automatically set the correct "Preview" Scene while running in "Studio Mode", right?

If so, I added it to the todo list, but I am not sure when I will get around to implementing it.

Althoug not exactly what you are looking for maybe this might help you in the meantime?

I think you’ve mostly interpreted my late night drivel, yes. I appreciate the stop-gap suggestion and will check it out today.

If I get some time today, maybe I’ll mock-up the flow, and behavior. Would that help?

The context for this for public events such as worship services which have a “set list” of scenes for the order of services. Granted, some of the scenes are just duplicates, but we are also logging each scene switch to a edit definition list for later post-production editing and archival. The proposed feature along with other plug-ins allows one person to focus on the impact of the “product” and less on the production engineering.
 

Lawrence_SoCal

Active Member
The context for this for public events such as worship services which have a “set list” of scenes for the order of services. Granted, some of the scenes are just duplicates, but we are also logging each scene switch to a edit definition list for later post-production editing and archival. The proposed feature along with other plug-ins allows one person to focus on the impact of the “product” and less on the production engineering.

As a fan of @Warmuptill's plug-in, and using for House of Worship for last 9 months, I thought I'd chime in here. My typical service has 25+ OBS scenes, and as you mention, many of these are duplicative (we go back and forth from pre-recorded content [music/readings/announcements, etc] and live video). Jumping back and forth in scene list did not work for a solo operator, even one highly caffeinated. So, my OBS scene list (which can be re-arranged in any order) is in our service order. For me, the next OBS scene is ALWAYS the scene after (under) the one I'm on now. I don't use Studio mode.
Using the automation of this plug-in:
- based on clock time, I move to a set scene to start recording (I start streaming in advance), then move scene to countdown timer page, and start a replay prelude (picture in picture scene). We start streaming 10 minutes before service 'starts', with actual live video starting 2 minutes after the hour (12 minutes after starting stream). Every scene change is automated using this plug-in.
- The only 'manual' task I have to start with is advancing the PowerPoint slides (service bulletin)
- During the service, my tasks are
- manually advancing to next scene when current scene is live video (can't time or otherwise automate when speaker is done and ready for next scene). Using Media based Scene switching, when a pre-recorded video ends, Scene is auto advanced
- manually advance PPTx slideshow to keep up with service (the part I'm most interested in automating next but O365 security paradigm changes doesn't make that easy)
- manually control PTZ camera as required (completely manual s/w based at the moment) but once automation coming
- keep an on on livestream platform comments (so as to be aware of audio issues, etc) and occasionally replying, posting sermon questions, etc.
We have someone else (Digital Usher to monitor comments & stream, and they TXT me if need be)
- at the end, I use plug-ins Sequence to handle the Postlude, Go In Peace / Join us for virtual coffee hour, copyright slide, end stream/recording

The above is something that can be done solo with the right person (you do have to keep track of a number of items at once)

So, i get the idea of Next, but if I have to push a button for next, I'd argue that it is just as easy (and in the KISS mindset) to simply click on the next scene down in the OBS scene list... just a thought. I'm happy to web conference and show my setup, for anyone interested (direct message... not this thread)
 
Regarding the latter observation, please note that the duration specified for the fallback is additive to the earliest second audio entry match.
So for example if all audio sources start playing a sound at the same time and the following is configured:
  • if volume ... for 3s ...
  • if volume ... for 2s ...
  • if multiple entries match for 1s ...
What will happen is that second entry will match first after two seconds have passed and the scene switcher will switch to the configured scene.
Then after another second has passed the scene switcher will switch to the first entry as it has a higher priority than the second one.
Finally after another second - so at second four - the fallback comes into effect as now both entry one and entry two have matched at the same time for one second.

Could this have been what you were experiencing?
If so you might have to set the duration of the fallback option to 0s.

Yes that sounds exactly like an explanation for what I was seeing. I will have a play with the new build and see how much having a minimum hold time helps to fix the problems. But what I was seeing already was that in a real conversation it was very hard to get the 'wide shot' (multiple inputs) to trigger.

It might be that having that as the lowest priority trigger in the stack might be the opposite of what is useful. In your above example, it would probably be better if the multiple trigger could have the highest priority. As it would make sense if two people are talking over each other, it usually will then collapse to only one person continuing to talk.
Is there a way that the 'multiple entries' could itself be a field like the others, that can also be moved up and down to change its priority?

I have a feeling that the minimum change time is actually going to make the problem even worse - because triggerin two entities at the same time will first trigger one of them, and then that will hold until it is allowed to trigger again - at which point the multiple triggers may not be true anymore. Even setting the multiple trigger to 0s would fail to trigger in this scenario.
 
Top