ofAtem is a program to control the ATEM Production Switcher from Blackmagic for Mac OSX
C C++ Objective-C JavaScript Lua
Switch branches/tags
Nothing to show
Latest commit 01abb72 Mar 17, 2013 @bejohnny bejohnny Update README.md




ofAtem is a program to control the ATEM Production Switcher from Blackmagic for Mac OSX. It is an openframeworks project with sources.

To control the ATEM switch, you can send messages via OSC to ofAtem.app So you can use ofAtem.app out of the box with any software or hardware controller, which can send OSC messages. If you want to control it via Midi, it is possible to modify the openframeworks app or use an converter program like osculator. [osculator.net]

The basic functionalities of the ATEM switches are controllable with the ofAtem.app. Switching input and output channels, perform auto transitions, set transition style and many more. (see command list below). If you need more control you can tweek the openframeworks application by yourself or feel free to ask me to implement more features.

So there is no limit to control your ATEM switch.

There is also a demo application called "tele.ofAtem" made with max/msp, which shows a possible control setup.

A second example shows, how to control the ATEM switch with Ableton Live (using Max for Live). With this demo project you can control the ATEM switch with Midi sequences or just map the switch buttons to your keyboard or Midi device.

If you have an sugestions, new ideas or you want to hire me for expanding the project, feel free to contact me.

I also want to thank the following people for making the ofAtem project possible:

How ofAtem works:

  1. Install the driver from Blackmagic. "Blackmagic ATEM Switchers 3.5 for Macintosh" or higher.
    I recomment to check, if the "ATEM Software Control.app" from Blackmagic is working with your hardware.

  2. Put the IP address of your Atem device in the settings file something like that: The settings file is located "data" folder near the ofAtem.app.

  3. Start the ofAtem.app You should see that.


If you see something like that, something is wrong with the network setup or driver installation. Go to step 1 :-)

connection failed

If the connection between the ofAtem.app and your hardware is working you should be able to control it via osc.

There are 2 examples, which demonstrates how to use ofAtem.

  1. tele.ofAtem.app This is made with max/msp, which shows a possible control setup. Start the application and press "get data from atem" Now you should be able to remote control your atem device.


  1. live.ofAtem - a Ableton Live project To control the switch, simply start one of the clips. for example "Program switch" You can also switch all input channels and aux outputs with Midi notes, keys or mouse.


Technical details:

ofAtem is based on the version 3.5 of the Blackmagic ATEM SDK. To get it to work, it is necessary to install the "Blackmagic ATEM Switchers 3.5 for Macintosh" from [blackmagicdesign] (http://www.blackmagicdesign.com/de/products/atem)


I used the following environment: Mac OSX 10.6, 10.7, 10.8



  • Max6 (version 6.0.8)


  • Ableton Live 8.2.7, Max for Live 6.0.8

ofAtem OSC command reference:

OSC commands to the Atem

/atem/cut perform the cut transition
/atem/auto perform the auto transition
/atem/fadeToblack perform fade To black
/atem/preview ID set the source with the number ID to preview source (ID:integer)
/atem/program ID set the source with the number ID to program source (ID:integer)
/atem/mix MIXAMOUNT perform mix transition (MIXAMOUNT:float from 0. to 1.)
/atem/FTBRate FRAMES set the "Fade to Black" time in frames (FRAMES:integer)
/atem/getInputNames returns the source IDs with names
/atem/getTransitionFrames returns the transition frames
/atem/getFTBFrames returns the "fade to black" frames
/atem/isInTransition returns the state of the transition
/atem/getAuxCount returns the number of auxiliary outputs
/atem/getAuxSource AUXNUM returns the source id of the selected auxiliary output (AUXNUM:integer)
/atem/auxSource AUXNUM ID set source of auxiliary output (AUXNUM: integer, ID: integer)
/atem/transitionStyle STYLE set the transitionstyle (STYLE:string mix, dip, wipe, sting, dve )
/atem/setAutoRate FRAMES set the autoTransition time in frames (FRAMES:integer)
/atem/getAutoRate returns the autoTransition frames (FRAMES:integer)

OSC commands from Atem

atem/input/ ID INPUTNAME ID: source ID, INPUTNAME: name of the Input (ID:integer, INPUTNAME string)
/atem/programInputID ID ID: actual selected program source ID (ID:integer)
/atem/previewInputID ID ID: actual selected preview source ID (ID:integer)
/atem/mix MIXAMOUNT MIXAMOUNT actual mixamount (MIXAMOUNT:float from 0. to 1.)
/atem/tfr FRAMES FadeToBlackFramesRemaining (FRAMES:integer)
/atem/ftbfr FRAMES TransitionFramesRemaining (FRAMES:integer)
/atem/isInTransition YES/NO Transition active or not (YES/NO bool 0 or 1)
/atem/ftbrate FRAMES "Fade to Black" time in frames (FRAMES:integer)
/atem/auxSource AUXNUM ID AUXNUM: number of auxiliary output, ID: source ID of auxiliary output
/atem/autoRate FRAMES autoTransition Frames (FRAMES:integer)