Atem control

Dear Lazyweb, can anyone point me at software that can control a Blackmagic Atem Mini from the command line, on macOS or Linux? E.g., having cron say "switch to input 2 now".

As far as I can tell, the control protocol is undocumented binary UDP, only partially reverse-engineered. They have a so-called SDK but the documentation is a slide deck whose most informative page starts with "Create a Visual Studio project..."

I see a bunch of things on Github (and none on CPAN) but I can't tell what most of them even purport to do. So I'm not asking you to google it for me, I would like to know if you have actually done this thing.

Tags: , , , , , ,

6 Responses:

  1. I'm waiting for mail to deliver one to us "any day soon".
    If it ever arrives before my death I'll report here as we also need a better automation.

  2. Jay Rishel says:

    I have made use of these Arduino libraries to build tally lights:
    https://github.com/kasperskaarhoj/SKAARHOJ-Open-Engineering/tree/master/ArduinoLibs

    this person has attempted to document the API, oddly entirely in screenshots:

    https://www.skaarhoj.com/discover/blackmagic-atem-switcher-protocol

  3. Jake says:

    There are Node.js packages that I use with a raspberry pi to do command line input changes on an ATEM switcher. It has worked reliably for a few years now. I haven't touched it since originally setting it up.

    I'm using this one.

    I can't say if it's the best way but it's reliable and bash scriptable and that's all I cared about.

    • jwz says:

      I have never touched anything Node, and probably never will, not only because server-side JavaScript is the only thing stupider than server-side Java, but because it's impossible to use Node without also using their not-invented-here package manager, which I understand to be a notorious rootkit.

  4. jwz says:

    I sort-of got a house of cards working:

    1: atemOSC is a proxy that translates the Atem UDP protocol to some other random-ass protocol called OSC, I guess?

    2: sendosc is a command-line interface to that new protocol.

    Fun facts:

    1: atemOSC is a macOS GUI program, that runs in the foreground, to do this proxying. Not a background daemon. So, you know, good luck keeping that running. And access to the GUI is totally a normal, trustworthy thing that a network proxy should require. No red flags here, nope.

    2: atemOSC phones home at runtime to github.com. I assumed it was simply surveilling me and disallowed the connection, but nope, it 100% fails to function if it can't connect to github. Fuck you very much.

    3: Both programs believe that error messages are a sign of weakness, and produce none.

    So that's pretty much a non-starter so far.

    • Nick says:

      I would not normally suggest this as it solves a slightly different problem via massive overkill, but that seems like a step up from your current situation so I'm doing it anyway:

      Bitfocus Companion (github) is intended to turn the Elgato Stream Deck into a useful product by assigning actions to button presses. The buttons themselves are optional; it has a web interface which presents you with a fake button panel, but it will also allow you to "push" the buttons with a GET.

      The list of hardware it claims to control is long, and contains the ATEM Mini. I have not used it on one, but I have used it on the full-size ATEMs (and a bunch of other stuff), and in my experience it seems to actually do the things it claims.