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