Video switching fields

class pyatem.field.VideoModeField(raw)

Data from the VidM field. This sets the video standard the mixer operates on internally.

Offset

Size

Type

Description

0

1

u8

Video mode

1

3

?

unknown

The Video mode is an enum of these values:

Key

Video mode

0

NTSC (525i59.94)

1

PAL (625i50)

2

NTSC widescreen (525i59.94)

3

PAL widescreen (625i50)

4

720p50

5

720p59.94

6

1080i50

7

1080i59.94

8

1080p23.98

9

1080p24

10

1080p25

11

1080p29.97

12

1080p50

13

1080p59.94

14

4k23.98

15

4k24

16

4k25

17

4k29.97

18

4k50

19

4k59.94

20

8k23.98

21

8k24

22

8k25

23

8k29.97

24

8k50

25

8k59.94

26

1080p30

27

1080p60

28

720p60

29

1080i60

After parsing:

Variables:
  • mode – mode number

  • resolution – vertical resolution of the mode

  • interlaced – the current mode is interlaced

  • rate – refresh rate of the mode

class pyatem.field.VideoModeCapabilityField(raw)

Data from the _VMC field. This describes all the video modes supported by the hardware and the associated multiview and downconvert modes.

The first 2 bytes is the number of modes supported, then there’s a 13 byte block that’s repeated for every mode that has the mode number, the possible multiview modes in this mode and the possible downconvert modes.

Offset

Size

Type

Description

0

2

u16

Number of video modes

2

2

?

padding

4

1

u8

Video mode N

5

3

?

padding

8

4

u32

Multiview modes bitfield

12

4

u32

Downconvert modes bitfield

13

1

bool

Requires reconfiguration

The Video mode is an enum of these values:

Key

Video mode

0

NTSC (525i59.94)

1

PAL (625i50)

2

NTSC widescreen (525i59.94)

3

PAL widescreen (625i50)

4

720p50

5

720p59.94

6

1080i50

7

1080i59.94

8

1080p23.98

9

1080p24

10

1080p25

11

1080p29.97

12

1080p50

13

1080p59.94

14

4k23.98

15

4k24

16

4k25

17

4k29.97

18

4k50

19

4k59.94

20

8k23.98

21

8k24

22

8k25

23

8k29.97

24

8k50

25

8k59.94

26

1080p30

27

1080p60

28

720p60

29

1080i60

The multiview and downconvert bitfields are the same values as the resultion numbers but the key is the bit instead.

After parsing:

Variables:
  • mode – mode number

  • resolution – vertical resolution of the mode

  • interlaced – the current mode is interlaced

  • rate – refresh rate of the mode

class pyatem.field.AutoInputVideoModeField(raw)

Data from the AiVM. This field only exists for hardware that can auto-detect a video mode from the input signal. This defines wether the auto detection is enabled and shows if it has actually detected a signal

Offset

Size

Type

Description

0

1

bool

Enabled

1

1

bool

Detected

2

2

?

unknown

After parsing:

Variables:
  • enabled – Auto mode detection is enabled

  • detected – A video mode has been detected from an input

Program / Preview bus

class pyatem.field.ProgramBusInputField(raw)

Data from the PrgI field. This represents the active channel on the program bus of the specific M/E unit.

The mixer will send a field for every M/E unit in the mixer.

Offset

Size

Type

Description

0

1

u8

M/E index

1

1

?

unknown

2

2

u16

Source index

After parsing:

Variables:
  • index – M/E index in the mixer

  • source – Input source index, refers to an InputPropertiesField index

class pyatem.field.PreviewBusInputField(raw)

Data from the PrvI field. This represents the active channel on the preview bus of the specific M/E unit.

The mixer will send a field for every M/E unit in the mixer.

Offset

Size

Type

Description

0

1

u8

M/E index

1

1

?

unknown

2

2

u16

Source index

4

1

u8

1 if preview is mixed in program during a transition

5

3

?

unknown

After parsing:

Variables:
  • index – M/E index in the mixer

  • source – Input source index, refers to an InputPropertiesField index

  • in_program – Preview source is mixed into progam

class pyatem.field.AuxOutputSourceField(raw)

Data from the AuxS. The routing for the AUX outputs of the hardware.

Offset

Size

Type

Descriptions

0

1

u8

AUX output index

1

1

?

unknown

2

2

u16

Source index

After parsing:

Variables:
  • index – AUX index

  • rate – Source index

Transition settings

class pyatem.field.TransitionSettingsField(raw)

Data from the TrSS field. This stores the config of the “Next transition” and “Transition style” blocks on the control panels.

The mixer will send a field for every M/E unit in the mixer.

Offset

Size

Type

Description

0

1

u8

M/E index

1

1

u8

Transition style

2

1

u8

Next transition layers

3

1

u8

Next transition style

4

1

u8

Next transition next transition layers

There are two sets of style/layer settings. The first set is the active transition settings. The second one will store the transitions settings if you change any of them while a transition is active. These settings will be applied as soon as the transition ends. This is signified by blinking transition settings buttons in the official control panels.

After parsing:

Variables:
  • index – M/E index in the mixer

  • style – Active transition style

  • style_next – Transition style for next transition

  • next_transition_bkgd – Next transition will affect the background layer

  • next_transition_key1 – Next transition will affect the upstream key 1 layer

  • next_transition_key2 – Next transition will affect the upstream key 2 layer

  • next_transition_key3 – Next transition will affect the upstream key 3 layer

  • next_transition_key4 – Next transition will affect the upstream key 4 layer

  • next_transition_bkgd_next – Next transition (after current) will affect the background layer

  • next_transition_key1_next – Next transition (after current) will affect the upstream key 1 layer

  • next_transition_key2_next – Next transition (after current) will affect the upstream key 2 layer

  • next_transition_key3_next – Next transition (after current) will affect the upstream key 3 layer

  • next_transition_key4_next – Next transition (after current) will affect the upstream key 4 layer

class pyatem.field.TransitionPreviewField(raw)

Data from the TsPr field. This represents the state of the “PREV TRANS” button on the mixer.

The mixer will send a field for every M/E unit in the mixer.

Offset

Size

Type

Description

0

1

u8

M/E index

1

1

bool

Enabled

2

2

?

unknown

After parsing:

Variables:
  • index – M/E index in the mixer

  • enabled – True if the transition preview is enabled

class pyatem.field.TransitionPositionField(raw)

Data from the TrPs field. This represents the state of the transition T-handle position

The mixer will send a field for every M/E unit in the mixer.

Offset

Size

Type

Description

0

1

u8

M/E index

1

1

bool

In transition

2

1

u8

Frames remaining

3

1

?

unknown

4

2

u16

Position

6

1

?

unknown

After parsing:

Variables:
  • index – M/E index in the mixer

  • in_transition – True if the transition is active

  • frames_remaining – Number of frames left to complete the transition on auto

  • position – Position of the transition, 0-9999

class pyatem.field.KeyOnAirField(raw)

Data from the KeOn. This is the on-air state of the upstream keyers

Offset

Size

Type

Description

0

1

u8

M/E index

1

1

u8

Keyer index

2

1

bool

On-air

3

1

?

unknown

After parsing:

Variables:
  • index – M/E index in the mixer

  • keyer – Upstream keyer number

  • enabled – Wether the keyer is on-air

Downstream

class pyatem.field.FadeToBlackStateField(raw)

Data from the FtbS. This contains the information about the fade-to-black transition.

Offset

Size

Type

Description

0

1

u8

M/E index

1

1

bool

Fade to black done

2

1

bool

Fade to black is in transition

3

1

u8

Frames remaining in transition

After parsing:

Variables:
  • index – M/E index in the mixer

  • done – Fade to black is completely done (blinking button state in the control panel)

  • transitioning – Fade to black is fading, (Solid red in control panel)

  • frames_remaining – Frames remaining in the transition

class pyatem.field.DkeyPropertiesBaseField(raw)

Data from the DskB. Downstream keyer base info.

Offset

Size

Type

Descriptions

0

1

u8

Downstream keyer index, 0-indexed

1

1

?

unknown

2

2

u16

Fill source index

4

2

u16

Key source index

6

2

?

unknown

After parsing:

Variables:
  • index – DSK index

  • fill_source – Source index for the fill input

  • key_source – Source index for the key input

class pyatem.field.DkeyPropertiesField(raw)

Data from the DskP. Downstream keyer info.

Offset

Size

Type

Descriptions

0

1

u8

Downstream keyer index, 0-indexed

1

1

bool

Tie enabled

2

1

u8

Transition rate in frames

3

1

bool

Mask is pre-multiplied alpha

4

2

u16

Clip [0-1000]

6

2

u16

Gain [0-1000]

8

1

bool

Invert key

9

1

bool

Enable mask

10

2

i16

Top [-9000 - 9000]

12

2

i16

Bottom [-9000 - 9000]

14

2

i16

Left [-9000 - 9000]

16

2

i16

Right [-9000 - 9000]

18

2

?

unknown

After parsing:

Variables:
  • index – M/E index in the mixer

  • done – Fade to black is completely done (blinking button state in the control panel)

  • transitioning – Fade to black is fading, (Solid red in control panel)

  • frames_remaining – Frames remaining in the transition

class pyatem.field.DkeyStateField(raw)

Data from the DskS. Downstream keyer state.

Offset

Size

Type

Descriptions

0

1

u8

Downstream keyer index, 0-indexed

1

1

bool

On air

2

1

bool

Is transitioning

3

1

bool

Is autotransitioning

4

1

u8

Frames remaining

5

3

?

unknown

After parsing:

Variables:
  • index – Downstream keyer index

  • on_air – Keyer is on air

  • is_transitioning – Is transitioning

  • is_autotransitioning – Is transitioning due to auto button

  • frames_remaining – Frames remaining in transition

Palettes

class pyatem.field.ColorGeneratorField(raw)

Data from the ColV. This is color set in the color generators of the mixer

Offset

Size

Type

Description

0

1

u8

Color generator index

1

1

?

unknown

2

2

u16

Hue [0-3599]

4

2

u16

Saturation [0-1000]

6

2

u16

Luma [0-1000]

After parsing:

Variables:
  • index – M/E index in the mixer

  • keyer – Upstream keyer number

  • enabled – Wether the keyer is on-air

class pyatem.field.TransitionMixField(raw)

Data from the TMxP. Settings for the mix transition.

Offset

Size

Type

Descriptions

0

1

u8

M/E index

1

1

u8

rate in frames

2

2

?

unknown

After parsing:

Variables:
  • index – M/E index in the mixer

  • rate – Number of frames in the transition

class pyatem.field.TransitionDipField(raw)

Data from the TDpP. Settings for the dip transition.

Offset

Size

Type

Descriptions

0

1

u8

M/E index

1

1

u8

rate in frames

2

2

u16

Source index for the DIP source

After parsing:

Variables:
  • index – M/E index in the mixer

  • rate – Number of frames in transition

  • source – Source index for the dip

class pyatem.field.TransitionWipeField(raw)

Data from the TWpP. Settings for the wipe transition.

Offset

Size

Type

Descriptions

0

1

u8

M/E index

1

1

u8

Rate in frames

2

1

u8

Pattern id

3

1

?

unknown

4

2

u16

Border width

6

2

u16

Border fill source index

8

2

u16

Symmetry

10

2

u16

Softness

12

2

u16

Origin position X

14

2

u16

Origin position Y

16

1

bool

Reverse

16

1

bool

Flip flop

After parsing:

Variables:
  • index – M/E index in the mixer

  • rate – Number of frames in transition

  • source – Source index for the dip

class pyatem.field.TransitionDveField(raw)

Data from the TDvP. Settings for the DVE transition.

Offset

Size

Type

Descriptions

0

1

u8

M/E index

1

1

u8

Rate in frames

2

1

?

unknown

3

1

u8

DVE style

4

2

u16

Fill source index

6

2

u16

Key source index

8

1

bool

Enable key

9

1

bool

Key is premultiplied

10

2

u16

Key clip [0-1000]

12

2

u16

Key gain [0-1000]

14

1

bool

Key invert

15

1

bool

Reverse

16

1

bool

Flip flop

17

3

?

unknown

After parsing:

Variables:
  • index – M/E index in the mixer

  • rate – Number of frames in transition

  • style – Style or effect index for the DVE

  • fill_source – Fill source index

  • key_source – Key source index

  • key_premultiplied – Key is premultiplied alpha

  • key_clip – Key clipping point

  • key_gain – Key Gain

  • key_invert – Invert key source

  • reverse – Reverse transition

  • flipflop – Flip flop transition

Upstream keys

These are the fields related to the “Upstream key %n” blocks in the palette sidebar. The information about the upstream keyer is split over multiple fields, one with base information and one with extra information about the specific mode the keyer is in.

class pyatem.field.KeyPropertiesBaseField(raw)

Data from the KeBP. The upstream keyer base properties.

class pyatem.field.KeyPropertiesLumaField(raw)

Data from the KeLm. The upstream keyer luma-specific properties.

class pyatem.field.KeyPropertiesDveField(raw)

Data from the KeDV. The upstream keyer DVE-specific properties.

Mediaplayer

class pyatem.field.MediaplayerSelectedField(raw)

Data from the MPCE field. This defines what media from the media pool is loaded in a specific media player. There is one MPCE field per mediaplayer in the hardware.

Offset

Size

Type

Description

0

1

u8

Mediaplayer index, 0-indexed

1

1

u8

Source type, 1=still, 2=clip

2

1

u8

Source index, 0-indexed

3

1

?

unknown

After parsing:

Variables:
  • index – Mediaplayer index

  • source_type – 1 for still, 2 for clip

  • slot – Source index

Video Tally

class pyatem.field.TallyIndexField(raw)

Data from the TlIn. This is the status of the tally light for every input in order of index number.

Offset

Size

Type

Description

0

2

u16

Total of tally lights

n

1

u8

Bitfield, bit0=PROGRAM, bit1=PREVIEW, repeated for every tally light

After parsing:

Variables:
  • num – number of tally lights

  • tally – List of tally values, every tally light is represented as a tuple with 2 booleans for PROGRAM and PREVIEW

class pyatem.field.TallySourceField(raw)

Data from the TlSr. This is the status of the tally light for every input, but indexed on source index

Offset

Size

Type

Description

0

2

u16

Total of tally lights

n

2

u16

Source index for this tally light

n+2

1

u8

Bitfield, bit0=PROGRAM, bit1=PREVIEW

After parsing:

Variables:
  • num – number of tally lights

  • tally – Dict of tally lights, every tally light is represented as a tuple with 2 booleans for PROGRAM and PREVIEW

Fade to black

class pyatem.field.FadeToBlackField(raw)

Data from the FtbP. Settings for the fade-to-black transition.

Offset

Size

Type

Descriptions

0

1

u8

M/E index

1

1

u8

rate in frames

2

2

?

unknown

After parsing:

Variables:
  • index – M/E index in the mixer

  • rate – Number of frames in transition