Advanced Scene Switcher

Advanced Scene Switcher 1.28.1

Warmuptill

Active Member
Have a question i have a macro where when a scene is switched i have a source become projected but it seems to constantly repeat and adding multiple windows and wont stop please help thanks
What you are probably looking for is the option highlighted below.

OnChange.PNG
 
Hey I am running Advanced Scene Switcher 1.20.5 with OBS 29.02 on Windows 11. I had a nice bunch of duration macros created that were working great a couple days ago and suddenly today they are basically not working/only occassionally are working. Is this because I need to update to the current version? Will updating screw with the macros I have created?

Also i should add that things are running fine on my mac. It's just on windows. and also, i can confirm that scene switcher is "on"
 
Last edited:

BryanM

New Member
I must be missing something. Using ASS 1.20.5.
Showing several scenes with the Switch Scene followed by Wait action. All is working well. At the end of the Macro, I would like to repeat.
How do I loop back to the start of the Macro? In other words, a continuous loop?

Thanks much.
 

AaronD

Active Member
I must be missing something. Using ASS 1.20.5.
Showing several scenes with the Switch Scene followed by Wait action. All is working well. At the end of the Macro, I would like to repeat.
How do I loop back to the start of the Macro? In other words, a continuous loop?

Thanks much.
I would do that differently. Instead of the entire sequence in one macro, have a separate macro for each scene:
  • If Current Scene is A for 5 seconds
    • Switch to Scene B
  • If Current Scene is B for 8 seconds
    • Switch to Scene C
  • If Current Scene is C for 12 seconds
    • Switch to Scene A
Then it's easy to close the loop. As above, just have the last scene trigger the first.
And it's easy to jump out of the loop and not have it insist on jumping back in, like a single macro with Wait actions would.
 

Warmuptill

Active Member
Hey I am running Advanced Scene Switcher 1.20.5 with OBS 29.02 on Windows 11. I had a nice bunch of duration macros created that were working great a couple days ago and suddenly today they are basically not working/only occassionally are working. Is this because I need to update to the current version? Will updating screw with the macros I have created?

Also i should add that things are running fine on my mac. It's just on windows. and also, i can confirm that scene switcher is "on"
I don't think that updating to the newest version will make any difference.

Can you share more details regarding what you have set up?
Would it be possible to share an export of your settings + a log file of the problem happening with verbose logging enabled?
(Both options can be found on the General tab)

Question about variables. Is there any way to set a variable to the value of a text source?
Yes that should be possible using a setup similar to this:

TextSourceToVariable.PNG


It works by extracting the "text" value of the source settings using a set of regular expressions.
The condition itself is just used to extract the settings value - you can of course adjust it to your needs depending on when you want to change the variable value.

I must be missing something. Using ASS 1.20.5.
Showing several scenes with the Switch Scene followed by Wait action. All is working well. At the end of the Macro, I would like to repeat.
How do I loop back to the start of the Macro? In other words, a continuous loop?

Thanks much.
This example or the steps by @AaronD should work:
 

miko3ed

New Member
Yes that should be possible using a setup similar to this:

View attachment 92859

It works by extracting the "text" value of the source settings using a set of regular expressions.
The condition itself is just used to extract the settings value - you can of course adjust it to your needs depending on when you want to change the variable value.
Thanks for this, I do need a little clarification tho. It looks like you are setting the value with the base of ("text":"example text"}. I'm not seeing where in this example setup it is actually pulling the value from the source you used Text(GDI+). It might help if I give my details.
I have a macro that isn't supposed to run for a number of seconds but that number can change based on other things, and I want to set a Text source (I'm calling it "CONFIG-delay") to the number of seconds I want the macro to wait. Then I'm intending to use that variable in the timed macro.
 

miko3ed

New Member
Yes that should be possible using a setup similar to this:

View attachment 92859

It works by extracting the "text" value of the source settings using a set of regular expressions.
The condition itself is just used to extract the settings value - you can of course adjust it to your needs depending on when you want to change the variable value.

Nevermind, I figured out how your example works :)
Thank you muchly!
 

Kourinn

New Member
Figured I'd share my setup to clear Replay Buffer between saves:
  1. In Tools > Advanced Scene Switcher, in the General tab, lower "Check conditions every" to whatever is fast enough with negligible cpu cost (I use 50ms).
  2. In the Macro tab, create macro SaveAndClearReplayBuffer
  3. Add condition, [If] [Hotkey] "Save And Clear Replay Buffer"
  4. Add action, Replay Buffer Save replay buffer
  5. Duplicate SaveAndClearReplayBuffer to SaveAndClearReplayBuffer 2
  6. Edit condition to [If] [Macro] SaveAndClearReplayBuffer [Within the last] [3.00] [seconds]
  7. Add condition [And] [Replay Buffer] [Replay buffer saved]
  8. Edit action to [Replay Buffer] [Stop replay buffer]
  9. Duplicate SaveAndClearReplayBuffer 2 to SaveAndClearReplayBuffer 3
  10. Edit condition to [If] [Macro] SaveAndClearReplayBuffer 2 [Within the last] [3.00] [seconds]
  11. Edit condition #2 to [And] [Replay Buffer] [Replay buffer stopped]
  12. Edit action to [Replay Buffer] [Start replay buffer]
  13. Open Settings > Hotkeys and set "Save And Clear Replay Buffer" to a hotkey of your choice.
 

youjiman

New Member
Hi. I found a bug on 1.21.0. on intel Mac OBS 28.1.2.

Even I choose different algorithms for the video condition's pattern matching option from cross correlation (e.g. correlation coefficient), it goes back to cross correlation when I relaunch my OBS.
 

Warmuptill

Active Member
Hi. I found a bug on 1.21.0. on intel Mac OBS 28.1.2.

Even I choose different algorithms for the video condition's pattern matching option from cross correlation (e.g. correlation coefficient), it goes back to cross correlation when I relaunch my OBS.
Thanks for reporting the problem!
A build with a fix will be available here in a few minutes:
(You need to be logged into GitHub to be able to download it)
 
Sorry if I am stating the obvious or misunderstanding something, but the text area containing the transform data has a scroll bar.
The positional data should be part of the "pos" block towards the middle of the text field.

Does this value not change for you after moving the source and clicking the "Get transform" button again?
Or are you referring to something different with "location of the source"?

Sorry for coming back with so many questions instead of answers - I just want to be sure we are talking about the same thing :)

View attachment 92758
Hi, sorry I was out of town for a week.... (touching grass in Yosemite)

Yeah - those numbers aren't updating when I click the "get transform" - I'll try and enter manually - your screen shot actually helps a lot!
 

obsuser2023

New Member
Great app. Can I report a small bug for version 1.21.0?

Macro - video - match pattern, defaults to "cross correlation" no matter what u choose.

So if you change it to "correlation coefficient", close OBS and open, it goes back to "cross correlation". Tested on 2 windows PCs and new macros.

Thank you again for this amazing plug in.
 

Warmuptill

Active Member
Warmuptill updated Advanced Scene Switcher with a new update entry:

Minor changes and bug fixes

Changes:​

  • A confirmation prompt will now appear even when deleting only a single macro.
  • Removed backwards compatibility for old versions of the "Studio mode" action.
    This should prevent the log messages did not insert duplicate action entry with name "Studio mode" from appearing.
  • A warning message will now be displayed if a plugin of the advanced scene switcher (e.g. the video condition) fails to load.

Fixes:​

  • Resolved...

Read the rest of this update entry...
 

AaronD

Active Member
I'm a little bit behind now - 1.20.1, compared to yesterday's 1.21.1 - so this might have been fixed already. Or it could be a problem in OBS and not the plugin. Anyway, I noticed that an audio source fade over 0.50 seconds has a pronounced "zipper" effect. I think I counted 5 distinct pops over that time. (Adv. SS is running every 50ms) Mute/unmute has a single pop that sounds about the same.

My use is probably more of a challenge than most, in that it's much harder to hide the "zipper" in the original content, because it's a pure sine wave that is filtered out later. It's digitally generated, so its own harmonic content (distortion) is practically zero, and the filter is digital with the same clock, both of which make it easy to pick back out of a mix like I'm doing. It's not meant to get to the speakers, but if it misbehaves, then the misbehavior does.

My reasons to do that are:
  1. The WebSockets weren't getting through reliably from one copy of OBS and Adv. SS to another, even on the same machine. Most of the time they would, but then it would miss one, and the incomplete transition would create an audio feedback loop. After several iterations that eventually ended up just spamming the connection constantly (which did work, but also made it hard to override the receiving end manually), I switched to an audio trigger instead of WebSockets.
  2. I'm using more audio channels now than OBS really supports. My end goal is stereo, but with different mixes going to different places, I need to keep things separate and not mix them too early. OBS does *not* do multichannel very well, despite having the option! Not when it's feeding a loopback to another app at least, instead of a direct stream or recording. So I moved the entire audio chain into the DAW, which means that I need to generate control signals from OBS to control the DAW.
So as it is now, my DAW generates a pure sinewave at the extreme end of the audio spectrum (doesn't matter which end; they both work the same, with the same problem), then OBS picks that up as two different global audio sources, pans them hard to either side, mutes or passes each one to make a 2-bit (4-state) "mode indicator", and mixes that with whatever legitimate soundtrack I have on its way out the Monitor and back to the DAW. The DAW then has a crossover to separate the audio from the control signal (same as the crossover in a home stereo or a pro PA rig, but much steeper / sharper / more aggressive to get some good separation). The audio goes on down that chain, and the control goes to some sidechains in the DAW to turn some things on or off like OBS used to, and to the other copy of OBS, where Adv. SS now uses the Audio condition instead of WebSockets to do the mode switch.

The problem is that the mute-pop - or series of pops from a fade-zipper - cover the entire audio spectrum regardless of the original content, and so they show up on the soundtrack side of the crossover and continue on down that chain, regardless of whether I use the top end or the bottom end of the spectrum. It's not harmonics of the original sine, which would be entirely above the original frequency (if it were, then a 20kHz sine would be a convenient way to fix it, but it doesn't). It's a completely new signal that has nothing to do with the original, I suspect because two consecutive samples have vastly different values.



I've also thought about treating this as an XY problem and sending control signals directly from OBS to the DAW. Open Sound Control (OSC), for one example, or WebSockets again. But having seen what the WebSockets did originally, I still like the out-of-band audio idea a lot better!



OBS 29.0.2
Adv. SS 1.20.2
Ardour 6.9.0~ds0-1build1
Ubuntu Studio 22.04 LTS
 

AaronD

Active Member
I'm a little bit behind now - 1.20.1, compared to yesterday's 1.21.1 - so this might have been fixed already. Or it could be a problem in OBS and not the plugin. Anyway, I noticed that an audio source fade over 0.50 seconds has a pronounced "zipper" effect. I think I counted 5 distinct pops over that time. (Adv. SS is running every 50ms) Mute/unmute has a single pop that sounds about the same.
I did some more testing, and it seems like an OBS problem, not the plugin. Manually muting and dragging the volume control does the same thing.

So I'm back to wondering now about the reliability of network comms in Adv. SS, given that WebSockets from one copy to another on the same machine is not reliable. If the sending part of Adv. SS is fine, and the transport is fine, and only the receiving part of Adv. SS needs work, then using Ardour for the receiving end might be okay? Not sure how to test that theory without a debugging environment.



Anyway, for controlling Ardour, other DAW's, physical consoles, and other audio tools, what would you think of adding support for OSC? Commands first, ignoring the response, then possibly eventually adding the response later as a condition.

I ended up writing a command-line utility to send OSC commands over UDP to a specific IP:port, all of which comes as arguments, so now I can control a Behringer X32 console from the Run action in Adv. SS, but it would be more convenient to have OSC built into Adv. SS.

@Warmuptill I can PM you the source for that utility if you'd like to use it for a starting point. It's pared down from a GUI app with wxWidgets that also controls that board, so it still has some remnants of that, but it should still be readable enough.
 

Warmuptill

Active Member
Just for completeness:
The fade does indeed perform a volume changes at a fixed interval of 100ms.

So I'm back to wondering now about the reliability of network comms in Adv. SS, given that WebSockets from one copy to another on the same machine is not reliable. If the sending part of Adv. SS is fine, and the transport is fine, and only the receiving part of Adv. SS needs work, then using Ardour for the receiving end might be okay? Not sure how to test that theory without a debugging environment.
If verbose logging is enabled the advanced scene switcher should log when it is sending out websocket messages and receiving them.
Maybe that could help in figuring out which message gets lost / ignored?

Anyway, for controlling Ardour, other DAW's, physical consoles, and other audio tools, what would you think of adding support for OSC? Commands first, ignoring the response, then possibly eventually adding the response later as a condition.

I ended up writing a command-line utility to send OSC commands over UDP to a specific IP:port, all of which comes as arguments, so now I can control a Behringer X32 console from the Run action in Adv. SS, but it would be more convenient to have OSC built into Adv. SS.

@Warmuptill I can PM you the source for that utility if you'd like to use it for a starting point. It's pared down from a GUI app with wxWidgets that also controls that board, so it still has some remnants of that, but it should still be readable enough.
Sure that would be much appreciated! :)
I intended to start work on supporting MIDI devices anyway so that fits right in.
 
Top