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