@raphiiko/wavelink-ts 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/PROTOCOL.md +1126 -0
- package/README.md +348 -0
- package/dist/client.d.ts +155 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +462 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +187 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/websocket-adapter.d.ts +33 -0
- package/dist/websocket-adapter.d.ts.map +1 -0
- package/dist/websocket-adapter.js +64 -0
- package/dist/websocket-adapter.js.map +1 -0
- package/package.json +58 -0
package/README.md
ADDED
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# Wave Link TS
|
|
2
|
+
|
|
3
|
+
A TypeScript library for controlling Elgato Wave Link 3.0 programmatically. It has been reverse engineered from Elgato's Wave Link plugin for Stream Deck.
|
|
4
|
+
|
|
5
|
+
Note that this library is based on Wave Link 3.0 Beta Update 3. Keep in mind things might break with future Wave Link updates.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @raphiiko/wavelink-ts
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or with your preferred package manager:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Bun
|
|
17
|
+
bun add @raphiiko/wavelink-ts
|
|
18
|
+
|
|
19
|
+
# Yarn
|
|
20
|
+
yarn add @raphiiko/wavelink-ts
|
|
21
|
+
|
|
22
|
+
# pnpm
|
|
23
|
+
pnpm add @raphiiko/wavelink-ts
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
### With Bun (Recommended)
|
|
29
|
+
|
|
30
|
+
Bun can run TypeScript directly without a build step:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
bun examples/basic.ts
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### With Node.js
|
|
37
|
+
|
|
38
|
+
Requires building first:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm run build
|
|
42
|
+
node examples/basic-compiled.js
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Basic Usage
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { WaveLinkClient } from "@raphiiko/wavelink-ts";
|
|
49
|
+
|
|
50
|
+
const client = new WaveLinkClient();
|
|
51
|
+
|
|
52
|
+
// Connect to Wave Link
|
|
53
|
+
await client.connect();
|
|
54
|
+
|
|
55
|
+
// Get all channels
|
|
56
|
+
const { channels } = await client.getChannels();
|
|
57
|
+
console.log("Channels:", channels);
|
|
58
|
+
|
|
59
|
+
// Mute a channel
|
|
60
|
+
await client.setChannelMute("my-channel-id", true);
|
|
61
|
+
|
|
62
|
+
// Set volume (0.0 - 1.0)
|
|
63
|
+
await client.setChannelVolume("my-channel-id", 0.5);
|
|
64
|
+
|
|
65
|
+
// Listen for changes
|
|
66
|
+
client.on("channelChanged", (channel) => {
|
|
67
|
+
console.log("Channel updated:", channel.id);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Disconnect when done
|
|
71
|
+
client.disconnect();
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## API Overview
|
|
75
|
+
|
|
76
|
+
### Connection
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
const client = new WaveLinkClient({
|
|
80
|
+
host: "127.0.0.1", // Default
|
|
81
|
+
autoReconnect: true, // Default
|
|
82
|
+
reconnectDelay: 2000, // Default (ms)
|
|
83
|
+
maxReconnectAttempts: 10, // Default
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
await client.connect();
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The client automatically tries ports 1884-1893 until a connection is established.
|
|
90
|
+
|
|
91
|
+
### Getting State
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
// Get application info
|
|
95
|
+
const info = await client.getApplicationInfo();
|
|
96
|
+
|
|
97
|
+
// Get all channels (audio sources)
|
|
98
|
+
const { channels } = await client.getChannels();
|
|
99
|
+
|
|
100
|
+
// Get all mixes (output configurations)
|
|
101
|
+
const { mixes } = await client.getMixes();
|
|
102
|
+
|
|
103
|
+
// Get input devices (microphones, etc.)
|
|
104
|
+
const { inputDevices } = await client.getInputDevices();
|
|
105
|
+
|
|
106
|
+
// Get output devices (speakers, headphones, etc.)
|
|
107
|
+
const { mainOutput, outputDevices } = await client.getOutputDevices();
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Controlling Channels
|
|
111
|
+
|
|
112
|
+
Channels represent audio sources (applications, hardware inputs, etc.):
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// Mute/unmute
|
|
116
|
+
await client.setChannelMute("channel-id", true);
|
|
117
|
+
|
|
118
|
+
// Set overall volume (0.0 - 1.0)
|
|
119
|
+
await client.setChannelVolume("channel-id", 0.75);
|
|
120
|
+
|
|
121
|
+
// Toggle mute
|
|
122
|
+
await client.toggleChannelMute("channel-id");
|
|
123
|
+
|
|
124
|
+
// Set volume for specific mix
|
|
125
|
+
await client.setChannelMixVolume("channel-id", "stream-mix-id", 0.5);
|
|
126
|
+
|
|
127
|
+
// Mute in specific mix only
|
|
128
|
+
await client.setChannelMixMute("channel-id", "stream-mix-id", true);
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Controlling Mixes
|
|
132
|
+
|
|
133
|
+
Mixes are output configurations (Stream Mix, Monitor Mix, etc.):
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
// Set master volume
|
|
137
|
+
await client.setMixVolume("mix-id", 0.9);
|
|
138
|
+
|
|
139
|
+
// Mute/unmute
|
|
140
|
+
await client.setMixMute("mix-id", true);
|
|
141
|
+
|
|
142
|
+
// Toggle mute
|
|
143
|
+
await client.toggleMixMute("mix-id");
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Controlling Inputs
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// Set input gain (0.0 - 1.0)
|
|
150
|
+
await client.setInputGain("device-id", "input-id", 0.8);
|
|
151
|
+
|
|
152
|
+
// Mute/unmute input
|
|
153
|
+
await client.setInputMute("device-id", "input-id", true);
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Controlling Outputs
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
// Set output volume
|
|
160
|
+
await client.setOutputVolume("device-id", "output-id", 0.8);
|
|
161
|
+
|
|
162
|
+
// Switch output to different mix
|
|
163
|
+
await client.switchOutputMix("device-id", "output-id", "monitor-mix-id");
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Events
|
|
167
|
+
|
|
168
|
+
The client emits events for all state changes:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
client.on("connected", () => {
|
|
172
|
+
console.log("Connected to Wave Link");
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
client.on("disconnected", () => {
|
|
176
|
+
console.log("Disconnected from Wave Link");
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
client.on("error", (error) => {
|
|
180
|
+
console.error("Error:", error);
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
// Channel events
|
|
184
|
+
client.on("channelChanged", (channel) => {
|
|
185
|
+
console.log("Channel changed:", channel);
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
client.on("channelsChanged", (result) => {
|
|
189
|
+
console.log("All channels updated:", result.channels);
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
// Mix events
|
|
193
|
+
client.on("mixChanged", (mix) => {
|
|
194
|
+
console.log("Mix changed:", mix);
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
// Input/output events
|
|
198
|
+
client.on("inputDeviceChanged", (device) => {
|
|
199
|
+
console.log("Input device changed:", device);
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
client.on("outputDeviceChanged", (device) => {
|
|
203
|
+
console.log("Output device changed:", device);
|
|
204
|
+
});
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Subscriptions
|
|
208
|
+
|
|
209
|
+
Subscribe to receive additional notifications:
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
// Subscribe to focused app changes
|
|
213
|
+
await client.subscribeFocusedApp(true);
|
|
214
|
+
client.on("focusedAppChanged", ({ appId, appName, channel }) => {
|
|
215
|
+
console.log(`${appName} is now focused`);
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
// Subscribe to level meters (audio levels)
|
|
219
|
+
await client.subscribeLevelMeter("channel", "channel-id", true);
|
|
220
|
+
client.on("levelMeterChanged", ({ channels }) => {
|
|
221
|
+
console.log("Audio levels:", channels);
|
|
222
|
+
});
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Examples
|
|
226
|
+
|
|
227
|
+
All examples can be run with Bun (no build needed) or Node.js (requires `npm run build` first):
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
# With Bun
|
|
231
|
+
bun examples/basic.ts
|
|
232
|
+
|
|
233
|
+
# With Node.js
|
|
234
|
+
npm run build && node dist/examples/basic.js
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Available Examples
|
|
238
|
+
|
|
239
|
+
1. **`basic.ts`** - Connection and getting state
|
|
240
|
+
- Connect to Wave Link
|
|
241
|
+
- Get application info
|
|
242
|
+
- List all channels, mixes, inputs, and outputs
|
|
243
|
+
|
|
244
|
+
2. **`channels.ts`** - Controlling channels
|
|
245
|
+
- Set channel volume (overall and per-mix)
|
|
246
|
+
- Mute/unmute channels (overall and per-mix)
|
|
247
|
+
- Toggle mute
|
|
248
|
+
- Set multiple properties at once
|
|
249
|
+
|
|
250
|
+
3. **`mixes.ts`** - Controlling mixes
|
|
251
|
+
- Set mix master volume
|
|
252
|
+
- Mute/unmute mixes
|
|
253
|
+
- Toggle mix mute
|
|
254
|
+
|
|
255
|
+
4. **`events.ts`** - Listening for changes
|
|
256
|
+
- Connection events
|
|
257
|
+
- Channel/mix change events
|
|
258
|
+
- Input/output change events
|
|
259
|
+
- Focused app changes (requires subscription)
|
|
260
|
+
|
|
261
|
+
## Protocol Documentation
|
|
262
|
+
|
|
263
|
+
For low-level protocol details, see [PROTOCOL.md](./PROTOCOL.md). It documents:
|
|
264
|
+
|
|
265
|
+
- JSON-RPC 2.0 message format
|
|
266
|
+
- All 11 RPC methods
|
|
267
|
+
- All 10 notification types
|
|
268
|
+
- Connection details
|
|
269
|
+
- Raw request/response examples
|
|
270
|
+
|
|
271
|
+
## Project Structure
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
wavelink-api/
|
|
275
|
+
├── src/
|
|
276
|
+
│ ├── index.ts # Main exports
|
|
277
|
+
│ ├── client.ts # WaveLinkClient class
|
|
278
|
+
│ ├── types.ts # TypeScript type definitions
|
|
279
|
+
│ └── websocket-adapter.ts # Bun/Node.js WebSocket adapter
|
|
280
|
+
├── examples/
|
|
281
|
+
│ ├── basic.ts # Connection and getting state
|
|
282
|
+
│ ├── channels.ts # Controlling channels
|
|
283
|
+
│ ├── mixes.ts # Controlling mixes
|
|
284
|
+
│ └── events.ts # Listening for changes
|
|
285
|
+
├── dist/ # Compiled output (after npm run build)
|
|
286
|
+
├── protocol.md # Low-level protocol documentation
|
|
287
|
+
└── README.md # This file
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## How It Works
|
|
291
|
+
|
|
292
|
+
Wave Link runs a WebSocket server on port 1884 (with fallback ports 1885-1893) that uses JSON-RPC 2.0 for communication. This server is used by the Stream Deck plugin for control.
|
|
293
|
+
|
|
294
|
+
The library:
|
|
295
|
+
|
|
296
|
+
1. Automatically tries to connect on ports 1884-1893 with origin `streamdeck://`
|
|
297
|
+
2. Sends JSON-RPC requests to control Wave Link
|
|
298
|
+
3. Receives JSON-RPC notifications for state changes
|
|
299
|
+
4. Automatically detects Bun vs Node.js and uses the appropriate WebSocket implementation
|
|
300
|
+
|
|
301
|
+
## Requirements
|
|
302
|
+
|
|
303
|
+
- **Wave Link 3.0 Beta** must be running
|
|
304
|
+
- **Node.js 18+** or **Bun 1.0+**
|
|
305
|
+
|
|
306
|
+
## Runtime Support
|
|
307
|
+
|
|
308
|
+
The library automatically detects the runtime and uses:
|
|
309
|
+
|
|
310
|
+
- **Bun**: Native WebSocket API (faster, no dependencies)
|
|
311
|
+
- **Node.js**: `ws` package (reliable, battle-tested)
|
|
312
|
+
|
|
313
|
+
This is transparent to users - the API is identical regardless of runtime.
|
|
314
|
+
|
|
315
|
+
## Troubleshooting
|
|
316
|
+
|
|
317
|
+
### Connection fails
|
|
318
|
+
|
|
319
|
+
**Problem**: `Error: WebSocket connection failed`
|
|
320
|
+
|
|
321
|
+
**Solutions**:
|
|
322
|
+
|
|
323
|
+
1. Make sure Wave Link is running
|
|
324
|
+
2. The client automatically tries ports 1884-1893, so port conflicts are usually handled automatically
|
|
325
|
+
3. Try restarting Wave Link
|
|
326
|
+
4. Check that no firewall is blocking localhost connections
|
|
327
|
+
|
|
328
|
+
### Channel IDs are weird
|
|
329
|
+
|
|
330
|
+
Wave Link auto-generates channel IDs like `PCM_OUT_00_V_10_SD6` or `{0.0.1.00000000}.{guid}`. To find your channel IDs, run:
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
bun examples/basic.ts
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
This will list all available channels and mixes with their IDs.
|
|
337
|
+
|
|
338
|
+
### Can't control specific application
|
|
339
|
+
|
|
340
|
+
Wave Link organizes applications into channels automatically. You control the channel, not individual applications. Use `addToChannel()` to move applications between channels.
|
|
341
|
+
|
|
342
|
+
## License
|
|
343
|
+
|
|
344
|
+
MIT
|
|
345
|
+
|
|
346
|
+
## Disclaimer
|
|
347
|
+
|
|
348
|
+
This is an unofficial library and is not affiliated with or endorsed by Elgato or Corsair.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import type { WaveLinkClientOptions, ApplicationInfo, InputDevicesResult, OutputDevicesResult, ChannelsResult, MixesResult, SetInputDeviceParams, SetOutputDeviceParams, SetChannelParams, SetMixParams, AddToChannelParams, SetSubscriptionParams, EventName, EventCallback } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Wave Link API Client
|
|
4
|
+
*
|
|
5
|
+
* Provides a typed interface for controlling Elgato Wave Link 3.0.
|
|
6
|
+
*/
|
|
7
|
+
export declare class WaveLinkClient {
|
|
8
|
+
private ws;
|
|
9
|
+
private requestId;
|
|
10
|
+
private pendingRequests;
|
|
11
|
+
private eventHandlers;
|
|
12
|
+
private reconnectAttempts;
|
|
13
|
+
private reconnectTimer;
|
|
14
|
+
private isManuallyDisconnected;
|
|
15
|
+
private options;
|
|
16
|
+
private currentPort;
|
|
17
|
+
private readonly minPort;
|
|
18
|
+
private readonly maxPort;
|
|
19
|
+
private portAttempts;
|
|
20
|
+
private readonly maxPortAttempts;
|
|
21
|
+
constructor(options?: WaveLinkClientOptions);
|
|
22
|
+
/**
|
|
23
|
+
* Connect to Wave Link
|
|
24
|
+
* Automatically tries ports 1884-1893 until a connection is established
|
|
25
|
+
*/
|
|
26
|
+
connect(): Promise<void>;
|
|
27
|
+
private tryConnect;
|
|
28
|
+
/**
|
|
29
|
+
* Disconnect from Wave Link
|
|
30
|
+
*/
|
|
31
|
+
disconnect(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Check if connected
|
|
34
|
+
*/
|
|
35
|
+
isConnected(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Add event listener
|
|
38
|
+
*/
|
|
39
|
+
on<E extends EventName>(event: E, callback: EventCallback<E>): void;
|
|
40
|
+
/**
|
|
41
|
+
* Remove event listener
|
|
42
|
+
*/
|
|
43
|
+
off<E extends EventName>(event: E, callback: EventCallback<E>): void;
|
|
44
|
+
/**
|
|
45
|
+
* Remove all event listeners for an event
|
|
46
|
+
*/
|
|
47
|
+
removeAllListeners(event?: EventName): void;
|
|
48
|
+
private emit;
|
|
49
|
+
private handleDisconnect;
|
|
50
|
+
private handleMessage;
|
|
51
|
+
private handleResponse;
|
|
52
|
+
private handleNotification;
|
|
53
|
+
private call;
|
|
54
|
+
/**
|
|
55
|
+
* Get application information
|
|
56
|
+
*/
|
|
57
|
+
getApplicationInfo(): Promise<ApplicationInfo>;
|
|
58
|
+
/**
|
|
59
|
+
* Get all input devices
|
|
60
|
+
*/
|
|
61
|
+
getInputDevices(): Promise<InputDevicesResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Get all output devices
|
|
64
|
+
*/
|
|
65
|
+
getOutputDevices(): Promise<OutputDevicesResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Get all channels
|
|
68
|
+
*/
|
|
69
|
+
getChannels(): Promise<ChannelsResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Get all mixes
|
|
72
|
+
*/
|
|
73
|
+
getMixes(): Promise<MixesResult>;
|
|
74
|
+
/**
|
|
75
|
+
* Set input device properties
|
|
76
|
+
*/
|
|
77
|
+
setInputDevice(params: SetInputDeviceParams): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Set output device properties
|
|
80
|
+
*/
|
|
81
|
+
setOutputDevice(params: SetOutputDeviceParams): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Set channel properties
|
|
84
|
+
*/
|
|
85
|
+
setChannel(params: SetChannelParams): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Set mix properties
|
|
88
|
+
*/
|
|
89
|
+
setMix(params: SetMixParams): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Add application to channel
|
|
92
|
+
*/
|
|
93
|
+
addToChannel(params: AddToChannelParams): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Subscribe to notifications
|
|
96
|
+
*/
|
|
97
|
+
setSubscription(params: SetSubscriptionParams): Promise<unknown>;
|
|
98
|
+
/**
|
|
99
|
+
* Mute or unmute a channel
|
|
100
|
+
*/
|
|
101
|
+
setChannelMute(channelId: string, isMuted: boolean): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Set channel volume (0.0 - 1.0)
|
|
104
|
+
*/
|
|
105
|
+
setChannelVolume(channelId: string, level: number): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Set channel volume for specific mix
|
|
108
|
+
*/
|
|
109
|
+
setChannelMixVolume(channelId: string, mixId: string, level: number): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Mute or unmute a channel in specific mix
|
|
112
|
+
*/
|
|
113
|
+
setChannelMixMute(channelId: string, mixId: string, isMuted: boolean): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Toggle channel mute
|
|
116
|
+
*/
|
|
117
|
+
toggleChannelMute(channelId: string): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Set mix master volume (0.0 - 1.0)
|
|
120
|
+
*/
|
|
121
|
+
setMixVolume(mixId: string, level: number): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Mute or unmute a mix
|
|
124
|
+
*/
|
|
125
|
+
setMixMute(mixId: string, isMuted: boolean): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Toggle mix mute
|
|
128
|
+
*/
|
|
129
|
+
toggleMixMute(mixId: string): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Set input device gain (0.0 - 1.0)
|
|
132
|
+
*/
|
|
133
|
+
setInputGain(deviceId: string, inputId: string, value: number): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Mute or unmute input device
|
|
136
|
+
*/
|
|
137
|
+
setInputMute(deviceId: string, inputId: string, isMuted: boolean): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Set output device volume (0.0 - 1.0)
|
|
140
|
+
*/
|
|
141
|
+
setOutputVolume(deviceId: string, outputId: string, level: number): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Switch output to different mix
|
|
144
|
+
*/
|
|
145
|
+
switchOutputMix(deviceId: string, outputId: string, mixId: string): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Subscribe to focused app changes
|
|
148
|
+
*/
|
|
149
|
+
subscribeFocusedApp(enabled?: boolean): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Subscribe to level meter changes
|
|
152
|
+
*/
|
|
153
|
+
subscribeLevelMeter(type: "input" | "output" | "channel" | "mix", id: string, enabled?: boolean): Promise<void>;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|