ATEM Load configuration/Macro via API

Ask software engineering and SDK questions for developers working on Mac OS X, Windows or Linux.
  • Author
  • Message
Offline

jBuchholz

  • Posts: 1
  • Joined: Tue Sep 01, 2020 2:43 pm
  • Real Name: Jan Buchholz

ATEM Load configuration/Macro via API

PostTue Sep 01, 2020 2:55 pm

Hi,

I have to apply a given XML configuration (taken from ATEM Software Control) to a connected ATEM programatically.

AFAIK there is no built in method that takes a given configuration and uploads it to the ATEM directly (the ATEM Control itself seems to be transmitting everything one by one).
Therefore I will have to transmit all relevant settings one by one. What I'm struggling with right now are macros. In the XML file macros are noted as a list of
Code: Select all
<Op>
but the API can only work with macros in their finished byte stream form.
As an example: this
Code: Select all
<Op id="FadeToBlackAuto" mixEffectBlockIndex="0"/>
is equvalent to this
Code: Select all
0800 a700 0000 0000

How can I transform the first one to the latter?
Offline

Ian Morrish

  • Posts: 523
  • Joined: Sun Jan 18, 2015 9:24 pm
  • Location: New Zealand

Re: ATEM Load configuration/Macro via API

PostMon Sep 07, 2020 7:32 am

There is an awesome .Net core library that has macro helper to generate the byte array for you
https://github.com/LibAtem/LibAtem

I use it from PowerShell like this (although I prefer to use my API based library for Windows PowerShell, the one above is cross platform).

Add-Type -Path .\bin\Debug\netstandard2.0\LibAtem.dll
$AtemFTB = [LibAtem.MacroOperations.MixEffects.FadeToBlackAutoMacroOp]::new()
$AtemFTB.Index =0 #ME1
[LibAtem.MacroOperations.MacroOpExtensions]::ToByteArray($AtemFTB)
8
0
167
0
0
0
0
0

I virtually never use macros now that I can initiate any commands from PowerShell. Don't have to rely on the macro being present to perform any automation, especially as many of the ATEM don't have non-volatile memory so you need a PC to restore the config anyway.
Regards,
Ian Morrish
Video Integrated Scripting Environment
(Windows PowerShell with ATEM driver + more)
https://ianmorrish.wordpress.com
Offline

Julusian

  • Posts: 4
  • Joined: Mon Aug 03, 2020 9:36 pm
  • Real Name: Julian Waller

Re: ATEM Load configuration/Macro via API

PostTue Sep 08, 2020 9:04 am

I am the author of https://github.com/LibAtem/LibAtem

Yes, that library has a reasonable chunk of the macro operations reverse engineered, to allow for better editing and creating of macros. I did prototype a ui for this a couple of years ago, but its not complete enough to use properly (I hope to merge it into another project sometime and finish it up)

AFAIK there is no built in method that takes a given configuration and uploads it to the ATEM directly

Yes, at the protocol level there is no support for this kind of batch configuration.
When restoring an xml file from Software Control it is sending everything as individual commands

Saying that, I rarely use macros myself now. There are other tools which are easier to use https://bitfocus.io/companion but dont help if you need frame accuracy.
When I needed a frame accurate sequence (manually tweening ssrc and dve) that was written as a hacky xml generator because it was easier to do for a one off.

Return to Software Developers

Who is online

Users browsing this forum: No registered users and 1 guest