@9c5s/node-tcnet 0.5.1 → 0.6.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/dist/index.d.mts CHANGED
@@ -1,325 +1,440 @@
1
1
  import EventEmitter from 'events';
2
2
 
3
- declare enum TCNetMessageType {
4
- OptIn = 2,
5
- OptOut = 3,
6
- Status = 5,
7
- TimeSync = 10,
8
- Error = 13,
9
- Request = 20,
10
- ApplicationData = 30,
11
- Control = 101,
12
- Text = 128,
13
- Keyboard = 132,
14
- Data = 200,
15
- File = 204,
16
- Time = 254
17
- }
18
- declare enum TCNetDataPacketType {
19
- MetricsData = 2,
20
- MetaData = 4,
21
- BeatGridData = 8,
22
- CUEData = 12,
23
- SmallWaveFormData = 16,
24
- BigWaveFormData = 32,
25
- MixerData = 150
26
- }
27
- declare enum NodeType {
28
- Auto = 1,
29
- Master = 2,
30
- Slave = 4,
31
- Repeater = 8
32
- }
33
- interface TCNetReaderWriter {
34
- read(): void;
35
- write(): void;
36
- }
37
- declare abstract class TCNetPacket implements TCNetReaderWriter {
38
- buffer: Buffer;
39
- header: TCNetManagementHeader;
40
- abstract read(): void;
41
- abstract write(): void;
42
- abstract length(): number;
43
- abstract type(): number;
44
- }
45
- declare class TCNetManagementHeader implements TCNetReaderWriter {
46
- static MAJOR_VERSION: number;
47
- static MAGIC_HEADER: string;
48
- buffer: Buffer;
49
- nodeId: number;
50
- minorVersion: number;
51
- messageType: TCNetMessageType;
52
- nodeName: string;
53
- seq: number;
54
- nodeType: number;
55
- nodeOptions: number;
56
- timestamp: number;
57
- constructor(buffer: Buffer);
58
- read(): void;
59
- write(): void;
60
- }
61
- declare class TCNetOptInPacket extends TCNetPacket {
62
- nodeCount: number;
63
- nodeListenerPort: number;
64
- uptime: number;
65
- vendorName: string;
66
- appName: string;
67
- majorVersion: number;
68
- minorVersion: number;
69
- bugVersion: number;
70
- read(): void;
71
- write(): void;
72
- length(): number;
73
- type(): number;
74
- }
75
- declare class TCNetOptOutPacket extends TCNetPacket {
76
- nodeCount: number;
77
- nodeListenerPort: number;
78
- read(): void;
79
- write(): void;
80
- length(): number;
81
- type(): number;
82
- }
83
- declare enum TCNetLayerStatus {
84
- IDLE = 0,
85
- PLAYING = 3,
86
- LOOPING = 4,
87
- PAUSED = 5,
88
- STOPPED = 6,
89
- CUEDOWN = 7,
90
- PLATTERDOWN = 8,
91
- FFWD = 9,
92
- FFRV = 10,
93
- HOLD = 11
94
- }
95
- declare class TCNetStatusPacket extends TCNetPacket {
96
- data: null | {
97
- nodeCount: number;
98
- nodeListenerPort: number;
99
- smpteMode: number;
100
- autoMasterMode: number;
101
- };
102
- layers: Array<{
103
- source: number;
104
- status: TCNetLayerStatus;
105
- trackID: number;
106
- name: string;
107
- }>;
108
- read(): void;
109
- write(): void;
110
- length(): number;
111
- type(): number;
112
- }
113
- declare class TCNetRequestPacket extends TCNetPacket {
114
- dataType: number;
115
- layer: number;
116
- read(): void;
117
- write(): void;
118
- length(): number;
119
- type(): number;
120
- }
121
- declare enum TCNetTimecodeState {
122
- Stopped = 0,
123
- Running = 1,
124
- ForceReSync = 2
125
- }
126
- declare class TCNetTimecode {
127
- mode: number;
128
- state: TCNetTimecodeState;
129
- hours: number;
130
- minutes: number;
131
- seconds: number;
132
- frames: number;
133
- read(buffer: Buffer, offset: number): void;
134
- }
135
- type TCNetTimePacketLayer = {
136
- currentTimeMillis: number;
137
- totalTimeMillis: number;
138
- beatMarker: number;
139
- state: TCNetLayerStatus;
140
- onAir: number;
141
- };
142
- declare class TCNetTimePacket extends TCNetPacket {
143
- private _layers;
144
- private _generalSMPTEMode;
145
- read(): void;
146
- write(): void;
147
- length(): number;
148
- type(): number;
149
- get layers(): TCNetTimePacketLayer[];
150
- get generalSMPTEMode(): number;
151
- }
152
- declare class TCNetDataPacket extends TCNetPacket {
153
- dataType: TCNetDataPacketType;
154
- /**
155
- * 0-indexed layer ID (0-7)
156
- */
157
- layer: number;
158
- read(): void;
159
- write(): void;
160
- length(): number;
161
- type(): number;
162
- }
163
- declare enum TCNetLayerSyncMaster {
164
- Slave = 0,
165
- Master = 1
166
- }
167
- declare class TCNetDataPacketMetrics extends TCNetDataPacket {
168
- data: {
169
- state: TCNetLayerStatus;
170
- syncMaster: TCNetLayerSyncMaster;
171
- beatMarker: number;
172
- trackLength: number;
173
- currentPosition: number;
174
- speed: number;
175
- beatNumber: number;
176
- bpm: number;
177
- pitchBend: number;
178
- trackID: number;
179
- } | null;
180
- read(): void;
181
- write(): void;
182
- length(): number;
183
- }
184
- declare class TCNetDataPacketMetadata extends TCNetDataPacket {
185
- info: {
186
- trackArtist: string;
187
- trackTitle: string;
188
- trackKey: number;
189
- trackID: number;
190
- } | null;
191
- read(): void;
192
- write(): void;
193
- length(): number;
194
- }
195
- interface Constructable<T> {
196
- new (...args: unknown[]): T;
197
- }
198
- declare const TCNetPackets: Record<TCNetMessageType, Constructable<TCNetPacket> | null>;
3
+ type CuePoint = {
4
+ index: number;
5
+ type: number;
6
+ inTime: number;
7
+ outTime: number;
8
+ color: {
9
+ r: number;
10
+ g: number;
11
+ b: number;
12
+ };
13
+ };
14
+ type CueData = {
15
+ loopInTime: number;
16
+ loopOutTime: number;
17
+ cues: CuePoint[];
18
+ };
19
+ type WaveformBar = {
20
+ level: number;
21
+ color: number;
22
+ };
23
+ type WaveformData = {
24
+ bars: WaveformBar[];
25
+ };
26
+ type BeatGridEntry = {
27
+ beatNumber: number;
28
+ beatType: number;
29
+ timestampMs: number;
30
+ };
31
+ type BeatGridData = {
32
+ entries: BeatGridEntry[];
33
+ };
34
+ type MixerChannel = {
35
+ sourceSelect: number;
36
+ audioLevel: number;
37
+ faderLevel: number;
38
+ trimLevel: number;
39
+ compLevel: number;
40
+ eqHi: number;
41
+ eqHiMid: number;
42
+ eqLowMid: number;
43
+ eqLow: number;
44
+ filterColor: number;
45
+ send: number;
46
+ cueA: number;
47
+ cueB: number;
48
+ crossfaderAssign: number;
49
+ };
50
+ type MixerData = {
51
+ mixerId: number;
52
+ mixerType: number;
53
+ mixerName: string;
54
+ masterAudioLevel: number;
55
+ masterFaderLevel: number;
56
+ masterFilter: number;
57
+ masterIsolatorOn: boolean;
58
+ masterIsolatorHi: number;
59
+ masterIsolatorMid: number;
60
+ masterIsolatorLow: number;
61
+ filterHpf: number;
62
+ filterLpf: number;
63
+ filterResonance: number;
64
+ crossFader: number;
65
+ crossFaderCurve: number;
66
+ channelFaderCurve: number;
67
+ beatFxOn: boolean;
68
+ beatFxSelect: number;
69
+ beatFxLevelDepth: number;
70
+ beatFxChannelSelect: number;
71
+ headphonesALevel: number;
72
+ headphonesBLevel: number;
73
+ boothLevel: number;
74
+ channels: MixerChannel[];
75
+ };
76
+
77
+ declare enum TCNetMessageType {
78
+ OptIn = 2,
79
+ OptOut = 3,
80
+ Status = 5,
81
+ TimeSync = 10,
82
+ Error = 13,
83
+ Request = 20,
84
+ ApplicationData = 30,
85
+ Control = 101,
86
+ Text = 128,
87
+ Keyboard = 132,
88
+ Data = 200,
89
+ File = 204,
90
+ Time = 254
91
+ }
92
+ declare enum TCNetDataPacketType {
93
+ MetricsData = 2,
94
+ MetaData = 4,
95
+ BeatGridData = 8,
96
+ CUEData = 12,
97
+ SmallWaveFormData = 16,
98
+ BigWaveFormData = 32,
99
+ MixerData = 150
100
+ }
101
+ declare enum NodeType {
102
+ Auto = 1,
103
+ Master = 2,
104
+ Slave = 4,
105
+ Repeater = 8
106
+ }
107
+ interface TCNetReaderWriter {
108
+ read(): void;
109
+ write(): void;
110
+ }
111
+ declare abstract class TCNetPacket implements TCNetReaderWriter {
112
+ buffer: Buffer;
113
+ header: TCNetManagementHeader;
114
+ abstract read(): void;
115
+ abstract write(): void;
116
+ abstract length(): number;
117
+ abstract type(): number;
118
+ }
119
+ declare class TCNetManagementHeader implements TCNetReaderWriter {
120
+ static MAJOR_VERSION: number;
121
+ static MAGIC_HEADER: string;
122
+ buffer: Buffer;
123
+ nodeId: number;
124
+ minorVersion: number;
125
+ messageType: TCNetMessageType;
126
+ nodeName: string;
127
+ seq: number;
128
+ nodeType: number;
129
+ nodeOptions: number;
130
+ timestamp: number;
131
+ constructor(buffer: Buffer);
132
+ read(): void;
133
+ write(): void;
134
+ }
135
+ declare class TCNetOptInPacket extends TCNetPacket {
136
+ nodeCount: number;
137
+ nodeListenerPort: number;
138
+ uptime: number;
139
+ vendorName: string;
140
+ appName: string;
141
+ majorVersion: number;
142
+ minorVersion: number;
143
+ bugVersion: number;
144
+ read(): void;
145
+ write(): void;
146
+ length(): number;
147
+ type(): number;
148
+ }
149
+ declare class TCNetOptOutPacket extends TCNetPacket {
150
+ nodeCount: number;
151
+ nodeListenerPort: number;
152
+ read(): void;
153
+ write(): void;
154
+ length(): number;
155
+ type(): number;
156
+ }
157
+ declare enum TCNetLayerStatus {
158
+ IDLE = 0,
159
+ PLAYING = 3,
160
+ LOOPING = 4,
161
+ PAUSED = 5,
162
+ STOPPED = 6,
163
+ CUEDOWN = 7,
164
+ PLATTERDOWN = 8,
165
+ FFWD = 9,
166
+ FFRV = 10,
167
+ HOLD = 11
168
+ }
169
+ declare class TCNetStatusPacket extends TCNetPacket {
170
+ data: null | {
171
+ nodeCount: number;
172
+ nodeListenerPort: number;
173
+ smpteMode: number;
174
+ autoMasterMode: number;
175
+ };
176
+ layers: Array<{
177
+ source: number;
178
+ status: TCNetLayerStatus;
179
+ trackID: number;
180
+ name: string;
181
+ }>;
182
+ read(): void;
183
+ write(): void;
184
+ length(): number;
185
+ type(): number;
186
+ }
187
+ declare class TCNetRequestPacket extends TCNetPacket {
188
+ dataType: number;
189
+ layer: number;
190
+ read(): void;
191
+ write(): void;
192
+ length(): number;
193
+ type(): number;
194
+ }
195
+ declare enum TCNetTimecodeState {
196
+ Stopped = 0,
197
+ Running = 1,
198
+ ForceReSync = 2
199
+ }
200
+ declare class TCNetTimecode {
201
+ mode: number;
202
+ state: TCNetTimecodeState;
203
+ hours: number;
204
+ minutes: number;
205
+ seconds: number;
206
+ frames: number;
207
+ read(buffer: Buffer, offset: number): void;
208
+ }
209
+ type TCNetTimePacketLayer = {
210
+ currentTimeMillis: number;
211
+ totalTimeMillis: number;
212
+ beatMarker: number;
213
+ state: TCNetLayerStatus;
214
+ onAir: number;
215
+ };
216
+ declare class TCNetTimePacket extends TCNetPacket {
217
+ private _layers;
218
+ private _generalSMPTEMode;
219
+ read(): void;
220
+ write(): void;
221
+ length(): number;
222
+ type(): number;
223
+ get layers(): TCNetTimePacketLayer[];
224
+ get generalSMPTEMode(): number;
225
+ }
226
+ declare class TCNetDataPacket extends TCNetPacket {
227
+ dataType: TCNetDataPacketType;
228
+ /**
229
+ * 0-indexed layer ID (0-7)
230
+ */
231
+ layer: number;
232
+ read(): void;
233
+ write(): void;
234
+ length(): number;
235
+ type(): number;
236
+ }
237
+ declare enum TCNetLayerSyncMaster {
238
+ Slave = 0,
239
+ Master = 1
240
+ }
241
+ declare class TCNetDataPacketMetrics extends TCNetDataPacket {
242
+ data: {
243
+ state: TCNetLayerStatus;
244
+ syncMaster: TCNetLayerSyncMaster;
245
+ beatMarker: number;
246
+ trackLength: number;
247
+ currentPosition: number;
248
+ speed: number;
249
+ beatNumber: number;
250
+ bpm: number;
251
+ pitchBend: number;
252
+ trackID: number;
253
+ } | null;
254
+ read(): void;
255
+ write(): void;
256
+ length(): number;
257
+ }
258
+ declare class TCNetDataPacketMetadata extends TCNetDataPacket {
259
+ info: {
260
+ trackArtist: string;
261
+ trackTitle: string;
262
+ trackKey: number;
263
+ trackID: number;
264
+ } | null;
265
+ read(): void;
266
+ write(): void;
267
+ length(): number;
268
+ }
269
+ declare class TCNetDataPacketCUE extends TCNetDataPacket {
270
+ data: CueData | null;
271
+ read(): void;
272
+ write(): void;
273
+ length(): number;
274
+ }
275
+ declare class TCNetDataPacketSmallWaveForm extends TCNetDataPacket {
276
+ data: WaveformData | null;
277
+ read(): void;
278
+ write(): void;
279
+ length(): number;
280
+ }
281
+ declare class TCNetDataPacketMixer extends TCNetDataPacket {
282
+ data: MixerData | null;
283
+ read(): void;
284
+ write(): void;
285
+ length(): number;
286
+ }
287
+ declare class TCNetDataPacketBeatGrid extends TCNetDataPacket {
288
+ data: BeatGridData | null;
289
+ read(): void;
290
+ readAssembled(assembled: Buffer): void;
291
+ private readFromOffset;
292
+ write(): void;
293
+ length(): number;
294
+ }
295
+ declare class TCNetDataPacketBigWaveForm extends TCNetDataPacket {
296
+ data: WaveformData | null;
297
+ read(): void;
298
+ readAssembled(assembled: Buffer): void;
299
+ write(): void;
300
+ length(): number;
301
+ }
302
+ interface Constructable<T> {
303
+ new (...args: unknown[]): T;
304
+ }
305
+ declare const TCNetPackets: Record<TCNetMessageType, Constructable<TCNetPacket> | null>;
199
306
  declare const TCNetDataPackets: Record<TCNetDataPacketType, typeof TCNetDataPacket | null>;
200
307
 
201
- type TCNetLogger = {
202
- error: (error: Error) => void;
203
- debug: (message: string) => void;
204
- };
205
- declare class TCNetConfiguration {
206
- logger: TCNetLogger | null;
207
- unicastPort: number;
208
- applicationCode: number;
209
- nodeId: number;
210
- nodeName: string;
211
- vendorName: string;
212
- appName: string;
213
- broadcastInterface: string | null;
214
- broadcastAddress: string;
215
- broadcastListeningAddress: string;
216
- requestTimeout: number;
217
- }
218
- /**
219
- * Low level implementation of the TCNet protocol
220
- */
221
- declare class TCNetClient extends EventEmitter {
222
- private config;
223
- private broadcastSocket;
224
- private unicastSocket;
225
- private timestampSocket;
226
- private server;
227
- private seq;
228
- private uptime;
229
- private connected;
230
- private connectedHandler;
231
- private requests;
232
- private announcementInterval;
233
- /**
234
- *
235
- * @param config configuration for TCNet access
236
- */
237
- constructor(config?: TCNetConfiguration);
238
- get log(): TCNetLogger | null;
239
- /**
240
- * Wrapper method to bind a socket with a Promise
241
- * @param socket socket to bind
242
- * @param port port to bind to
243
- * @param address address to bind to
244
- * @returns Promise which always resolves (no errors in callback)
245
- */
246
- private bindSocket;
247
- /**
248
- * Connect to the TCNet networks
249
- */
250
- connect(): Promise<void>;
251
- /**
252
- * Disconnects from TCNet network
253
- */
254
- disconnect(): Promise<void>;
255
- /**
256
- * Waiting for unicast from a master
257
- */
258
- private waitConnected;
259
- /**
260
- * Parse a packet from a ManagementHeader
261
- * @param header the received management header
262
- * @returns the parsed packet
263
- */
264
- private parsePacket;
265
- /**
266
- * Callback method to receive datagrams on the broadcast socket
267
- *
268
- * @param msg datagram buffer
269
- * @param rinfo remoteinfo
270
- */
271
- private receiveBroadcast;
272
- /**
273
- * Callback method to receive datagrams on the unicast socket
274
- *
275
- * @param msg datagram buffer
276
- * @param rinfo remoteinfo
277
- */
278
- private receiveUnicast;
279
- /**
280
- * Callback method to receive datagrams on the timestamp socket
281
- * @param msg datagram buffer
282
- * @param rinfo remoteinfo
283
- */
284
- private receiveTimestamp;
285
- /**
286
- * Fill headers of a packet
287
- *
288
- * @param packet Packet that needs header information
289
- */
290
- private fillHeader;
291
- /**
292
- * Generalized method to send packets to a given destination on a given socket
293
- *
294
- * @param packet Packet to send
295
- * @param socket Socket to send on
296
- * @param port Destination Port
297
- * @param address Destination Address
298
- */
299
- private sendPacket;
300
- /**
301
- * Sends a packet to the discovered server
302
- * @param packet Packet to send
303
- */
304
- sendServer(packet: TCNetPacket): Promise<void>;
305
- /**
306
- * Called every second to announce our app on the network
307
- */
308
- private announceApp;
309
- /**
310
- * Broadcasts a packet to the network
311
- *
312
- * @param packet packet to broadcast
313
- */
314
- broadcastPacket(packet: TCNetPacket): Promise<void>;
315
- /**
316
- * Sends a request packet to the discovered server
317
- *
318
- * @param dataType requested data type
319
- * @param layer requested layer
320
- * @returns Promise to wait for answer on request
321
- */
322
- requestData(dataType: number, layer: number): Promise<TCNetDataPacket>;
308
+ type TCNetLogger = {
309
+ error: (error: Error) => void;
310
+ debug: (message: string) => void;
311
+ };
312
+ declare class TCNetConfiguration {
313
+ logger: TCNetLogger | null;
314
+ unicastPort: number;
315
+ applicationCode: number;
316
+ nodeId: number;
317
+ nodeName: string;
318
+ vendorName: string;
319
+ appName: string;
320
+ broadcastInterface: string | null;
321
+ broadcastAddress: string;
322
+ broadcastListeningAddress: string;
323
+ requestTimeout: number;
324
+ }
325
+ /**
326
+ * Low level implementation of the TCNet protocol
327
+ */
328
+ declare class TCNetClient extends EventEmitter {
329
+ private config;
330
+ private broadcastSocket;
331
+ private unicastSocket;
332
+ private timestampSocket;
333
+ private server;
334
+ private seq;
335
+ private uptime;
336
+ private connected;
337
+ private connectedHandler;
338
+ private requests;
339
+ private announcementInterval;
340
+ /**
341
+ *
342
+ * @param config configuration for TCNet access
343
+ */
344
+ constructor(config?: TCNetConfiguration);
345
+ get log(): TCNetLogger | null;
346
+ /**
347
+ * Wrapper method to bind a socket with a Promise
348
+ * @param socket socket to bind
349
+ * @param port port to bind to
350
+ * @param address address to bind to
351
+ * @returns Promise which always resolves (no errors in callback)
352
+ */
353
+ private bindSocket;
354
+ /**
355
+ * Connect to the TCNet networks
356
+ */
357
+ connect(): Promise<void>;
358
+ /**
359
+ * Disconnects from TCNet network
360
+ */
361
+ disconnect(): Promise<void>;
362
+ /**
363
+ * Waiting for unicast from a master
364
+ */
365
+ private waitConnected;
366
+ /**
367
+ * Parse a packet from a ManagementHeader
368
+ * @param header the received management header
369
+ * @returns the parsed packet
370
+ */
371
+ private parsePacket;
372
+ /**
373
+ * Callback method to receive datagrams on the broadcast socket
374
+ *
375
+ * @param msg datagram buffer
376
+ * @param rinfo remoteinfo
377
+ */
378
+ private receiveBroadcast;
379
+ /**
380
+ * Callback method to receive datagrams on the unicast socket
381
+ *
382
+ * @param msg datagram buffer
383
+ * @param rinfo remoteinfo
384
+ */
385
+ private receiveUnicast;
386
+ /**
387
+ * Callback method to receive datagrams on the timestamp socket
388
+ * @param msg datagram buffer
389
+ * @param rinfo remoteinfo
390
+ */
391
+ private receiveTimestamp;
392
+ /**
393
+ * Fill headers of a packet
394
+ *
395
+ * @param packet Packet that needs header information
396
+ */
397
+ private fillHeader;
398
+ /**
399
+ * Generalized method to send packets to a given destination on a given socket
400
+ *
401
+ * @param packet Packet to send
402
+ * @param socket Socket to send on
403
+ * @param port Destination Port
404
+ * @param address Destination Address
405
+ */
406
+ private sendPacket;
407
+ /**
408
+ * Sends a packet to the discovered server
409
+ * @param packet Packet to send
410
+ */
411
+ sendServer(packet: TCNetPacket): Promise<void>;
412
+ /**
413
+ * Called every second to announce our app on the network
414
+ */
415
+ private announceApp;
416
+ /**
417
+ * Broadcasts a packet to the network
418
+ *
419
+ * @param packet packet to broadcast
420
+ */
421
+ broadcastPacket(packet: TCNetPacket): Promise<void>;
422
+ /**
423
+ * Sends a request packet to the discovered server
424
+ *
425
+ * @param dataType requested data type
426
+ * @param layer requested layer
427
+ * @returns Promise to wait for answer on request
428
+ */
429
+ requestData(dataType: number, layer: number): Promise<TCNetDataPacket>;
430
+ }
431
+
432
+ declare class MultiPacketAssembler {
433
+ private packets;
434
+ private totalPackets;
435
+ add(buffer: Buffer): boolean;
436
+ assemble(): Buffer;
437
+ reset(): void;
323
438
  }
324
439
 
325
- export { type Constructable, NodeType, TCNetClient, TCNetConfiguration, TCNetDataPacket, TCNetDataPacketMetadata, TCNetDataPacketMetrics, TCNetDataPacketType, TCNetDataPackets, TCNetLayerStatus, TCNetLayerSyncMaster, TCNetManagementHeader, TCNetMessageType, TCNetOptInPacket, TCNetOptOutPacket, TCNetPacket, TCNetPackets, TCNetRequestPacket, TCNetStatusPacket, TCNetTimePacket, type TCNetTimePacketLayer, TCNetTimecode, TCNetTimecodeState };
440
+ export { type BeatGridData, type BeatGridEntry, type Constructable, type CueData, type CuePoint, type MixerChannel, type MixerData, MultiPacketAssembler, NodeType, TCNetClient, TCNetConfiguration, TCNetDataPacket, TCNetDataPacketBeatGrid, TCNetDataPacketBigWaveForm, TCNetDataPacketCUE, TCNetDataPacketMetadata, TCNetDataPacketMetrics, TCNetDataPacketMixer, TCNetDataPacketSmallWaveForm, TCNetDataPacketType, TCNetDataPackets, TCNetLayerStatus, TCNetLayerSyncMaster, TCNetManagementHeader, TCNetMessageType, TCNetOptInPacket, TCNetOptOutPacket, TCNetPacket, TCNetPackets, TCNetRequestPacket, TCNetStatusPacket, TCNetTimePacket, type TCNetTimePacketLayer, TCNetTimecode, TCNetTimecodeState, type WaveformBar, type WaveformData };