any idea? @WarmuptillHi, maybe you can help me with something
It's probably very simple and I'm not realizing how to achieve it.
In a scene A I have 4 videos, and I need the following to happen
video 1 - play
when it finishes playing
video 2 - play
when it finishes playing
video 3 - play
when it finishes playing
video 4 - play
when it finishes playing
Change scene to "X scene"
I clarify: "Sequence" does not work, it only runs the first macro but does not continue with the following ones automatically for it to do so I must change it manually
I clarify something else,
VLC playlist does not work either, because in some videos that have audio at the beginning, it plays them cut off, it is not fluid. between video and video
I have achieved it by making 4 scenes with 1 video each, and then a macro that controls the playback when it ends to change the scene.
Even so, I am looking to simplify it into a scene and a macro, which is why I am asking for help here.
thanks for your time.
Your "workaround" here, is what I would do anyway:video 1 - play
when it finishes playing
video 2 - play
when it finishes playing
video 3 - play
when it finishes playing
video 4 - play
when it finishes playing
Change scene to "X scene"
I have achieved it by making 4 scenes with 1 video each, and then a macro that controls the playback when it ends to change the scene.
Even so, I am looking to simplify it into a scene and a macro, which is why I am asking for help here.
thanks for your time.
Your "workaround" here, is what I would do anyway:
(last macro in that set of three)Advanced Scene Switcher
Is there a way for this to end the stream if a raid out happens?obsproject.com
I have lots of scenes with few things in each, usually just one in each, and switch scenes instead of sources. Seems to work much better that way, like PowerPoint slides except with live media.
If you're getting lost with so many "slides"/scenes, use their names to help organize. I have a naming convention for a different purpose - some of my macros use regexes on the current scene name to do different things for different categories - but I think you get the idea:
View attachment 103501
View attachment 103502
View attachment 103503
The Open Sound Control action controls the DAW that handles all of my audio. OBS is silent except to get a video soundtrack out of it and into the DAW, and to get the final mix out of the DAW and into the recording/stream.
The Websocket action controls a second instance of OBS, which also has Adv. SS, so that all the production work can be done from this one.
This rig has two simultaneous outputs, that are different enough to need two complete instances. I *might* be able to use the projector and Source Record plugin creatively to make one instance do both, but it's a lot more straightforward to have a dedicated instance for each, and connect their controls like this.
One of the quotation mark characters results in the string not being valid JSON.I checked - I replaced the names of folders and files exclusively with Latin ones. Unfortunately, it doesn't work.
[{"hidden":false,"selected":false,"value":"/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/2 Dafne monaster.jpg"},{"hidden":false,"selected":false,"value":"/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/3 Dafne monaster.jpg"},{"hidden":false,"selected":false,"value":"/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/4 Dafne monaster.jpg"},{"hidden":false,"selected":false,"value":"/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/5 Dafne monaster.jpg"},{"hidden":false,"selected":false,"value":"/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/6 Dafne monaster.jpg"},{"hidden":false,"selected":false,"value":"/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/7 Dafne monaster.jpg”},{"hidden":false,"selected":false,"value":"/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/1 Dafne monaster.jpg"}]
”
is used instead of a "
.[
{
"hidden": false,
"selected": false,
"value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/2 Dafne monaster.jpg"
},
{
"hidden": false,
"selected": false,
"value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/3 Dafne monaster.jpg"
},
{
"hidden": false,
"selected": false,
"value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/4 Dafne monaster.jpg"
},
{
"hidden": false,
"selected": false,
"value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/5 Dafne monaster.jpg"
},
{
"hidden": false,
"selected": false,
"value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/6 Dafne monaster.jpg"
},
{
"hidden": false,
"selected": false,
"value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/7 Dafne monaster.jpg"
},
{
"hidden": false,
"selected": false,
"value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/1 Dafne monaster.jpg"
}
]
I think I will need more information about what you are trying to set up.Hi everyone
Can sombody help me how to do the next function:
"wait until scene is current then do"
I guess you could simply set up a number of macros similar to the following:any idea? @Warmuptill
Thank you, but what I need is for each time I go to scene A to play a different one randomly, not to repeat it until everyone has passed. Is it possible?One of the quotation mark characters results in the string not being valid JSON.
A”
is used instead of a"
.
This is the reason why nothing happens.
You can find the fixed JSON string here:
Code:[ { "hidden": false, "selected": false, "value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/2 Dafne monaster.jpg" }, { "hidden": false, "selected": false, "value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/3 Dafne monaster.jpg" }, { "hidden": false, "selected": false, "value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/4 Dafne monaster.jpg" }, { "hidden": false, "selected": false, "value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/5 Dafne monaster.jpg" }, { "hidden": false, "selected": false, "value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/6 Dafne monaster.jpg" }, { "hidden": false, "selected": false, "value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/7 Dafne monaster.jpg" }, { "hidden": false, "selected": false, "value": "/Users/alexeyshadrin/Dropbox/@ 1 PROFILE SCHOOL/@ NATIONAL ART/TEMP/1 Dafne monaster.jpg" } ]
I think I will need more information about what you are trying to set up.
In general if you want to "wait for a scene" you should probably use the "Scene" condition type.
View attachment 103506
I guess you could simply set up a number of macros similar to the following:
View attachment 103507
View attachment 103508
View attachment 103509
View attachment 103510
You might have to configure your media sources to not automatically play when switching to Scene A.
Hope that helps! :)
I might have done a bit of a stretch all at once.Thank you but I don't understand, I don't think it's what I really want to do... you are probably referring to another question that may have been asked.
That's the first time I've seen that you wanted random.Thank you, but what I need is for each time I go to scene A to play a different one randomly, not to repeat it until everyone has passed. Is it possible?
Understood. There was an idea that couldn’t use regular text editors. I tried a specialized JSON-editor and it worked. Thank you very much!One of the quotation mark characters results in the string not being valid JSON.
A”
is used instead of a"
.
This is the reason why nothing happens.
You can find the fixed JSON string here:
Yes, you are right, I want to make function's work when I have sequence of scenes and I want to record all of them when the sequence is changed.I think I will need more information about what you are trying to set up.
In general if you want to "wait for a scene" you should probably use the "Scene" condition type.
So...every time you transition from scene A to scene B, you want the recording to toggle? On that specific transition, if it was running, you want it to stop; and on the same transition, if it was stopped, you want it to start?Yes, you are right, I want to make function's work when I have sequence of scenes and I want to record all of them when the sequence is changed.
I made macros:
- to turn record on when the 1st scene is current ,last scene is previous and recording is off;
- to turn record off when the 1st scene is current ,last scene is previous and recording is on;
Now Im looking for solution how to check scene sequence with timeout and if it had changes turn record on the 1st scene starts, and turn record off when the last scene ends.
You could use this example:Question to dear Warmuptill: is it possible to assign a variable the current date - day and day of the week? Thank you!
Soo...:@Warmuptill, et. al.
Before I jump into a rather detailed set of questions I'd first like to say I greatly appreciate Adv Scene Switcher, and the time and effort you've obviously put into it.
I hope I'm not overlooking something, but after spending several days digging through Adv Scene Switcher functionality (and searching) I can't find a "clean" way to do something that seems fairly common.
We stream twice a week -- once on Wednesday and again on Sunday (worship services). The Wednesday stream has a dedicated stream key and the Sunday stream has a dedicated stream key. There's nothing else different between the services (as far as OBS goes), so only one set of (rather involved) macros is needed to manage the OBS life cycle for both services (which are triggered by hotkeys, either directly, or indirectly through an AutoIT menu).
So..., in our case it seems like we need a way to conditionally set an Adv Scene Switcher variable based on day of week -- in the actions of a macro (not as the trigger). So the hotkey-triggered macro that manages the livestream startup for both Wednesday and Sunday can conditionally set the right stream key based on the day of week before starting the livestream -- within the list of actions for that macro.
I initially tried using a different macro (triggered by date / day of week) to set an Adv. Scene Switcher variable to the appropriate stream key (and then the macro that starts the livestream used that variable to set the OBS stream key before starting the stream). But..., if "Perform actions only on condition change" is enabled, Adv. Scene Switcher doesn't always run a macro triggered only on day of week (my guess is that if Adv. Scene Switcher isn't running when the day of week actually changes at midnight, it doesn't recognize the macro hasn't fired yet when OBS starts on a different day). If "Perform actions only on condition change" is not set, there is no reliability issue because the macro is running every 300ms, 100% of the time -- which is almost certain to occur before the livestream startup macro is initiated by hotkey. But..., having a macro run 3x a second 100% of the time just to make sure a variable is set accurately based on day of week, doesn't seem like a particularly clean/elegant approach.
If a macro triggered only on day of week shouldn't immediately trigger the next time OBS is run on a different day by design (the macro is ordered above the macro that manages livestream start), than it seems like the next most-elegant way(s) of potentially addressing this need would be:
From what I can tell the ability to do things conditionally within macro actions is currently a bit limited in this regard(?) -- unless I missed something?
- Having a way to set Adv Scene Switcher variables to a program's stdout output (so we can call PowerShell to produce a needed value).
- Or, a way to set Adv Scene Switcher variables to a program's exit code, and then:
- Have a way to conditionally set an Adv Scene Switcher variable based on another variable's value (preferably with a value for true and a different value for false).
So right now I'm resigned to thinking the only way to cleanly set the stream key based on day of week is to have AutoIt set an environment variable to it before launching OBS. (But that's also not as clean as I'd prefer because it means AutoIt has to know about stream keys and, the environment variables won't be set if OBS is started separately from AutoIt.)
TIA...
I've been saying occasionally for a long time, that this has already become its own programming language. Probably even Turing Complete. Treating it like that, reveals some glaring omissions compared to most programming languages, one of which is inline conditionals.Have a way to conditionally set an Adv Scene Switcher variable based on another variable's value (preferably with a value for true and a different value for false).
while(true)
{
sleep(SCAN_INTERVAL);
if (MACRO_1_CONDITIONS)
{
MACRO_1_ACTION_1;
MACRO_1_ACTION_2;
MACRO_1_ACTION_3;
...
}
if (MACRO_2_CONDITIONS)
{
MACRO_2_ACTION_1;
MACRO_2_ACTION_2;
MACRO_2_ACTION_3;
...
}
if (MACRO_3_CONDITIONS)
{
MACRO_3_ACTION_1;
MACRO_3_ACTION_2;
MACRO_3_ACTION_3;
...
}
...
}
while(true)
{
sleep(SCAN_INTERVAL);
if (MACRO_1_CONDITIONS)
{
MACRO_1_ACTION_1;
MACRO_1_ACTION_2;
MACRO_1_ACTION_3;
...
}
if (MACRO_2_CONDITIONS)
{
MACRO_2_ACTION_1;
if (SOMETHING_ELSE) // <--------
{
MACRO_2_ACTION_2;
MACRO_2_ACTION_3;
}
MACRO_2_ACTION_4;
...
}
if (MACRO_3_CONDITIONS)
{
MACRO_3_ACTION_1;
MACRO_3_ACTION_2;
MACRO_3_ACTION_3;
...
}
...
}
if
's and use python's logic to combine them. Actions would also be predefined functions in the new Adv. SS library...I think I know what you need. Look. This won't solve your problem specifically, but it's a general principle:@Warmuptill, et. al.
Before I jump into a rather detailed set of questions I'd first like to say I greatly appreciate Adv Scene Switcher, and the time and effort you've obviously put into it.
[...]
The macro should be still be executed at least once when the plugin is first started.But..., if "Perform actions only on condition change" is enabled, Adv. Scene Switcher doesn't always run a macro triggered only on day of week (my guess is that if Adv. Scene Switcher isn't running when the day of week actually changes at midnight, it doesn't recognize the macro hasn't fired yet when OBS starts on a different day).
The performance impact of those date checks / variable assignments should be minimal. (Just in case that is one of your concerns.)If "Perform actions only on condition change" is not set, there is no reliability issue because the macro is running every 300ms, 100% of the time -- which is almost certain to occur before the livestream startup macro is initiated by hotkey. But..., having a macro run 3x a second 100% of the time just to make sure a variable is set accurately based on day of week, doesn't seem like a particularly clean/elegant approach.
This should be possible already thanks to @Destroy666! :)
- Having a way to set Adv Scene Switcher variables to a program's stdout output (so we can call PowerShell to produce a needed value).
- Or, a way to set Adv Scene Switcher variables to a program's exit code
Before I jump into a rather detailed set of questions I'd first like to say I greatly appreciate Adv Scene Switcher, and the time and effort you've obviously put into it.
From what I can tell the ability to do things conditionally within macro actions is currently a bit limited in this regard(?) -- unless I missed something?
It is indeed very limited.glaring omissions compared to most programming languages, one of which is inline conditionals
It is a great idea and sounds like fun project but I simply lack the time to implement this.At that point, why not add a python tab? It's already a mature language with a TON of features in addition to this, and lots of existing documentation and tutorials, and designed for beginners to pick up quickly and "just use". Each condition would then be a function with arguments/parameters that returns true or false, and you'd put them in your ownif
's and use python's logic to combine them. Actions would also be predefined functions in the new Adv. SS library...
A "code generator" might be useful as well, mostly to discover what exists to be able to use, and that could be heavily based on the existing GUI. Just limit the generator to one condition or one action, and a button to either put on the clipboard or insert at the cursor, the function call that corresponds to what it's set for at that moment.