Fairlight audio mixer

Some of the newer models of the ATEM switchers have Fairlight audio mixers in them instead of the more basic ATEM audio mixers of the previous models. These mostly use new datastructures to represent the mixer.

class pyatem.field.FairlightAudioInputField(raw)

Data from the FAIP. Describes the inputs to the fairlight mixer

Offset

Size

Type

Descriptions

0

2

u16

Audio source index

2

1

u8

Input type

3

2

?

unknown

5

1

u8

Index in group

10

1

u8

Changes when stereo is split into dual mono

12

1

u8

Analog audio input level [1=mic, 2=line]

Val

Input type

0

External video input

1

Media player audio

2

External audio input

After parsing: :ivar volume: Master volume for the mixer, signed int which maps [-10000 - 1000] to +10dB - -100dB (inf)

class pyatem.field.FairlightMasterPropertiesField(raw)

Data from the FAMP. Settings for the master bus on fairlight audio units.

Offset

Size

Type

Descriptions

0

1

?

unknown

1

1

bool

Enable master EQ

2

4

?

unknown

6

2

i16

EQ gain [-2000 - 2000]

8

2

?

unknown

10

2

u16

Dynamics make-up gain [0 - 2000]

12

4

i32

Master volume [-10000 - 1000]

16

1

bool

Audio follow video

17

3

?

unknown

After parsing: :ivar volume: Master volume for the mixer, signed int which maps [-10000 - 1000] to +10dB - -100dB (inf) :ivar eq_enable: Enabled/disabled state for the master EQ :ivar eq_gain: Gain applied after EQ, [-2000 - 2000] maps to -20dB - +20dB :ivar dynamics_gain: Make-up gain for the dynamics section, [0 - 2000] maps to 0dB - +20dB :ivar afv: Enable/disabled state for master audio-follow-video (for fade-to-black)

class pyatem.field.FairlightStripPropertiesField(raw)

Data from the FASP. Settings for a channel strip on fairlight audio units.

Offset

Size

Type

Descriptions

0

2

u16

Audio source index

14

1

u8

Split indicator? [01 for normal, FF for split]

15

1

u8

Subchannel index

18

1

u8

Delay in frames

22

2

i16

Gain [-10000 - 600]

29

1

bool

Enable EQ

34

2

i16

EQ Gain

38

2

u16

Dynamics gain

40

2

i16

Pan [-10000 - 10000]

46

2

i16

Volume [-10000 - 1000]

49

1

u8

AFV bitfield? 1=off 2=on 4=afv

The way byte 14 and 15 work is unclear at the moment, this need verification on a mixer with an video input that has more than 2 embedded channels, of of these bytes might be a channel count.

After parsing: :ivar volume: Master volume for the mixer, signed int which maps [-10000 - 1000] to +10dB - -100dB (inf) :ivar eq_enable: Enabled/disabled state for the master EQ :ivar eq_gain: Gain applied after EQ, [-2000 - 2000] maps to -20dB - +20dB :ivar dynamics_gain: Make-up gain for the dynamics section, [0 - 2000] maps to 0dB - +20dB :ivar afv: Enable/disabled state for master audio-follow-video (for fade-to-black)

class pyatem.field.FairlightStripDeleteField(raw)

Data from the FASD. Fairlight strip delete, received only when changing the source routing in fairlight to remove channels that have changed.

class pyatem.field.FairlightTallyField(raw)

Data from the FMTl. Encodes the state of tally lights on the audio mixer

Offset

Size

Type

Descriptions

0

2

u16

Number of tally lights

2

1

u8

Input type

3

2

?

unknown

5

1

u8

Index in group

10

1

u8

Changes when stereo is split into dual mono

12

1

u8

Analog audio input level [1=mic, 2=line]

Val

Input type

0

External video input

1

Media player audio

2

External audio input

After parsing: :ivar volume: Master volume for the mixer, signed int which maps [-10000 - 1000] to +10dB - -100dB (inf)