Skip to content

Commit 3915093

Browse files
committed
added set-monitor-level command
1 parent 03f0aac commit 3915093

File tree

2 files changed

+60
-29
lines changed

2 files changed

+60
-29
lines changed

src/actions/config.ts

+24-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { SetRequired } from 'type-fest' // eslint-disable-line n/no-missing-impo
44
export type CompanionActionWithCallback = SetRequired<CompanionActionDefinition, 'callback'>
55

66
import { CompanionActionDefinitions } from '@companion-module/base'
7-
import { GetDropdown, GetMuteDropdown, GetNumberField } from '../choices/common.js'
7+
import { GetDropdown, GetFaderInputField, GetMuteDropdown, GetNumberField } from '../choices/common.js'
88
import { InstanceBaseExt } from '../types.js'
99
import { WingConfig } from '../config.js'
1010
import * as ActionUtil from './utils.js'
@@ -19,6 +19,9 @@ export enum CommonActions {
1919
SetSoloMono = 'set-solo-mono',
2020
SetSoloLRSwap = 'set-solo-swap',
2121

22+
// Monitor
23+
SetMonitorLevel = 'set-monitor-level',
24+
2225
// Talkback
2326
TalkbackOn = 'talkback-on',
2427
TalkbackMode = 'talkback-mode',
@@ -32,6 +35,7 @@ export function createConfigurationActions(self: InstanceBaseExt<WingConfig>): C
3235
const send = self.sendCommand
3336
const ensureLoaded = self.ensureLoaded
3437
const state = self.state
38+
const transitions = self.transitions
3539

3640
const actions: { [id in CommonActions]: CompanionActionWithCallback | undefined } = {
3741
////////////////////////////////////////////////////////////////
@@ -122,6 +126,25 @@ export function createConfigurationActions(self: InstanceBaseExt<WingConfig>): C
122126
}
123127
},
124128
},
129+
[CommonActions.SetMonitorLevel]: {
130+
name: 'Set Monitor Level',
131+
description:
132+
'Set the level of a monitor channel. ATTENTION: This command only works on the Rack and Compact Model, due to the full-size Wing having potentiometers as control knobs.',
133+
options: [
134+
GetDropdown('Monitor', 'mon', [getIdLabelPair('1', 'Monitor 1'), getIdLabelPair('2', 'Monitor 2')], '1'),
135+
...GetFaderInputField('level'),
136+
],
137+
callback: async (event) => {
138+
const cmd = ConfigurationCommands.MonitorLevel(event.options.mon as number)
139+
ActionUtil.runTransition(cmd, 'level', event, state, transitions)
140+
},
141+
subscribe: (event) => {
142+
if (event.options.swap ?? 0 >= 2) {
143+
const cmd = ConfigurationCommands.MonitorLevel(event.options.mon as number)
144+
ensureLoaded(cmd)
145+
}
146+
},
147+
},
125148
////////////////////////////////////////////////////////////////
126149
// Talkback
127150
////////////////////////////////////////////////////////////////

src/commands/config.ts

+36-28
Original file line numberDiff line numberDiff line change
@@ -138,60 +138,68 @@ export namespace ConfigurationCommands {
138138
return `${ConfigNode}/sccfg`
139139
}
140140

141-
export function MonitorEqGain(node: MonitorNode, band: MonitorEqBand): string {
142-
return `${ConfigNode}/mon/${node}/eq/${band}g`
141+
export function MonitorNode(node: number): string {
142+
return `${ConfigNode}/mon/${node}`
143143
}
144144

145-
export function MonitorEqFrequency(node: MonitorNode, band: MonitorEqBand): string {
146-
return `${ConfigNode}/mon/${node}/eq/${band}f`
145+
export function MonitorLevel(node: number): string {
146+
return `${MonitorNode(node)}/lvl`
147147
}
148148

149-
export function MonitorEqQ(node: MonitorNode, band: MonitorEqBand): string {
150-
return `${ConfigNode}/mon/${node}/eq/${band}q`
149+
export function MonitorEqGain(node: number, band: MonitorEqBand): string {
150+
return `${MonitorNode(node)}/eq/${band}g`
151151
}
152152

153-
export function MonitorEqHighShelfGain(node: MonitorNode): string {
154-
return `${ConfigNode}/mon/${node}/eq/hsg`
153+
export function MonitorEqFrequency(node: number, band: MonitorEqBand): string {
154+
return `${MonitorNode(node)}/eq/${band}f`
155155
}
156156

157-
export function MonitorEqHighShelfFrequency(node: MonitorNode): string {
158-
return `${ConfigNode}/mon/${node}/eq/hsf`
157+
export function MonitorEqQ(node: number, band: MonitorEqBand): string {
158+
return `${MonitorNode(node)}/eq/${band}q`
159159
}
160160

161-
export function MonitorLimiterLevel(node: MonitorNode): string {
162-
return `${ConfigNode}/mon/${node}/lim`
161+
export function MonitorEqHighShelfGain(node: number): string {
162+
return `${MonitorNode(node)}/eq/hsg`
163163
}
164164

165-
export function MonitorDelayOn(node: MonitorNode): string {
166-
return `${ConfigNode}/mon/${node}/dly/on`
165+
export function MonitorEqHighShelfFrequency(node: number): string {
166+
return `${MonitorNode(node)}/eq/hsf`
167167
}
168168

169-
export function MonitorDelayMeters(node: MonitorNode): string {
170-
return `${ConfigNode}/mon/${node}/dly/m`
169+
export function MonitorLimiterLevel(node: number): string {
170+
return `${MonitorNode(node)}/lim`
171171
}
172172

173-
export function MonitorDelayDimLevel(node: MonitorNode): string {
174-
return `${ConfigNode}/mon/${node}/dim`
173+
export function MonitorDelayOn(node: number): string {
174+
return `${MonitorNode(node)}/dly/on`
175175
}
176176

177-
export function MonitorPflDim(node: MonitorNode): string {
178-
return `${ConfigNode}/mon/${node}/pfldim`
177+
export function MonitorDelayMeters(node: number): string {
178+
return `${MonitorNode(node)}/dly/m`
179179
}
180180

181-
export function MonitorEqBandSoloTrim(node: MonitorNode): string {
182-
return `${ConfigNode}/mon/${node}/eqbdtrim`
181+
export function MonitorDelayDimLevel(node: number): string {
182+
return `${MonitorNode(node)}/dim`
183183
}
184184

185-
export function MonitorSourceLevel(node: MonitorNode): string {
186-
return `${ConfigNode}/mon/${node}/srclvl`
185+
export function MonitorPflDim(node: number): string {
186+
return `${MonitorNode(node)}/pfldim`
187187
}
188188

189-
export function MonitorSourceMix(node: MonitorNode): string {
190-
return `${ConfigNode}/mon/${node}/srcmix`
189+
export function MonitorEqBandSoloTrim(node: number): string {
190+
return `${MonitorNode(node)}/eqbdtrim`
191191
}
192192

193-
export function MonitorSource(node: MonitorNode): string {
194-
return `${ConfigNode}/mon/${node}/src`
193+
export function MonitorSourceLevel(node: number): string {
194+
return `${MonitorNode(node)}/srclvl`
195+
}
196+
197+
export function MonitorSourceMix(node: number): string {
198+
return `${MonitorNode(node)}/srcmix`
199+
}
200+
201+
export function MonitorSource(node: number): string {
202+
return `${MonitorNode(node)}/src`
195203
}
196204

197205
export function SoloNode(): string {

0 commit comments

Comments
 (0)