Automation of lower third - easiest way?

Hey @MiniMattersEL , was it a solution?

2 Likes

About to get to work on this—thank you! (We’re on EST in Maryland, US.) will report back!

2 Likes

Don’t worry. I replied to you (this morning) at 3am. :slight_smile: :heart:

2 Likes

Hi! I believe I get the logic and syntax of this now, having read everything carefully. But it’s not working.:frowning: I have the layer set Melange 4 to include automation going live. When I click to recall the layer set, this indeed launches the script. But even if I have the split screen set to Solo A or any of the others, it will not produce the proper lower third. And definitely, it’s not triggering the lower thirds I want when switching among A, B C and D solos. Here’s the latest, with only the syntax corrections you made, and some abbreviation of the API endpoint lengths to just the latter part, which instructions said was permitted. Sorry that I can’t figure this out - this seems like exactly the task the automation is made for!

sleep(5)

ifLayerData(“5CBB258F-D792-4CD9-9E96-E67170A9EBF4”,“data.attributes.input-values.tvGroup_Control__Solo_A”,"==",true)
layerOn(C1CAEB84-4710-4225-AA55-B63961153FC6/variants/E6E169D0-213E-4364-884C-D117D927E0E8)
else

ifLayerData("5CBB258F-D792-4CD9-9E96-E67170A9EBF4","data.attributes.input-values.tvGroup_Control__Solo_B","==",true)
layerOn(C1CAEB84-4710-4225-AA55-B63961153FC6/variants/5BA63D1C-C1EE-425E-BB34-2238BA927759)
else

    ifLayerData("5CBB258F-D792-4CD9-9E96-E67170A9EBF4","data.attributes.input-values.tvGroup_Control__Solo_C","==",true)
    layerOn(C1CAEB84-4710-4225-AA55-B63961153FC6/variants/03C4069E-FA78-452C-A092-37B901717F2B)
    else

        ifLayerData("5CBB258F-D792-4CD9-9E96-E67170A9EBF4","data.attributes.input-values.tvGroup_Control__Solo_D","==",true)
        layerOn(C1CAEB84-4710-4225-AA55-B63961153FC6/variants/41B27D01-491B-41F6-BD84-FDAE5B220558)
        endif
    endif

endif
endif

By the way, it runs through the Sleep for 5 seconds and then it times out repeatedly on the IfLayerData variables. Thanks for your thoughts.
-Elissa

2 Likes

Thank you very much for your post, @MiniMattersEL .
I also tested it. It seems to be that there is a bug in v1.32 of Automation Layer. Unfortunately, it seems to be that the part about the boolean values is broken. :sob::sob::sob::sob: I hope that it gets fixed soon. (I wrote a Bug report to Boinx.)

2 Likes

@MiniMattersEL , let me think, how you could work around:

OK, this is a solution:

Add a Script-Layer: (Manual Mode)

SplitScript

  • Show All
  • Person One
  • Person Two
  • Person Three
  • Person Four

At the LayerSets, start the equivalent Script together with the SplitScreen. Inside the Script-LayerVariants, use httpRequest() to activate the boolean-switches inside of the split screen. (at on Live). BTW, this technique makes the SplitScreen-Layer compatible with LayerSets. :slight_smile:

Let your LowerThirds script trigger ifLayerIsOn() (instead of ifLayerData) and reference the SplitScript-Layers.

2 Likes

Thank you for letting me know about the bug and discovering it, in fact. Certainly saves time and frustration/confusion! will look at your workaround and see if I can grasp it. Back to you later or tomorrow.
Elissa

3 Likes

I’m looking forward to hearing from you.

Here a demo, which sould inspire you. :hugs:

Download:
https://drive.google.com/file/d/16upud-BmGh1NT_Yi_8eQdnbA3KW21ZU3/view?usp=sharing

It works.

You do not have to use the “all”-option of the Split Screen together with a lower third to make it work, maybe there just happens at the Script nothing else, then the movement between a fullscreen back to the splitt screen. Because of the bug, we cannot do a propper compare before switching. So, we just switch all “off” (in a sequence). This does not harm the performance in this case, so #kismet. :slight_smile:

2 Likes

So happy to see this! My efforts had failed thus far—I didn’t know what I needed to do with the http function and was asking some others. I will re-engage with new energy tomorrow! I think this is a needed automation that shouldn’t be so hard. As you may know, I’m an editor way way more than a programmer, but willing and interested to try scripts to a certain extent. I’m sure your example is going to help me. Thank you! What is your main profession?
Elissa

2 Likes

You’re welcome,
that’s a good question: I cannot decide for a main profession, everything is - somehow - connected together: Most of the time, I’m a trainer/teacher (especially for German as a foreign / secondary language), artist and mental mind fu!#er, who’s exploring sense and nonsense of existance.

Over the time I collected lots of experience related on live broadcastings (TV) and streaming, based on software switching. In lack of a huge budget, scripting came into the play. (It’s the very fast finger, I’m not able to use myself, while presentations/shows. This ended up with up to 95% Automation of a show production, and 100% Automation while running a show with fixed or partial fixed show parts/plot points.)

However, it’s still fun to do. Please don’t worry about confusion/frustration: With the httpRequest()-command, you can change a boolean switch state of a layer’s variant, or execute further API-commands (like starting/stopping a stop watch, instant recording, cycleThroughVariants e.t.c.)

Syntax:
httpRequest(API-ENDPOINT)

Please compare these lines, you’ll immediately see the API-Endpoint of a layer-Variant, and the syntax to switch each of the toggles “off”.

httpRequest(http://127.0.0.1:8989/api/v1/documents/510577608/layers/5FC57440-C77A-40E7-9300-8ED0058AA929/variants/D00C0921-9A6E-422A-81E4-A88C0A9BC11F?include=data.attributes.input-values&fields[input-values]=tvGroup_Control__Solo_A&update=%7B%22input-values%22%3A%7B%22tvGroup_Control__Solo_A%22%3Afalse%7D%7D)
httpRequest(http://127.0.0.1:8989/api/v1/documents/510577608/layers/5FC57440-C77A-40E7-9300-8ED0058AA929/variants/D00C0921-9A6E-422A-81E4-A88C0A9BC11F?include=data.attributes.input-values&fields[input-values]=tvGroup_Control__Solo_B&update=%7B%22input-values%22%3A%7B%22tvGroup_Control__Solo_B%22%3Afalse%7D%7D)
httpRequest(http://127.0.0.1:8989/api/v1/documents/510577608/layers/5FC57440-C77A-40E7-9300-8ED0058AA929/variants/D00C0921-9A6E-422A-81E4-A88C0A9BC11F?include=data.attributes.input-values&fields[input-values]=tvGroup_Control__Solo_C&update=%7B%22input-values%22%3A%7B%22tvGroup_Control__Solo_C%22%3Afalse%7D%7D)
httpRequest(http://127.0.0.1:8989/api/v1/documents/510577608/layers/5FC57440-C77A-40E7-9300-8ED0058AA929/variants/D00C0921-9A6E-422A-81E4-A88C0A9BC11F?include=data.attributes.input-values&fields[input-values]=tvGroup_Control__Solo_D&update=%7B%22input-values%22%3A%7B%22tvGroup_Control__Solo_D%22%3Afalse%7D%7D)

Replace this to your “variant” of the Split Screen:

 http://127.0.0.1:8989/api/v1/documents/510577608/layers/5FC57440-C77A-40E7-9300-8ED0058AA929/variants/D00C0921-9A6E-422A-81E4-A88C0A9BC11F

The “switch-on”-commands look similar:

// Where is the "true"?
httpRequest(http://127.0.0.1:8989/api/v1/documents/510577608/layers/5FC57440-C77A-40E7-9300-8ED0058AA929/variants/D00C0921-9A6E-422A-81E4-A88C0A9BC11F?include=data.attributes.input-values&fields[input-values]=tvGroup_Control__Solo_A&update=%7B%22input-values%22%3A%7B%22tvGroup_Control__Solo_A%22%3Atrue%7D%7D)   

(…at the very end of the command)

I know, that inside of the command are several parameters present, so called sparse-parameters, also an update parameter. Currently, I do not fully understand how to write it, but I use copy and paste to fiddle it together. :smiley:

I’m not a programmer either, but it feels so fancy to use it. :joy::joy::joy:

Notice: httpRequest needs a full URL, beginning with http:// - This is not save for a document which is being saved as. If you “save it as”, the document gets a new DocumentID, this breaks that connection.

BUT:
You could abuse layerOn() instead. This does only work, if you terminate the API and PARAMETERS with an ending #-character.

So, instead of

httpRequest(http://127.0.0.1:8989/api/v1/documents/510577608/layers/5FC57440-C77A-40E7-9300-8ED0058AA929/variants/D00C0921-9A6E-422A-81E4-A88C0A9BC11F?include=data.attributes.input-values&fields[input-values]=tvGroup_Control__Solo_A&update=%7B%22input-values%22%3A%7B%22tvGroup_Control__Solo_A%22%3Afalse%7D%7D)

you’d use:

layerOn(5FC57440-C77A-40E7-9300-8ED0058AA929/variants/D00C0921-9A6E-422A-81E4-A88C0A9BC11F?include=data.attributes.input-values&fields[input-values]=tvGroup_Control__Solo_A&update=%7B%22input-values%22%3A%7B%22tvGroup_Control__Solo_A%22%3Afalse%7D%7D#)

Did you see the #-char at the end? It’s important. It ignores the rest of the internal command magic.

1 Like

Thank you so much. I am just now getting to this. Spent the day traveling to a mass vaccination site, where the computers broke down. It was a very long day, but I have the first dose of a vaccine at least! I look forward to learning more through what you have prepared.

1 Like

My mind is full after a couple of hours of working on this–as yours must have been as well. I’ve been trying to copy over my lower thirds and formatting into your tvshow. I’ve got the lower third for person A working, though still need to tweak the layout a bit and it takes a bit too long to come in and then comes in a second time later if on too long. How can I limit it to once per toggle?

Another issue is that on the “ALL” setting, I copied in my gradient background and even added it to the layer set. You can see it live just under the split screen in this screenshot.

Yet it won’t appear in the program output. However, my client logo (the square burgundy bug in the upper left) will appear using the same method of just copying the layer. into the model show you made. Thoughts on why this would be missing but not the logo? That is confusing to me. I would also like to eliminate the group Lower Third, as won’t need that. I think this is going to take some more hard thinking, but if you’ve got any simple answers to the above for a start, that would be helpful…We record on Thursday, so hoping to have adjusted by then (or just go with manual…) Thank you. By the way, Barbara had asked if you use PayPal so that we can send you some thank you payment. Otherwise, we’ll find another way.

To have it once, just activate the script at the on Live section, insread of the “while live” section.

With sleep($seconds) you can implement further or less delay. If the LT animation takes too long, you can modify the layer settings for the in-transition. (text delay and other options).

If you want to deactivate the Lower Third for the group, just do not include the command for the group. In my example, it’s the first one.

Script solutions are solutions, which are depending on a certain document. A copy from this to another document could not work. API-IDs are different.

If you want to change positions (on the fly), you have to use a different setup for your document. (see demo for Barbara).

If you want to switch the signet or a background too, you have to add lines to do so. layerOn(), layerOff(). Include commands for it everywhere, you want to auto switch. Alternatively, you can include or exclude the signet at the layer sets. This could be easier.

Btw, my demo for you was created in less than 8 minutes, please don’t worry. Thank you for your support. I already sent my details together with the demo download link to Barbara (and in cc to you.). :hugs:

You could change your scripts to this:

  • wait some time
  • switch off logo
  • turn on lower third
  • wait some time (e.g. 6 seconds, because the Lower Thirds need 6 seconds
  • turn on logo again

Add more “sleeps” between these steps if necessary.

A pity, but scripting isn’t just copy and paste. It will help to write down, what the script should exactly do. Some scripts can be redundant, except of one or two - here a line related to a special lower third - lines. That’s typical.

Did it!!! (with one minor issue–I think) Auto Lower Thirds Almost There - minimatters
With your latest help, this now does exactly what I wanted - being able to get the lower thirds to come on automatically when I switch to a solo speaker in the split screen, yet also allowing me to move from one speaker to the other or back to the 4-person split screen. And without both having to manage both the change of speakers and lower thirds. I have to focus on many things, so this will help take a few things out of the equation and make for a consistent look that will apply to many projects! Thank you so much for helping me get to this point and adapt what you created. My final issue, I think, is just getting the lower thirds to come on sooner. I’d really like them to come on right away, particularly as people will be speaking very briefly in the planned project. As you can see, the A lower third doesn’t come in until about :28 into the recording. I only have a 1 second sleep at the end of the end of the Lower Third Automation script. (// add additional seconds to make it not soooooo strict
sleep(1). Ideas on how to get the lower third to act faster? Could retaining the ALL Splitscreen script be an issue? Again, thank you. There’s lots of potential here, but also a steep learning curve initially for a non-programmer.

#woooohoooo!
A script for mimoLive is similar to the script for the director of photography and/or the editor and their assistants and/or … . Yes, there is lots to think about, but once it’s written, this magic happens on point. So, for shows of any budget, the persons who work for the show, can focus their capabilities to/on live situations, instead of constantly checking a real tough/complex paper script.

But how often should the LTs be shown while fullscreen on a special person? If it’s once per their state in full screen, why don’t you simply do this?

(on Live)

Variant A:

  • switch to Solo Person A
  • wait 6 seconds
  • activate lower thirds for Person A

Repeat this for all Variants :slight_smile: (But keep in mind, that there are two actions different for Person B).

Notice:
The ALL-Option is simply switching all Solos off. Also these, which are not currently in solo-mode. It’s some kind of “in case”-off-switching. :hugs: It could make also sense to switch the layer itself on, in case of it’s off.

  • activate SplitScreen
  • deactivate all Solos

By the way, this seminar could be interesting for you:

Finally, you could manage, that before a change, the LT is being shown a second time, the script waits 10 seconds and then it switches to the next person. But this needs some extra logic to tell mimoLive, which person should be switched next, after a total amount of 10 seconds.

Now you know exactly what I noticed by claiming “there is only a more or less complex way”. :hugs::hugs:

Just wanted to say hi. I tried to make some changes and messed things up a bit. And it’s been a busy day. I will try again this evening or tomorrow morning.

Got it. I had done a Save As and messed things up. But I see what you meant now about everything being tied to the particular show. Thanks for mentioning that - only caught it when having problems and going back to reread. Latest version to speed up the lower thirds coming on…I have now used the “Copy URL to Switch on” in the split screens for Persons A-D to switch on each variation of the split screen, and Copy URL to Trigger Button on top of the Show All button for the 4-person view on my split screen. And I made the lower third variants just live within each layer set, selecting the variant of choice. Quicker Lower Thirds ScreenFlow - minimatters

I do think I’m getting this AT LAST! THX.

After the split screen script for Vicky, you could add this:

  • sleep(6)
  • layerOn(LowerThirdsAPI)

Then you can exclude it from the layer set and the LT is being started time shifted by 6 seconds. If it works, you could do it for the other LTs too. :hugs:

Johannes, Now that I understand more, I was able to make this change quite easily on the first try! I ended up adding just 2 seconds to each, as my speakers are only speaking for a short time. Thank you. I think I will start to be able to use the scripting proactively moving forward and also help Barbara.

#yeah! Thats great! Congratulations for your first success in being a programmer, without being a programmer! :hugs::hugs::hugs::heart::heart::heart:

1 Like