Switcher hardware info
Product info
- class pyatem.field.FirmwareVersionField(raw)
Data from the _ver field. This stores the major/minor firmware version numbers
Offset
Size
Type
Description
0
2
u16
Major version
2
2
u16
Minor version
After parsing:
- Variables:
major – Major firmware version
minor – Minor firmware version
- class pyatem.field.ProductNameField(raw)
Data from the _pin field. This stores the product name of the mixer
Offset
Size
Type
Description
0
40
char[]
Product name
40
1
u8
Model number
41
3
?
unknown
After parsing:
- Variables:
name – User friendly product name
Hardware contents
- class pyatem.field.TopologyField(raw)
Data from the _top field. This describes the internal video routing topology.
spec
Atem Mini
1M/E 4k
TVS HD
M/E units
1
1
1
upstream keyers
1
1
1
downstream keyers
1
2
2
dve
1
1
1
stinger
0
1
0
supersources
0
0
0
multiview
0
1
1
rs485
0
1
1
Offset
Size
Type
Atem Mini
Mini Pro
1M/E 4k
Prod 4k
TVS HD
CHD 2ME
TVS4K8
Description
0
1
u8
1
1
1
1
1
2
1
Number of M/E units
1
1
u8
14
15
31
24
24
57
35
Sources
2
1
u8
1
1
2
2
2
2
2
Downstream keyers
3
1
u8
1
1
3
1
1
12
10
AUX busses
4
1
u8
0
0
0
0
4
12
10
MixMinus Outputs
5
1
u8
1
1
2
2
2
2
2
Media players
6
1
u8
0
1
1
1
1
2
1
Multiviewers
7
1
u8
0
0
1
0
1
0
1
rs485
8
1
u8
4
4
4
4
4
4
10
Hyperdecks
9
1
u8
1
1
1
0
1
1
1
DVE
10
1
u8
0
0
1
0
0
1
1
Stingers
11
1
u8
0
0
0
0
0
1
1
supersources
12
1
u8
0
0
1
1
1
0
0
?
13
1
u8
0
0
0
0
1
2
2
Talkback channels
14
1
u8
0
0
0
0
4
20
8
SDI inputs ?
15
1
u8
1
1
0
0
0
1
1
Scalers on input?
16
1
u8
0
0
0
0
0
0
0
?
17
1
u8
0
0
1
1
0
0
0
?
18
1
u8
1
1
1
1
1
1
1
Camera Control
19
1
u8
0
0
1
0
1
0
1
?
20
1
u8
0
0
1
0
1
0
1
?
21
1
u8
0
0
1
1
1
1
1
Multiview routable
22
1
u8
1
1
0
0
0
1
1
Advanced chroma keyers
23
1
u8
1
1
0
0
0
1
0
Only configurable outputs
24
1
u8
1
1
0
0
0
0
0
?
25
1
u8
0x20
0x2f
0x20
0
0x10
0
0
?
26
1
u8
3
108
0
0
0
0
0
?
27
1
u8
0xe8
0x69
0x00
0
0x0
0
0
?
After parsing:
- Variables:
me_units – Number of M/E units in the mixer
sources – Number of internal and external sources
downstream_keyers – Number of downstream keyers
aux_outputs – Number of routable AUX outputs
mixminus_outputs – Number of ouputs with MixMinus
mediaplayers – Number of mediaplayers
multiviewers – Number of multiview ouputs
rs485 – Number of RS-485 outputs
hyperdecks – Number of hyperdeck slots
dve – Number of DVE blocks
stingers – Number of stinger blocks
supersources – Number of supersources
- class pyatem.field.InputPropertiesField(raw)
Data from the InPr field. This stores information about all the internal and external inputs.
The mixer will send multiple fields, one for each input
Offset
Size
Type
Description
0
2
u16
Source index
2
20
char[]
Long name
22
4
char[]
Short name for button
26
1
u8
Source category 0=input 1=output
27
1
u8
? bitfield
28
1
u8
same as byte 26
29
1
u8
port
30
1
u8
same as byte 26
31
1
u8
same as byte 29
32
1
u8
port type
33
1
u8
bitfield
34
1
u8
bitfield
35
1
u8
direction
value
port type
0
external
1
black
2
color bars
3
color generator
4
media player
5
media player key
6
supersource
7
passthrough
128
M/E output
129
AUX output
131
Multiview output, or a dedicated status window (audio, recording, streaming)
value
available ports
0
SDI
1
HDMI
2
Component
3
Composite
4
S/Video
value
selected port
0
internal
1
SDI
2
HDMI
3
Composite
4
Component
5
S/Video
After parsing:
- Variables:
index – Source index
name – Long name
short_name – Short name for button
port_type – Integer describing the port type
available_aux – Source can be routed to AUX
available_multiview – Source can be routed to multiview
available_supersource_art – Source can be routed to supersource
available_supersource_box – Source can be routed to supersource
available_key_source – Source can be used as keyer key source
available_aux1 – Source can be sent to AUX1 (Extreme only)
available_aux2 – Source can be sent to AUX2 (Extreme only)
available_me1 – Source can be routed to M/E 1
available_me2 – Source can be routed to M/E 2
- class pyatem.field.MixerEffectConfigField(raw)
Data from the _MeC field. This stores basic info about the M/E units.
The mixer will send multiple fields, one for each M/E unit.
Offset
Size
Type
Description
0
1
u8
M/E index
1
1
u8
Number of keyers on this M/E
2
2
?
unknown
After parsing:
- Variables:
index – 0-based M/E index
keyers – Number of upstream keyers on this M/E
- class pyatem.field.MediaplayerSlotsField(raw)
Data from the _mpl field. This stores basic info about the mediaplayer slots.
Offset
Size
Type
Description
0
1
u8
Number of still slots
1
1
u8
Number of clip slots
2
2
?
unknown
After parsing:
- Variables:
stills – Number of still slots
clips – Number of clip slots
Timecode
- class pyatem.field.TimeField(raw)
Data from the Time field. This contains the value of the internal clock of the hardware.
Offset
Size
Type
Description
0
1
u8
Hours
1
1
u8
Minutes
2
1
u8
Seconds
3
1
u8
Frames
4
1
u8
Is dropframe
5
3
?
unknown
After parsing:
- Variables:
hours – Timecode hour field
minutes – Timecode minute field
seconds – Timecode seconds field
frames – Timecode frames field
dropframe – Is dropframe
- class pyatem.field.TimeConfigField(raw)
Data from the TCCc field. This contains the freerun/time of day setting for the timecode mode.
Offset
Size
Type
Description
0
1
u8
Mode [0=freerun, 1=time-of-day]
1
3
?
unknown
After parsing:
- Variables:
mode – Timecode mode
Multiviewer routing
- class pyatem.field.MultiviewerPropertiesField(raw)
Data from the MvPr. The layout preset for the multiviewer output.
The multiviewer is divided in 4 quadrants and the layout bitfield describes which of those quadrants are subdivided again in 4 more viewers. The default layout will have the top 2 quadrants not divided and the bottom quadrants used for small viewers.
Offset
Size
Type
Descriptions
0
1
u8
Multiviewer index, 0-indexed
1
1
u8
Layout bitfield
1
1
bool
Flip program/preview
1
1
?
unknown
Bit
Layout value
0
Top left small
1
Top right small
2
Bottom left small
4
Bottom right small
After parsing: :ivar index: Multiviewer index, 0-indexed :ivar layout: Layout number from the enum above :ivar flip: Swap the program/preview window
- class pyatem.field.MultiviewerInputField(raw)
Data from the MvIn. The input routing for the multiviewer.
Offset
Size
Type
Descriptions
0
1
u8
Multiviewer index, 0-indexed
1
1
u8
Window index 0-9
2
2
u16
Source index
4
1
bool
Supports enabling the VU meter
5
1
bool
Supports enabling the safe area overlay
6
2
?
unknown
Window numbering differs between switcher families. For example, on Atem Mini Extreme, windows are numbered on a row-by-row basis, starting at upper left. If a quadrant is not split, it gets the number of its upper left mini-window. This is an example of a layout on Atem Mini Extreme:
0 4
1 5
2
8
10 14
11 15
On the non-Extreme Mini switchers, the window layout does not appear to be configurable, and therefore the numbers are allocated on a contiguous basis:
0
1
2
3
4
5
6
7?
8?
9?
Since the windows marked ‘?’ are not configurable on non-Extreme Minis, these numbers are just an educated guess.
Audio VU meters appear to be supported on small and big windows alike, but only on those which show a video input or the Program output. The safe area overlay appears to only work on full-sized Preview.
After parsing: :ivar index: Multiviewer index, 0-indexed :ivar window: Window number inside the multiview :ivar source: Source index for this window :ivar vu: True if VU meter overlays can be enabled :ivar safearea: True if safe area overlays can be enabled
- class pyatem.field.MultiviewerVuField(raw)
Data from the VuMC. This describes if a multiview window has the VU meter overlay enabled.
Offset
Size
Type
Descriptions
0
1
u8
Multiviewer index, 0-indexed
1
1
u8
Window index 0-9
2
1
bool
VU enabled
3
1
?
unknown
After parsing: :ivar index: Multiviewer index, 0-indexed :ivar window: Window number inside the multiview :ivar enabled: True if the VU meter overlay is enabled for this window
- class pyatem.field.MultiviewerSafeAreaField(raw)
Data from the SaMw. This describes if a multiview window has the safe area overlay enabled. This is generally only enabled on the preview window.
Offset
Size
Type
Descriptions
0
1
u8
Multiviewer index, 0-indexed
1
1
u8
Window index 0-9
2
1
bool
safe area enabled
3
1
?
unknown
After parsing: :ivar index: Multiviewer index, 0-indexed :ivar window: Window number inside the multiview :ivar enabled: True if the safe area meter overlay is enabled for this window