Finding myself in the need of a Python library to control ATEM switchers I started searching and noticed a couple things:

  • There was Skårhøj’s ATEMmax, developed in C++ for the Arduino platform.
  • There were a lot of partial ports of this library by many people in many languages.
  • There were a few other original libraries (JavaScript, C#, C++), but I found none as complete, well documented and maintained as Skårhøj’s is.

So, the solution was obvious… I had to port that library to Python!

The initial intention was to do a direct language translation, leaving a library that resembled the original as much as possible, so anybody familiar with the original ATEMmax could easily work with this new library.

As the development progressed, I started noticing certains aspects of the interface in the original library that were supposedly forced by the language (C++) and platform it was written for (Arduino). If you want to run your code inside a tiny microprocessor, you have to be very conservative in terms of memory usage.

Having in mind that this library will run on beefier platforms (I’m guessing ARM SBC, at least), I could do things such as:

  • Have bigger transmission buffers.
  • Store information for all entities (in some cases memory limitation has imposed restrictions in the Arduino version)
  • Run the main loop on an independent thread.
  • Make a nice data model to expose data and methods.
  • Provide an event system for notifications.

… well, all those nice things you have so cheap when you run Python on a PC/SBC :)

So, here it is… yet another clone of ATEMmax… hope it helps!

Tony