Advanced Scene Switcher

Advanced Scene Switcher 1.28.1

GalienCofC

New Member
I have a scene that when transition to it I would like to be projected full screen to a monitor. Then when I transition to another scene I would like to disable the projection automatically. I have been able to get the macro to project to the monitor but I cannot figure out how to disable the projection automatically when I switch to a different scene. This is what I have so far. Any assistance would be greatly appreciated.

1682344138786.png
 

red73

New Member
I'm new to this plugin.
I would like to make a macro for a recording with 2 scenes that keep changing every 30 seconds.
i manage to do the first 2 switches, but once i finish the code, i don't know how to tell it to :resume from beginning.

can you help me?
Attached is the macro I wrote
Thank you
 

Attachments

  • Schermata 2023-04-27 alle 11.57.43.png
    Schermata 2023-04-27 alle 11.57.43.png
    82.3 KB · Views: 22

red73

New Member
I'm new to this plugin.
I would like to make a macro for a recording with 2 scenes that keep changing every 30 seconds.
i manage to do the first 2 switches, but once i finish the code, i don't know how to tell it to :resume from beginning.

can you help me?
Attached is the macro I wrote
Thank you
SOLVED. Thank u
 

Attachments

  • Schermata 2023-04-27 alle 13.50.54.png
    Schermata 2023-04-27 alle 13.50.54.png
    9.9 KB · Views: 23
  • Schermata 2023-04-27 alle 13.51.03.png
    Schermata 2023-04-27 alle 13.51.03.png
    49.5 KB · Views: 22
  • Schermata 2023-04-27 alle 13.51.10.png
    Schermata 2023-04-27 alle 13.51.10.png
    49.6 KB · Views: 20

AaronD

Active Member
SOLVED. Thank u
That's pretty much what I would have had you do. And the advantage of doing it this way is you can "escape" the loop just by switching to something else, which I often consider an advantage over a straightforward timed sequence using the Wait action in a single macro.



One more thing that probably doesn't matter for this case specifically, but might for something else that you think of later, is the "only on change" checkbox in the header above the Conditions.

I'm surprised that your initial example didn't work, because without that box checked, it's *supposed* to loop while the Condition is true. There's no second Wait action in that example, so the second transition would get overridden immediately with the first. Maybe that's what you were seeing?

Anyway, with the "only on change" box checked, it only runs once when the Conditions become true, and not continuously. I use that for absolutely everything because none of my stuff is meant to repeat an individual macro.
 

Warmuptill

Active Member
I have a scene that when transition to it I would like to be projected full screen to a monitor. Then when I transition to another scene I would like to disable the projection automatically. I have been able to get the macro to project to the monitor but I cannot figure out how to disable the projection automatically when I switch to a different scene. This is what I have so far. Any assistance would be greatly appreciated.

View attachment 93418
I will try to look into it once if ind the time to do so, but I think there is no API for closing these projector windows again. (sorry about the delayed reply)

There's no second Wait action in that example, so the second transition would get overridden immediately with the first. Maybe that's what you were seeing?
That is very likely the reason as the transition type used seems to be the "cut" transition.
So the second scene was probably only visible for a few milliseconds if at all.
 

AaronD

Active Member
Sure, a build will be available here in a few minutes:
This build also contains the websocket race condition fix.
FINALLY got around to testing this. It seems to work. Thank you!



I think all I'm waiting for now is OSC for sound control, and VISCA for incidental camera control, both over UDP.
  • VISCA is entirely binary, and byte-oriented, but since I'm familiar enough with it already and I really don't need a lot, plus the messages are only a handful of bytes anyway, I'd be okay with doing it as generic UDP. Others might want something more user-friendly though.
    • There are other plugins and external apps that do a good job of this already. The idea for me is to send an "automated setup" message to each camera, and then let the normal tools do their job...though I can also think of some use-cases for Adv. SS's automation capabilities controlling PTZ's as part of the normal show...
  • OSC is also binary, and 32-bit word-oriented with mixed endian, and with embedded strings.



Also, what would you think of adding comments? So I can explain to someone else that reads my macros, or to myself later, what I'm doing, right there in the code.

The way that I did that, a long time ago, when I made a custom assembler for a custom instruction set, was to have a string field embedded in the instruction itself. 32-bit binary opcode + string. That string did nothing functional at all, and was intended purely for comments, that were stored as part of the program.

That seemed to work pretty well, except I should have put the text box for that string at the *top* of the individual instruction editor, instead of on the side like I did. No functional difference, just visual layout.
 

AaronD

Active Member
This is awesome, thank you! Is there a way to switch to a specific scene when face on cam is recognized?
There's the Video condition, which will at least match a still image. Haven't actually used it myself, so it probably does more that I'm unaware of. Maybe that gets you started?
 

Warmuptill

Active Member
This is awesome, thank you! Is there a way to switch to a specific scene when face on cam is recognized?
That should be possible with the Video condition's options to check if a given "object" is visible:
The plugins comes with a few different variants of OpenCV's face detection models so you can try what works best for you.
But it must be noted that the object detection models are running on the CPU and thus can be rather resource intensive.
 

mbreger

New Member
This is probably in this thread somewhere, but I'm having trouble with the install. I downloaded the newest version (1.21.1) and installed. Everything in the file is in my OBS folder, and I restarted both my computer and OBS. Advanced Scene Switcher does not show up in my tools. Can anyone help?
 

AaronD

Active Member
This is probably in this thread somewhere, but I'm having trouble with the install. I downloaded the newest version (1.21.1) and installed. Everything in the file is in my OBS folder, and I restarted both my computer and OBS. Advanced Scene Switcher does not show up in my tools. Can anyone help?
What version of OBS? The current version of Adv. SS needs OBS v28 or newer.
 

mbreger

New Member
What version of OBS? The current version of Adv. SS needs OBS v28 or newer.
That will do it. I'm on 27.2.4 only because the NDI plugin works great with this version. Is there a version of advanced scene switcher that works with this version of OBS?
 

AaronD

Active Member
That will do it. I'm on 27.2.4 only because the NDI plugin works great with this version. Is there a version of advanced scene switcher that works with this version of OBS?
Yes, there is, but compared with the current version, you probably don't want it! The functionality has exploded since then, so going back to that is...quite limiting to say the least.

But, the NDI plugin has been updated too, to work with OBS v28 and newer. I think you're much better off doing that!
One of my rigs has OBS v29 with NDI and Adv. SS.
 

mbreger

New Member
I'm working on that now. However, when I download the newest NDI plugin it's giving me the error "NDI runtime not found". Any suggestions?
 

mbreger

New Member
Thanks for your help AaronD.

I haven’t played around with it a lot yet, but I wanted to ask this ahead of time. 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!
 

AaronD

Active Member
Thanks for your help AaronD.

I haven’t played around with it a lot yet, but I wanted to ask this ahead of time. 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!
That rig with NDI and Adv. SS is actually for a church service! Faithlife Proclaim sends lower-thirds lyrics and Scripture to OBS via NDI, so that those stay synchronized with the audience displays. The NDI feed is actually full-screen over the cameras, and completely transparent except for those cases.

One of the things to watch out for in Proclaim is that new content, by default, is not transparent to that feed, which makes it cover our cameras, so we have to manually fix it every time we add something new. For the times that we forget to do that, I also have a pair of hotkeys to hide the NDI source and show it again.

For a direct copy of the audience displays, which includes any fullscreen content like pictures, videos, announcement slides, etc., I use a physical signal capture instead. Better control that way, for a dedicated Broadcast Engineer. The only exception to that is the Welcome Video, which is played directly in OBS from a local file, to the stream only.

Sound comes from a post-fade aux send in the FOH console, that feeds a USB line-in, as OBS's only audio source except for that video. NDI is there, but always muted.
Actually, it's more complicated than just a post-fade aux: it's actually several post-fade aux mixes that feed several matrices, or not, and one of those matrices goes to the stream. Another matrix goes to the lobby and hearing assistance transmitter. The primary difference there is whether it has the room mics (stream) or not (lobby/assist). Lots of compression involved too, at several different points along the way, to end up with a broadcast mix instead of a live one like what goes to the room.



For automation, I do a lot with Adv. SS, but the part that I think you're describing is and probably always will be manual. I consider it to be part of the art of live media, and "You can't automate art!"

For me, Adv. SS sets up the first scene and starts the stream automatically at 10:00am on Sunday, automates fading the audio in and out from the FOH board at various times (out for the Welcome Video and back in, for one example), turns the Noise Gate off during the service proper and back on again at the end, and other miscellanea that I started to forget out of boredom once I had it more-or-less figured out. And it handles the ending slides as an escapable sequence of scenes once I show the first one, which ultimately has it stopping the stream and closing OBS so that the trainees that I hope to have aren't playing whack-a-mole with multiple windows that don't come back automatically.

But seeing something relevant on a different source/scene and showing it to the audience, is part of the art to me.

You can't automate that, partly because the criteria keeps changing! Automation only works with well-defined triggers, and well-defined actions in response to those triggers. If you have both, then it works well. If you're missing one or the other, then you need someone who appreciates the art to do it manually.

You might try the Video condition, to try and do some sort of machine vision or pattern matching on the picture, or you might generate a control signal of some kind from your presentation software that Adv. SS can respond to (Websockets exist now in the standard release, and have for quite a while, and there's basic MIDI in the latest testing version, which you can get by scrolling up in this thread), but that's probably about it, short of a dedicated operator.
 
Last edited:

AaronD

Active Member
By the way, @Warmuptill, I see that there's an action to start a fullscreen projector, but I don't see one to open the Multiview window. If I could enforce that exactly one copy of each exists, regardless of whether they already do or not, that would be wonderful! Then even if someone does play whack-a-mole with the close buttons (see previous post), the next start can have it back to how it's supposed to be.

And a direct action to save everything and close OBS - same as the Exit button in the Controls dock - would be nice too, compared to calling a script from the Run action that does kill -TERM $(pidof obs), like I do now.

Thanks!
 

Warmuptill

Active Member
By the way, @Warmuptill, I see that there's an action to start a fullscreen projector, but I don't see one to open the Multiview window. If I could enforce that exactly one copy of each exists, regardless of whether they already do or not, that would be wonderful! Then even if someone does play whack-a-mole with the close buttons (see previous post), the next start can have it back to how it's supposed to be.
The option to open the multiview window is also part of the Projector action.
Unfortunately, there is no API to access the already opened projector windows, unless I am missing something.
So there is no way to close them / limit it to one instance.

And a direct action to save everything and close OBS - same as the Exit button in the Controls dock - would be nice too, compared to calling a script from the Run action that does kill -TERM $(pidof obs), like I do now.
A build with the option to do this will be available here in a few minutes:

ShutDown.PNG


It also gives the user a 10 second grace period to cancel the OBS shut down.
Let me know if this works for you!
 

AaronD

Active Member
The option to open the multiview window is also part of the Projector action.
Okay, I just missed it. Thank you!
1683038879379.png

Unfortunately, there is no API to access the already opened projector windows, unless I am missing something.
So there is no way to close them / limit it to one instance.
Hmm... Okay. I really don't want a pile of them! So I guess I'll not open more automatically, and include in the training how to get them back manually.
Unless looking for a window title can be an effective workaround???

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!
Nice! Good idea on the timeout to cancel too. Thank you!
 
Top