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.
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.
Configure in FaustBot
In FaustBot, go to Integrations → ATEM in the sidebar. Enter the IP address of your ATEM switcher and click Connect.
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 establishedATEM Disconnected Connection to ATEM lostProgram Input Changed Live output source changedPreview Input Changed Preview source changedTransition Completed A transition finishedFade to Black Changed FTB state changedDownstream Keyer Changed DSK on-air state changedUpstream Keyer Changed USK on-air state changedMacro Started A macro began runningMacro Stopped A macro finished or was stoppedEffects
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
# Check connection status
connected = CPH.AtemIsConnected()
CPH.Log(f"ATEM connected: {connected}")
# Connect to ATEM
CPH.AtemConnect()
# Disconnect from ATEM
CPH.AtemDisconnect()Input Switching
# 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
# 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 throughAudio 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
# 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 2See the full API reference for all available ATEM methods.