Automation — can we bind declared variables to a Layer's UI inputs

Thanks for the Masterclass on Automation @Achim_Boinx and @Oliver_Boinx.

There was discussion about accessing media metadata, or layer info like the length of a video.

For the instant replay concept in a sports broadcast, video may be different lengths so it would be good if a global or local variable could checkout the source in the playback layer and time the end animation wipe (stinger) to come it at the correct time.

Even more useful it might be to be able to bind a global variable to one of a Layer’s input variables, be it an enumerated list, number, text, colour or whatever.

Imagine having an automation that cycles ads, you could have a custom layer that lets you select the slide/video playlist to cycle through, the interval between ads, and the ad frequency (using the ‘minute’ function in automation).

So how much of that is possible? thanks for work on automation, when I was using ML a fair bit I was pretty much needing this kind of function (and layer sets which I requested and love to use now).

Currently you can create only static updates to layer properties. You need to craft a http://… request for the HTTP API of mimoLive to change a certain parameter of a layer and use the httpRequest() command of the automation layer to execute it. Read this article in the documentation to find some examples: https://docs.mimo.live/docs/examples-of-api-usage

Your request for dynamical changes involves two extensions to the scripting language in the Automation layer:

  1. We would need a way to fetch data from the HTTP API and put this data into variables
  2. We need a way to process/concatenate data in variables in order to build custom http/… urls that are driven by variables

Both are very useful and would empower a lot of possibilities in mimoLive!

Thanks for explaining it a little more @Achim_Boinx! I’ll take a look at the documentation soon.

So it seems like we can already do value setting in layers, for most types of variables like numbers, indexes, enumerated list indexes, colours and text strings.

But the getting of Layer Input values would require the API and scripting language extensions, is and is not currently supported in any form, is that right?

I think getting data from Layer inputs, especially numbers and text, but also enumerated list indexes and colours would be amazing for building very professional control room panels, and much easier than coding an ATEM switcher in C so would have lots of appeal, and could set up work for those of us who can master it. Clearly from the live stream you did last week some people want this kind of power but don’t want the learning curve associated with it.

Maybe you could proved non-coders with a “Record action” button like Adobe Illustrator, Photoshop etc have where you make a Marco just by using normal UI elements and it records them as code to be replayed and/or edited.

I feel like Mimo’s control and communication should probably be via OSC, like pretty much everything else uses. It is a natural fit for the kind of UI and data information that needs to be communicated.

1 Like

@Troy Something to take into consideration. However, OSC stands for “Open Sound Control” and I’m hesitant to make mimoLive dependent on something that wasn’t designed and intended for this purpose. But indeed the specs look like OSC is pretty close to our HTTP API.

Yes, Open Sound Control is the original name, but don’t get too caught up by that, it is used very broadly across all forms of media applications.

I use OSC with Cycling74 Max, VDMX5, Millumin, Resolume, QLab, Liine Lemur, and many more.

It really is a standard used for exactly this kind of thing.

You could use some kind of Timeline to control length (until the global variables are available):

You just need this:
Automation-Layer:

  • none
  • pre
  • while
  • stop
  • done

In an Automation-Layer below of this, define Variants for duration and its content that should be used.

Then, simply cycle through all on time.

1 Like