-
Notifications
You must be signed in to change notification settings - Fork 36
/
fairlight.ts
169 lines (135 loc) · 4.07 KB
/
fairlight.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
import {
FairlightAudioMixOption,
FairlightInputConfiguration,
FairlightAnalogInputLevel,
FairlightAudioSourceType,
ExternalPortType,
FairlightInputType,
AudioChannelPair,
AudioInternalPortType,
} from '../enums'
export interface FairlightAudioDynamicsState {
makeUpGain?: number
limiter?: FairlightAudioLimiterState
compressor?: FairlightAudioCompressorState
expander?: FairlightAudioExpanderState
}
export interface FairlightAudioLimiterState {
limiterEnabled: boolean
threshold: number
attack: number
hold: number
release: number
}
export interface FairlightAudioCompressorState {
compressorEnabled: boolean
threshold: number
ratio: number
attack: number
hold: number
release: number
}
export interface FairlightAudioExpanderState {
expanderEnabled: boolean
gateEnabled: boolean
threshold: number
range: number
ratio: number
attack: number
hold: number
release: number
}
export interface FairlightAudioEqualizerBandState {
bandEnabled: boolean
readonly supportedShapes: number[] // TODO
shape: number // TODO
readonly supportedFrequencyRanges: number[] // TODO
frequencyRange: number // TODO
frequency: number
gain: number
qFactor: number
}
export interface FairlightAudioMasterChannelPropertiesState {
/** Gain in decibel, -Infinity to +6dB */
faderGain: number
followFadeToBlack: boolean
}
export interface FairlightAudioMasterChannel {
properties?: FairlightAudioMasterChannelPropertiesState
equalizer?: FairlightAudioEqualizerState
dynamics?: Omit<FairlightAudioDynamicsState, 'expander'>
//levels?: FairlightAudioMasterLevelsState | undefined
}
export interface FairlightAudioMonitorChannel {
gain: number
inputMasterGain: number
inputMasterMuted: boolean
inputTalkbackGain: number
inputSidetoneGain: number
}
export interface FairlightAudioSource {
properties?: FairlightAudioSourcePropertiesState
equalizer?: FairlightAudioEqualizerState
dynamics?: FairlightAudioDynamicsState
//levels?: FairlightAudioSourceLevelsState | undefined
}
export interface FairlightAudioEqualizerState {
enabled: boolean
gain: number
readonly bands: Array<FairlightAudioEqualizerBandState | undefined>
}
export interface FairlightAudioSourcePropertiesState {
readonly sourceType: FairlightAudioSourceType
readonly maxFramesDelay: number
framesDelay: number
readonly hasStereoSimulation: boolean
stereoSimulation: number
gain: number
balance: number
faderGain: number
readonly supportedMixOptions: FairlightAudioMixOption[]
mixOption: FairlightAudioMixOption
}
export interface FairlightAudioInput {
properties?: FairlightAudioInputProperties
sources: { [sourceId: string]: FairlightAudioSource | undefined }
// analog?: FairlightAudioInputAnalog
}
// export interface FairlightAudioInputAnalog {
// readonly supportedInputLevels: FairlightAnalogInputLevel[]
// inputLevel: FairlightAnalogInputLevel
// }
export interface FairlightAudioInputProperties {
readonly inputType: FairlightInputType
readonly externalPortType: ExternalPortType
readonly supportedConfigurations: FairlightInputConfiguration[]
activeConfiguration: FairlightInputConfiguration
readonly supportedInputLevels: FairlightAnalogInputLevel[]
activeInputLevel: FairlightAnalogInputLevel
}
export interface FairlightAudioRoutingSource {
readonly audioSourceId: number
readonly audioChannelPair: AudioChannelPair
readonly externalPortType: ExternalPortType
readonly internalPortType: AudioInternalPortType
name: string
}
export interface FairlightAudioRoutingOutput {
readonly audioOutputId: number
readonly audioChannelPair: AudioChannelPair
readonly externalPortType: ExternalPortType
readonly internalPortType: AudioInternalPortType
sourceId: number
name: string
}
export interface FairlightAudioRouting {
sources: Record<number, FairlightAudioRoutingSource>
outputs: Record<number, FairlightAudioRoutingOutput>
}
export interface AtemFairlightAudioState {
inputs: { [input: number]: FairlightAudioInput | undefined }
master?: FairlightAudioMasterChannel
monitor?: FairlightAudioMonitorChannel
audioFollowVideoCrossfadeTransitionEnabled?: boolean
audioRouting?: FairlightAudioRouting
}