Integration

ATEM Switcher

Control Blackmagic ATEM Switchers directly from FaustBot with full support for input switching, transitions, keyers, audio mixing, and macro execution.

Overview

FaustBot connects to Blackmagic ATEM Switchers over the network, providing:

Input Control

Switch program and preview inputs.

Transitions

Cut, auto, mix, wipe, DVE, and stinger.

Keyers

Control upstream and downstream keyers.

Audio Mixing

Adjust input levels and master output.

Macros

Run, stop, and monitor ATEM macros.

Auxiliary

Control auxiliary output routing.

Setup

Network Configuration

Your ATEM switcher must be connected to the same network as the computer running FaustBot. ATEM switchers use a proprietary protocol over Ethernet.

1

Find Your ATEM IP Address

Open Blackmagic ATEM Setup on a computer connected to the switcher. The IP address is displayed in the network settings. By default, ATEM uses DHCP or a static IP in the 192.168.x.x range.

2

Configure in FaustBot

In FaustBot, go to Integrations → ATEM in the sidebar. Enter the IP address of your ATEM switcher and click Connect.

Screenshot: ATEM connection settings
3

Verify Connection

Once connected, the status indicator will turn green and you will see your ATEM model name displayed. You can now control your switcher from FaustBot.

Auto-Connect

Enable Auto-Connect to automatically connect to your ATEM when FaustBot starts. Make sure your ATEM is powered on and accessible on the network.

Supported Models

FaustBot supports all Blackmagic ATEM switchers including ATEM Mini, ATEM Mini Pro, ATEM Television Studio, ATEM Constellation, and all other models using the ATEM protocol.

Triggers

Respond to events from your ATEM switcher:

ATEM Connected Connection to ATEM established
ATEM Disconnected Connection to ATEM lost
Program Input Changed Live output source changed
Preview Input Changed Preview source changed
Transition Completed A transition finished
Fade to Black Changed FTB state changed
Downstream Keyer Changed DSK on-air state changed
Upstream Keyer Changed USK on-air state changed
Macro Started A macro began running
Macro Stopped A macro finished or was stopped

Effects

Input Control

Set Program Input

Switch the live output source.

Set Preview Input

Set the next source on preview.

Set Aux Source

Route source to auxiliary output.

Transitions

Perform Cut

Instant switch to preview.

Perform Auto

Transition using current settings.

Set Transition Type

Mix, Dip, Wipe, DVE, or Stinger.

Set Transition Rate

Duration in frames.

Fade to Black

Fade output to/from black.

Keyers

DSK On Air

Set downstream keyer state.

Toggle DSK

Toggle downstream keyer.

DSK Auto

Auto transition downstream keyer.

USK On Air

Set upstream keyer state.

Toggle USK

Toggle upstream keyer.

Audio

Set Input Level

Adjust audio input level.

Set Master Level

Adjust master output level.

Macros

Run Macro

Execute an ATEM macro by index.

Stop Macro

Stop the currently running macro.

Scripting API

Control your ATEM switcher from scripts using the CPH API:

Connection

Connection management
# Check connection status
connected = CPH.AtemIsConnected()
CPH.Log(f"ATEM connected: {connected}")

# Connect to ATEM
CPH.AtemConnect()

# Disconnect from ATEM
CPH.AtemDisconnect()

Input Switching

Program and preview input control
# Set program input (live output)
CPH.AtemSetProgramInput(1)  # Switch to input 1

# Set preview input (next source)
CPH.AtemSetPreviewInput(2)  # Set input 2 on preview

# Get current program input
program = CPH.AtemProgramInput()
CPH.Log(f"Current program: Input {program}")

# Get current preview input
preview = CPH.AtemPreviewInput()
CPH.Log(f"Current preview: Input {preview}")

Transitions

Transition control
# Perform a cut (instant switch)
CPH.AtemPerformCut()

# Perform auto transition (uses current settings)
CPH.AtemPerformAuto()

# Set transition type (0=Mix, 1=Dip, 2=Wipe, 3=DVE, 4=Stinger)
CPH.AtemSetTransitionType(0)  # Set to Mix

# Set transition rate in frames (e.g., 30 = 1 second at 30fps)
CPH.AtemSetTransitionRate(30)

# Manual transition position (0.0 to 1.0)
CPH.AtemSetTransitionPosition(0.5)  # Halfway through

Audio Control

Audio level control
# Set audio input level (-60.0 to 6.0 dB)
CPH.AtemSetAudioInputLevel(1, -12.0)  # Input 1 at -12dB

# Get audio input level
level = CPH.AtemAudioInputLevel(1)
CPH.Log(f"Input 1 level: {level} dB")

# Set master audio level
CPH.AtemSetMasterAudioLevel(-6.0)

# Get master audio level
master = CPH.AtemMasterAudioLevel()
CPH.Log(f"Master level: {master} dB")

Keyers, Macros & Auxiliary

Keyers, macros, and auxiliary outputs
# Downstream Keyer control
CPH.AtemSetDownstreamKeyerOnAir(1, True)   # Put DSK 1 on air
CPH.AtemToggleDownstreamKeyer(1)            # Toggle DSK 1
CPH.AtemPerformDownstreamKeyerAuto(1)       # Auto transition DSK 1

# Upstream Keyer control
CPH.AtemSetUpstreamKeyerOnAir(1, True)     # Put USK 1 on air
CPH.AtemToggleUpstreamKeyer(1)              # Toggle USK 1
is_on = CPH.AtemIsUpstreamKeyerOnAir(1)     # Check USK 1 status

# Fade to Black
CPH.AtemPerformFadeToBlack()
is_ftb = CPH.AtemIsFadeToBlackActive()

# Macro control
CPH.AtemRunMacro(0)       # Run macro at index 0
CPH.AtemStopMacro()       # Stop running macro
running = CPH.AtemIsMacroRunning()

# Auxiliary output
CPH.AtemSetAuxSource(1, 2)  # Set AUX 1 to input 2

See the full API reference for all available ATEM methods.