@libraz/libsonare 1.0.4 → 1.2.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.
@@ -0,0 +1,1248 @@
1
+ export type ProgressCallback = (progress: number, stage: string) => void;
2
+ export type TempogramMode = 'autocorrelation' | 'auto' | 'ac' | 'cosine' | 0 | 1;
3
+
4
+ export interface WasmKeyResult {
5
+ root: number;
6
+ mode: number;
7
+ confidence: number;
8
+ name: string;
9
+ shortName: string;
10
+ }
11
+
12
+ export interface WasmKeyCandidateResult {
13
+ key: WasmKeyResult;
14
+ correlation: number;
15
+ }
16
+
17
+ export interface WasmBeatResult {
18
+ time: number;
19
+ strength: number;
20
+ }
21
+
22
+ export interface WasmChordResult {
23
+ root: number;
24
+ bass: number;
25
+ quality: number;
26
+ start: number;
27
+ end: number;
28
+ confidence: number;
29
+ name: string;
30
+ }
31
+
32
+ export interface WasmSectionResult {
33
+ type: number;
34
+ start: number;
35
+ end: number;
36
+ energyLevel: number;
37
+ confidence: number;
38
+ name: string;
39
+ }
40
+
41
+ export interface WasmTimbreResult {
42
+ brightness: number;
43
+ warmth: number;
44
+ density: number;
45
+ roughness: number;
46
+ complexity: number;
47
+ }
48
+
49
+ export interface WasmDynamicsResult {
50
+ dynamicRangeDb: number;
51
+ loudnessRangeDb: number;
52
+ crestFactor: number;
53
+ isCompressed: boolean;
54
+ }
55
+
56
+ export interface WasmRhythmResult {
57
+ syncopation: number;
58
+ grooveType: string;
59
+ patternRegularity: number;
60
+ }
61
+
62
+ export interface WasmTimeSignatureResult {
63
+ numerator: number;
64
+ denominator: number;
65
+ confidence: number;
66
+ }
67
+
68
+ export interface WasmAnalysisResult {
69
+ bpm: number;
70
+ bpmConfidence: number;
71
+ key: WasmKeyResult;
72
+ timeSignature: WasmTimeSignatureResult;
73
+ beats: WasmBeatResult[];
74
+ chords: WasmChordResult[];
75
+ sections: WasmSectionResult[];
76
+ timbre: WasmTimbreResult;
77
+ dynamics: WasmDynamicsResult;
78
+ rhythm: WasmRhythmResult;
79
+ form: string;
80
+ }
81
+
82
+ export interface WasmChordAnalysisResult {
83
+ chords: WasmChordResult[];
84
+ }
85
+
86
+ export interface WasmAcousticResult {
87
+ rt60: number;
88
+ edt: number;
89
+ c50: number;
90
+ c80: number;
91
+ d50: number;
92
+ rt60Bands: Float32Array;
93
+ edtBands: Float32Array;
94
+ c50Bands: Float32Array;
95
+ c80Bands: Float32Array;
96
+ confidence: number;
97
+ isBlind: boolean;
98
+ }
99
+
100
+ export interface WasmHpssResult {
101
+ harmonic: Float32Array;
102
+ percussive: Float32Array;
103
+ sampleRate: number;
104
+ }
105
+
106
+ export interface WasmMasteringResult {
107
+ samples: Float32Array;
108
+ sampleRate: number;
109
+ inputLufs: number;
110
+ outputLufs: number;
111
+ appliedGainDb: number;
112
+ latencySamples?: number;
113
+ }
114
+
115
+ export interface WasmMasteringChainResult extends WasmMasteringResult {
116
+ stages: string[];
117
+ }
118
+
119
+ export interface WasmMasteringStereoResult {
120
+ left: Float32Array;
121
+ right: Float32Array;
122
+ sampleRate: number;
123
+ inputLufs: number;
124
+ outputLufs: number;
125
+ appliedGainDb: number;
126
+ latencySamples: number;
127
+ }
128
+
129
+ export interface WasmMasteringStereoChainResult {
130
+ left: Float32Array;
131
+ right: Float32Array;
132
+ sampleRate: number;
133
+ inputLufs: number;
134
+ outputLufs: number;
135
+ appliedGainDb: number;
136
+ stages: string[];
137
+ }
138
+
139
+ export interface WasmMixMeterSnapshot {
140
+ peakDbL: number;
141
+ peakDbR: number;
142
+ rmsDbL: number;
143
+ rmsDbR: number;
144
+ correlation: number;
145
+ monoCompatWidth: number;
146
+ monoCompatPeak: number;
147
+ monoCompatSideRms: number;
148
+ likelyMonoCompatible: boolean;
149
+ momentaryLufs: number;
150
+ shortTermLufs: number;
151
+ integratedLufs: number;
152
+ gainReductionDb: number;
153
+ truePeakDbL: number;
154
+ truePeakDbR: number;
155
+ maxTruePeakDb: number;
156
+ seq: number;
157
+ }
158
+
159
+ export interface WasmMixResult {
160
+ left: Float32Array;
161
+ right: Float32Array;
162
+ sampleRate: number;
163
+ meters: WasmMixMeterSnapshot[];
164
+ }
165
+
166
+ export interface WasmStftResult {
167
+ nBins: number;
168
+ nFrames: number;
169
+ nFft: number;
170
+ hopLength: number;
171
+ sampleRate: number;
172
+ magnitude: Float32Array;
173
+ power: Float32Array;
174
+ }
175
+
176
+ export interface WasmStftDbResult {
177
+ nBins: number;
178
+ nFrames: number;
179
+ db: Float32Array;
180
+ }
181
+
182
+ export interface WasmMelResult {
183
+ nMels: number;
184
+ nFrames: number;
185
+ sampleRate: number;
186
+ hopLength: number;
187
+ power: Float32Array;
188
+ db: Float32Array;
189
+ }
190
+
191
+ export interface WasmMfccResult {
192
+ nMfcc: number;
193
+ nFrames: number;
194
+ coefficients: Float32Array;
195
+ }
196
+
197
+ export interface WasmStftPowerResult {
198
+ nBins: number;
199
+ nFrames: number;
200
+ power: Float32Array;
201
+ }
202
+
203
+ export interface WasmMelPowerResult {
204
+ nMels: number;
205
+ nFrames: number;
206
+ power: Float32Array;
207
+ }
208
+
209
+ export interface WasmChromaResult {
210
+ nChroma: number;
211
+ nFrames: number;
212
+ sampleRate: number;
213
+ hopLength: number;
214
+ features: Float32Array;
215
+ meanEnergy: number[];
216
+ }
217
+
218
+ export interface WasmPitchResult {
219
+ f0: Float32Array;
220
+ voicedProb: Float32Array;
221
+ voicedFlag: boolean[];
222
+ nFrames: number;
223
+ medianF0: number;
224
+ meanF0: number;
225
+ }
226
+
227
+ export interface WasmTrimResult {
228
+ audio: Float32Array;
229
+ startSample: number;
230
+ endSample: number;
231
+ }
232
+
233
+ export interface WasmFrameResult {
234
+ nFrames: number;
235
+ frames: Float32Array;
236
+ }
237
+
238
+ export interface WasmTempogramResult {
239
+ nFrames: number;
240
+ winLength: number;
241
+ data: Float32Array;
242
+ }
243
+
244
+ export interface WasmCyclicTempogramResult {
245
+ nFrames: number;
246
+ nBins: number;
247
+ data: Float32Array;
248
+ }
249
+
250
+ export interface WasmFourierTempogramResult {
251
+ nBins: number;
252
+ nFrames: number;
253
+ data: Float32Array;
254
+ }
255
+
256
+ export interface WasmNnlsChromaResult {
257
+ nChroma: number;
258
+ nFrames: number;
259
+ data: Float32Array;
260
+ }
261
+
262
+ export interface WasmMelodyPoint {
263
+ time: number;
264
+ frequency: number;
265
+ confidence: number;
266
+ }
267
+
268
+ export interface WasmMelodyResult {
269
+ points: WasmMelodyPoint[];
270
+ pitchRangeOctaves: number;
271
+ pitchStability: number;
272
+ meanFrequency: number;
273
+ vibratoRate: number;
274
+ }
275
+
276
+ export interface WasmCqtResult {
277
+ nBins: number;
278
+ nFrames: number;
279
+ hopLength: number;
280
+ sampleRate: number;
281
+ magnitude: Float32Array;
282
+ frequencies: Float32Array;
283
+ }
284
+
285
+ export interface WasmLufsResult {
286
+ integratedLufs: number;
287
+ momentaryLufs: number;
288
+ shortTermLufs: number;
289
+ loudnessRange: number;
290
+ }
291
+
292
+ export interface WasmChordChange {
293
+ root: number;
294
+ quality: number;
295
+ startTime: number;
296
+ confidence: number;
297
+ }
298
+
299
+ export interface WasmBarChord {
300
+ barIndex: number;
301
+ root: number;
302
+ quality: number;
303
+ startTime: number;
304
+ confidence: number;
305
+ }
306
+
307
+ export interface WasmPatternScore {
308
+ name: string;
309
+ score: number;
310
+ }
311
+
312
+ export interface WasmProgressiveEstimate {
313
+ bpm: number;
314
+ bpmConfidence: number;
315
+ bpmCandidateCount: number;
316
+ key: number;
317
+ keyMinor: boolean;
318
+ keyConfidence: number;
319
+ chordRoot: number;
320
+ chordQuality: number;
321
+ chordConfidence: number;
322
+ chordStartTime: number;
323
+ chordProgression: WasmChordChange[];
324
+ barChordProgression: WasmBarChord[];
325
+ currentBar: number;
326
+ barDuration: number;
327
+ votedPattern: WasmBarChord[];
328
+ patternLength: number;
329
+ detectedPatternName: string;
330
+ detectedPatternScore: number;
331
+ allPatternScores: WasmPatternScore[];
332
+ accumulatedSeconds: number;
333
+ usedFrames: number;
334
+ updated: boolean;
335
+ }
336
+
337
+ export interface WasmAnalyzerStats {
338
+ totalFrames: number;
339
+ totalSamples: number;
340
+ durationSeconds: number;
341
+ estimate: WasmProgressiveEstimate;
342
+ }
343
+
344
+ export interface WasmFrameBuffer {
345
+ nFrames: number;
346
+ timestamps: Float32Array;
347
+ mel: Float32Array;
348
+ chroma: Float32Array;
349
+ onsetStrength: Float32Array;
350
+ rmsEnergy: Float32Array;
351
+ spectralCentroid: Float32Array;
352
+ spectralFlatness: Float32Array;
353
+ chordRoot: Int32Array;
354
+ chordQuality: Int32Array;
355
+ chordConfidence: Float32Array;
356
+ }
357
+
358
+ export interface WasmStreamFramesU8 {
359
+ nFrames: number;
360
+ nMels: number;
361
+ timestamps: Float32Array;
362
+ mel: Uint8Array;
363
+ chroma: Uint8Array;
364
+ onsetStrength: Uint8Array;
365
+ rmsEnergy: Uint8Array;
366
+ spectralCentroid: Uint8Array;
367
+ spectralFlatness: Uint8Array;
368
+ }
369
+
370
+ export interface WasmStreamFramesI16 {
371
+ nFrames: number;
372
+ nMels: number;
373
+ timestamps: Float32Array;
374
+ mel: Int16Array;
375
+ chroma: Int16Array;
376
+ onsetStrength: Int16Array;
377
+ rmsEnergy: Int16Array;
378
+ spectralCentroid: Int16Array;
379
+ spectralFlatness: Int16Array;
380
+ }
381
+
382
+ export interface WasmStreamingMasteringChain {
383
+ prepare: (sampleRate: number, maxBlockSize: number, numChannels: number) => void;
384
+ processMono: (samples: Float32Array) => Float32Array;
385
+ processStereo: (
386
+ left: Float32Array,
387
+ right: Float32Array,
388
+ ) => { left: Float32Array; right: Float32Array };
389
+ reset: () => void;
390
+ latencySamples: () => number;
391
+ stageNames: () => string[];
392
+ delete: () => void;
393
+ }
394
+
395
+ export interface WasmEqSpectrumSnapshot {
396
+ preLeft: Float32Array;
397
+ preRight: Float32Array;
398
+ postLeft: Float32Array;
399
+ postRight: Float32Array;
400
+ bandGainDb: Float32Array;
401
+ profileDb: Float32Array;
402
+ lastAutoGainDb: number;
403
+ seq: number;
404
+ }
405
+
406
+ export interface WasmStreamingEqualizer {
407
+ setBand: (index: number, band: Record<string, unknown>) => void;
408
+ clear: () => void;
409
+ setPhaseMode: (mode: number) => void;
410
+ setAutoGain: (enabled: boolean) => void;
411
+ setGainScale: (scale: number) => void;
412
+ setOutputGainDb: (gainDb: number) => void;
413
+ setOutputPan: (pan: number) => void;
414
+ setSidechainMono: (samples: Float32Array) => void;
415
+ setSidechainStereo: (left: Float32Array, right: Float32Array) => void;
416
+ clearSidechain: () => void;
417
+ lastAutoGainDb: () => number;
418
+ latencySamples: () => number;
419
+ processMono: (samples: Float32Array) => Float32Array;
420
+ processStereo: (
421
+ left: Float32Array,
422
+ right: Float32Array,
423
+ ) => { left: Float32Array; right: Float32Array };
424
+ spectrum: () => WasmEqSpectrumSnapshot;
425
+ match: (source: Float32Array, reference: Float32Array, options: Record<string, unknown>) => void;
426
+ delete: () => void;
427
+ }
428
+
429
+ export interface WasmEngineClip {
430
+ id?: number;
431
+ channels: Float32Array[];
432
+ startPpq: number;
433
+ lengthSamples?: number;
434
+ clipOffsetSamples?: number;
435
+ loop?: boolean;
436
+ gain?: number;
437
+ fadeInSamples?: number;
438
+ fadeOutSamples?: number;
439
+ }
440
+
441
+ export interface WasmEngineParameterInfo {
442
+ id: number;
443
+ name: string;
444
+ unit: string;
445
+ minValue: number;
446
+ maxValue: number;
447
+ defaultValue: number;
448
+ rtSafe: boolean;
449
+ defaultCurve: number;
450
+ }
451
+
452
+ export interface WasmEngineAutomationPoint {
453
+ ppq: number;
454
+ value: number;
455
+ curveToNext?: number;
456
+ }
457
+
458
+ export interface WasmEngineMarker {
459
+ id: number;
460
+ ppq: number;
461
+ name?: string;
462
+ }
463
+
464
+ export interface WasmEngineMetronomeConfig {
465
+ enabled: boolean;
466
+ beatGain?: number;
467
+ accentGain?: number;
468
+ clickSamples?: number;
469
+ }
470
+
471
+ export interface WasmEngineGraphNode {
472
+ id: string;
473
+ type?: number;
474
+ gainDb?: number;
475
+ numPorts?: number;
476
+ }
477
+
478
+ export interface WasmEngineGraphConnection {
479
+ sourceNode: string;
480
+ sourcePort: number;
481
+ destNode: string;
482
+ destPort: number;
483
+ mix?: number;
484
+ }
485
+
486
+ export interface WasmEngineGraphParameterBinding {
487
+ paramId: number;
488
+ nodeId: string;
489
+ }
490
+
491
+ export interface WasmEngineGraphSpec {
492
+ nodes: WasmEngineGraphNode[];
493
+ connections: WasmEngineGraphConnection[];
494
+ inputNode: string;
495
+ outputNode: string;
496
+ numChannels: number;
497
+ parameterBindings?: WasmEngineGraphParameterBinding[];
498
+ }
499
+
500
+ export interface WasmEngineTelemetry {
501
+ type: number;
502
+ error: number;
503
+ renderFrame: number;
504
+ timelineSample: number;
505
+ audibleTimelineSample: number;
506
+ graphLatencySamplesQ8: number;
507
+ value: number;
508
+ }
509
+
510
+ export interface WasmEngineMeterTelemetry {
511
+ targetId: number;
512
+ renderFrame: number;
513
+ seq: number;
514
+ peakDbL: number;
515
+ peakDbR: number;
516
+ rmsDbL: number;
517
+ rmsDbR: number;
518
+ truePeakDbL: number;
519
+ truePeakDbR: number;
520
+ maxTruePeakDb: number;
521
+ correlation: number;
522
+ monoCompatWidth: number;
523
+ momentaryLufs: number;
524
+ shortTermLufs: number;
525
+ integratedLufs: number;
526
+ gainReductionDb: number;
527
+ droppedRecords: number;
528
+ }
529
+
530
+ export interface WasmEngineCaptureStatus {
531
+ capturedFrames: number;
532
+ overflowCount: number;
533
+ armed: boolean;
534
+ punchEnabled: boolean;
535
+ }
536
+
537
+ export interface WasmEngineTransportState {
538
+ playing: boolean;
539
+ looping: boolean;
540
+ renderFrame: number;
541
+ samplePosition: number;
542
+ ppq: number;
543
+ bpm: number;
544
+ loopStartPpq: number;
545
+ loopEndPpq: number;
546
+ sampleRate: number;
547
+ }
548
+
549
+ export interface WasmEngineBounceOptions {
550
+ totalFrames: number;
551
+ blockSize?: number;
552
+ numChannels?: number;
553
+ targetSampleRate?: number;
554
+ sourceSampleRate?: number;
555
+ normalizeLufs?: boolean;
556
+ targetLufs?: number;
557
+ dither?: 0 | 1 | 2 | 3;
558
+ ditherBits?: number;
559
+ ditherSeed?: number;
560
+ }
561
+
562
+ export interface WasmEngineBounceResult {
563
+ interleaved: Float32Array;
564
+ frames: number;
565
+ numChannels: number;
566
+ sampleRate: number;
567
+ integratedLufs: number;
568
+ }
569
+
570
+ export interface WasmEngineFreezeOptions {
571
+ totalFrames: number;
572
+ blockSize?: number;
573
+ numChannels?: number;
574
+ clipId?: number;
575
+ startPpq?: number;
576
+ gain?: number;
577
+ }
578
+
579
+ export interface WasmEngineFreezeResult {
580
+ clipId: number;
581
+ frames: number;
582
+ numChannels: number;
583
+ }
584
+
585
+ export interface WasmEngineProcessWithMonitorResult {
586
+ output: Float32Array[];
587
+ monitor: Float32Array[];
588
+ }
589
+
590
+ export interface WasmRealtimeEngine {
591
+ prepare: (
592
+ sampleRate: number,
593
+ maxBlockSize: number,
594
+ commandCapacity: number,
595
+ telemetryCapacity: number,
596
+ ) => void;
597
+ setParameter: (paramId: number, value: number, renderFrame: number) => void;
598
+ setParameterSmoothed: (paramId: number, value: number, renderFrame: number) => void;
599
+ getTransportState: () => WasmEngineTransportState;
600
+ play: (renderFrame: number) => void;
601
+ stop: (renderFrame: number) => void;
602
+ seekSample: (timelineSample: number, renderFrame: number) => void;
603
+ seekPpq: (ppq: number, renderFrame: number) => void;
604
+ setTempo: (bpm: number) => void;
605
+ setTimeSignature: (numerator: number, denominator: number) => void;
606
+ setLoop: (startPpq: number, endPpq: number, enabled: boolean) => void;
607
+ addParameter: (info: WasmEngineParameterInfo) => void;
608
+ parameterCount: () => number;
609
+ parameterInfoByIndex: (index: number) => WasmEngineParameterInfo;
610
+ parameterInfo: (id: number) => WasmEngineParameterInfo;
611
+ setAutomationLane: (paramId: number, points: WasmEngineAutomationPoint[]) => void;
612
+ automationLaneCount: () => number;
613
+ setMarkers: (markers: WasmEngineMarker[]) => void;
614
+ markerCount: () => number;
615
+ markerByIndex: (index: number) => WasmEngineMarker;
616
+ marker: (id: number) => WasmEngineMarker;
617
+ seekMarker: (id: number, renderFrame: number) => void;
618
+ setLoopFromMarkers: (startMarkerId: number, endMarkerId: number) => void;
619
+ setMetronome: (config: WasmEngineMetronomeConfig) => void;
620
+ metronome: () => Required<WasmEngineMetronomeConfig>;
621
+ countInEndSample: (startSample: number, bars: number) => number;
622
+ setGraph: (spec: WasmEngineGraphSpec) => void;
623
+ graphNodeCount: () => number;
624
+ graphConnectionCount: () => number;
625
+ setClips: (clips: WasmEngineClip[]) => void;
626
+ clipCount: () => number;
627
+ setCaptureBuffer: (numChannels: number, capacityFrames: number) => void;
628
+ armCapture: (armed: boolean) => void;
629
+ setCapturePunch: (startSample: number, endSample: number, enabled: boolean) => void;
630
+ resetCapture: () => void;
631
+ captureStatus: () => WasmEngineCaptureStatus;
632
+ capturedAudio: () => Float32Array[];
633
+ process: (channels: Float32Array[]) => Float32Array[];
634
+ processWithMonitor: (channels: Float32Array[]) => WasmEngineProcessWithMonitorResult;
635
+ renderOffline: (channels: Float32Array[], blockSize: number) => Float32Array[];
636
+ bounceOffline: (options: WasmEngineBounceOptions) => WasmEngineBounceResult;
637
+ freezeOffline: (options: WasmEngineFreezeOptions) => WasmEngineFreezeResult;
638
+ drainTelemetry: (maxRecords: number) => WasmEngineTelemetry[];
639
+ drainMeterTelemetry: (maxRecords: number) => WasmEngineMeterTelemetry[];
640
+ delete: () => void;
641
+ }
642
+
643
+ export interface WasmMixer {
644
+ compile: () => void;
645
+ processStereo: (
646
+ leftChannels: Float32Array[],
647
+ rightChannels: Float32Array[],
648
+ ) => { left: Float32Array; right: Float32Array; sampleRate: number };
649
+ processStereoInto: (
650
+ leftChannels: Float32Array[],
651
+ rightChannels: Float32Array[],
652
+ outLeft: Float32Array,
653
+ outRight: Float32Array,
654
+ ) => void;
655
+ inputLeftView: (index: number) => Float32Array;
656
+ inputRightView: (index: number) => Float32Array;
657
+ outputLeftView: () => Float32Array;
658
+ outputRightView: () => Float32Array;
659
+ processPreparedStereo: (numSamples: number) => void;
660
+ stripCount: () => number;
661
+ scheduleInsertAutomation: (
662
+ stripIndex: number,
663
+ insertIndex: number,
664
+ paramId: number,
665
+ samplePos: number,
666
+ value: number,
667
+ curve: number,
668
+ ) => void;
669
+ stripById: (id: string) => number;
670
+ setSoloed: (stripIndex: number, soloed: boolean) => void;
671
+ setSoloSafe: (stripIndex: number, soloSafe: boolean) => void;
672
+ setPolarityInvert: (stripIndex: number, invertLeft: boolean, invertRight: boolean) => void;
673
+ setPanLaw: (stripIndex: number, panLaw: number) => void;
674
+ setChannelDelaySamples: (stripIndex: number, delaySamples: number) => void;
675
+ setVcaOffsetDb: (stripIndex: number, offsetDb: number) => void;
676
+ setDualPan: (stripIndex: number, leftPan: number, rightPan: number) => void;
677
+ addSend: (
678
+ stripIndex: number,
679
+ id: string,
680
+ destinationBusId: string,
681
+ sendDb: number,
682
+ timing: number,
683
+ ) => number;
684
+ setSendDb: (stripIndex: number, sendIndex: number, sendDb: number) => void;
685
+ meterTap: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
686
+ stripMeter: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
687
+ scheduleFaderAutomation: (
688
+ stripIndex: number,
689
+ samplePos: number,
690
+ faderDb: number,
691
+ curve: number,
692
+ ) => void;
693
+ schedulePanAutomation: (
694
+ stripIndex: number,
695
+ samplePos: number,
696
+ pan: number,
697
+ curve: number,
698
+ ) => void;
699
+ scheduleWidthAutomation: (
700
+ stripIndex: number,
701
+ samplePos: number,
702
+ width: number,
703
+ curve: number,
704
+ ) => void;
705
+ scheduleSendAutomation: (
706
+ stripIndex: number,
707
+ sendIndex: number,
708
+ samplePos: number,
709
+ db: number,
710
+ curve: number,
711
+ ) => void;
712
+ readGoniometerLatest: (stripIndex: number, maxPoints: number) => WasmGoniometerPoint[];
713
+ addBus: (id: string, role: string) => void;
714
+ removeBus: (id: string) => void;
715
+ busCount: () => number;
716
+ addVcaGroup: (id: string, gainDb: number, members: string[]) => void;
717
+ removeVcaGroup: (id: string) => void;
718
+ vcaGroupCount: () => number;
719
+ toSceneJson: () => string;
720
+ delete: () => void;
721
+ }
722
+
723
+ export interface WasmGoniometerPoint {
724
+ left: number;
725
+ right: number;
726
+ }
727
+
728
+ export interface WasmStreamAnalyzer {
729
+ process: (samples: Float32Array) => void;
730
+ processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
731
+ availableFrames: () => number;
732
+ readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
733
+ readFramesU8: (maxFrames: number) => WasmStreamFramesU8;
734
+ readFramesI16: (maxFrames: number) => WasmStreamFramesI16;
735
+ reset: (baseSampleOffset?: number) => void;
736
+ stats: () => WasmAnalyzerStats;
737
+ frameCount: () => number;
738
+ currentTime: () => number;
739
+ sampleRate: () => number;
740
+ setExpectedDuration: (durationSeconds: number) => void;
741
+ setNormalizationGain: (gain: number) => void;
742
+ setTuningRefHz: (refHz: number) => void;
743
+ delete: () => void;
744
+ }
745
+
746
+ export interface SonareModule {
747
+ detectBpm: (samples: Float32Array, sampleRate: number) => number;
748
+ detectKey: (samples: Float32Array, sampleRate: number) => WasmKeyResult;
749
+ _detectKeyWithOptions: (
750
+ samples: Float32Array,
751
+ sampleRate: number,
752
+ nFft: number,
753
+ hopLength: number,
754
+ useHpss: boolean,
755
+ loudnessWeighted: boolean,
756
+ highPassHz: number,
757
+ modes: number[],
758
+ profileType: number,
759
+ genreHint: string,
760
+ ) => WasmKeyResult;
761
+ _detectKeyCandidates: (
762
+ samples: Float32Array,
763
+ sampleRate: number,
764
+ nFft: number,
765
+ hopLength: number,
766
+ useHpss: boolean,
767
+ loudnessWeighted: boolean,
768
+ highPassHz: number,
769
+ modes: number[],
770
+ profileType: number,
771
+ genreHint: string,
772
+ ) => WasmKeyCandidateResult[];
773
+ detectOnsets: (samples: Float32Array, sampleRate: number) => Float32Array;
774
+ detectBeats: (samples: Float32Array, sampleRate: number) => Float32Array;
775
+ detectDownbeats: (samples: Float32Array, sampleRate: number) => Float32Array;
776
+ detectChords: (
777
+ samples: Float32Array,
778
+ sampleRate: number,
779
+ minDuration: number,
780
+ smoothingWindow: number,
781
+ threshold: number,
782
+ useTriadsOnly: boolean,
783
+ nFft: number,
784
+ hopLength: number,
785
+ useBeatSync: boolean,
786
+ useHmm: boolean,
787
+ hmmBeamWidth: number,
788
+ useKeyContext: boolean,
789
+ keyRoot: number,
790
+ keyMode: number,
791
+ detectInversions: boolean,
792
+ chromaMethod: number,
793
+ ) => WasmChordAnalysisResult;
794
+ analyze: (samples: Float32Array, sampleRate: number) => WasmAnalysisResult;
795
+ analyzeImpulseResponse: (
796
+ samples: Float32Array,
797
+ sampleRate: number,
798
+ nOctaveBands: number,
799
+ ) => WasmAcousticResult;
800
+ detectAcoustic: (
801
+ samples: Float32Array,
802
+ sampleRate: number,
803
+ nOctaveBands: number,
804
+ nThirdOctaveSubbands: number,
805
+ minDecayDb: number,
806
+ noiseFloorMarginDb: number,
807
+ ) => WasmAcousticResult;
808
+ analyzeWithProgress: (
809
+ samples: Float32Array,
810
+ sampleRate: number,
811
+ progressCallback: ProgressCallback | null,
812
+ ) => WasmAnalysisResult;
813
+ version: () => string;
814
+ engineAbiVersion: () => number;
815
+
816
+ hpss: (
817
+ samples: Float32Array,
818
+ sampleRate: number,
819
+ kernelHarmonic: number,
820
+ kernelPercussive: number,
821
+ ) => WasmHpssResult;
822
+ harmonic: (samples: Float32Array, sampleRate: number) => Float32Array;
823
+ percussive: (samples: Float32Array, sampleRate: number) => Float32Array;
824
+ timeStretch: (samples: Float32Array, sampleRate: number, rate: number) => Float32Array;
825
+ pitchShift: (samples: Float32Array, sampleRate: number, semitones: number) => Float32Array;
826
+ pitchCorrectToMidi: (
827
+ samples: Float32Array,
828
+ sampleRate: number,
829
+ currentMidi: number,
830
+ targetMidi: number,
831
+ ) => Float32Array;
832
+ noteStretch: (
833
+ samples: Float32Array,
834
+ sampleRate: number,
835
+ onsetSample: number,
836
+ offsetSample: number,
837
+ stretchRatio: number,
838
+ ) => Float32Array;
839
+ voiceChange: (
840
+ samples: Float32Array,
841
+ sampleRate: number,
842
+ pitchSemitones: number,
843
+ formantFactor: number,
844
+ ) => Float32Array;
845
+ normalize: (samples: Float32Array, sampleRate: number, targetDb: number) => Float32Array;
846
+ mastering: (
847
+ samples: Float32Array,
848
+ sampleRate: number,
849
+ targetLufs: number,
850
+ ceilingDb: number,
851
+ truePeakOversample: number,
852
+ ) => WasmMasteringResult;
853
+ masteringProcessorNames: () => string[];
854
+ masteringPairProcessorNames: () => string[];
855
+ masteringPairAnalysisNames: () => string[];
856
+ masteringStereoAnalysisNames: () => string[];
857
+ masteringProcess: (
858
+ processorName: string,
859
+ samples: Float32Array,
860
+ sampleRate: number,
861
+ params: Record<string, number | boolean>,
862
+ ) => WasmMasteringResult;
863
+ masteringProcessStereo: (
864
+ processorName: string,
865
+ left: Float32Array,
866
+ right: Float32Array,
867
+ sampleRate: number,
868
+ params: Record<string, number | boolean>,
869
+ ) => WasmMasteringStereoResult;
870
+ masteringPairProcess: (
871
+ processorName: string,
872
+ source: Float32Array,
873
+ reference: Float32Array,
874
+ sampleRate: number,
875
+ params: Record<string, number | boolean>,
876
+ ) => WasmMasteringResult;
877
+ masteringPairAnalyze: (
878
+ analysisName: string,
879
+ source: Float32Array,
880
+ reference: Float32Array,
881
+ sampleRate: number,
882
+ params: Record<string, number | boolean>,
883
+ ) => string;
884
+ masteringStereoAnalyze: (
885
+ analysisName: string,
886
+ left: Float32Array,
887
+ right: Float32Array,
888
+ sampleRate: number,
889
+ params: Record<string, number | boolean>,
890
+ ) => string;
891
+ masteringAssistantSuggest: (
892
+ samples: Float32Array,
893
+ sampleRate: number,
894
+ params: Record<string, number | boolean>,
895
+ ) => string;
896
+ masteringAudioProfile: (
897
+ samples: Float32Array,
898
+ sampleRate: number,
899
+ params: Record<string, number | boolean>,
900
+ ) => string;
901
+ masteringStreamingPreview: (
902
+ samples: Float32Array,
903
+ sampleRate: number,
904
+ platforms: Array<{ name: string; targetLufs: number; ceilingDb: number }>,
905
+ ) => string;
906
+ masteringChain: (
907
+ samples: Float32Array,
908
+ sampleRate: number,
909
+ config: Record<string, unknown>,
910
+ ) => WasmMasteringChainResult;
911
+ masteringChainStereo: (
912
+ left: Float32Array,
913
+ right: Float32Array,
914
+ sampleRate: number,
915
+ config: Record<string, unknown>,
916
+ ) => WasmMasteringStereoChainResult;
917
+ masteringChainWithProgress: (
918
+ samples: Float32Array,
919
+ sampleRate: number,
920
+ config: Record<string, unknown>,
921
+ progressCallback: ProgressCallback | null,
922
+ ) => WasmMasteringChainResult;
923
+ masteringChainStereoWithProgress: (
924
+ left: Float32Array,
925
+ right: Float32Array,
926
+ sampleRate: number,
927
+ config: Record<string, unknown>,
928
+ progressCallback: ProgressCallback | null,
929
+ ) => WasmMasteringStereoChainResult;
930
+ masteringPresetNames: () => string[];
931
+ masterAudio: (
932
+ presetName: string,
933
+ samples: Float32Array,
934
+ sampleRate: number,
935
+ overrides: Record<string, number | boolean> | null,
936
+ ) => WasmMasteringChainResult;
937
+ masterAudioStereo: (
938
+ presetName: string,
939
+ left: Float32Array,
940
+ right: Float32Array,
941
+ sampleRate: number,
942
+ overrides: Record<string, number | boolean> | null,
943
+ ) => WasmMasteringStereoChainResult;
944
+ mixingScenePresetNames: () => string[];
945
+ mixingScenePresetJson: (presetName: string) => string;
946
+ mixStereo: (
947
+ leftChannels: Float32Array[],
948
+ rightChannels: Float32Array[],
949
+ sampleRate: number,
950
+ options: Record<string, unknown>,
951
+ ) => WasmMixResult;
952
+ trim: (samples: Float32Array, sampleRate: number, thresholdDb: number) => Float32Array;
953
+
954
+ stft: (
955
+ samples: Float32Array,
956
+ sampleRate: number,
957
+ nFft: number,
958
+ hopLength: number,
959
+ ) => WasmStftResult;
960
+ stftDb: (
961
+ samples: Float32Array,
962
+ sampleRate: number,
963
+ nFft: number,
964
+ hopLength: number,
965
+ ) => WasmStftDbResult;
966
+
967
+ melSpectrogram: (
968
+ samples: Float32Array,
969
+ sampleRate: number,
970
+ nFft: number,
971
+ hopLength: number,
972
+ nMels: number,
973
+ ) => WasmMelResult;
974
+ mfcc: (
975
+ samples: Float32Array,
976
+ sampleRate: number,
977
+ nFft: number,
978
+ hopLength: number,
979
+ nMels: number,
980
+ nMfcc: number,
981
+ ) => WasmMfccResult;
982
+
983
+ melToStft: (
984
+ melPower: Float32Array,
985
+ nMels: number,
986
+ nFrames: number,
987
+ sampleRate: number,
988
+ nFft: number,
989
+ hopLength: number,
990
+ fmin: number,
991
+ fmax: number,
992
+ ) => WasmStftPowerResult;
993
+ melToAudio: (
994
+ melPower: Float32Array,
995
+ nMels: number,
996
+ nFrames: number,
997
+ sampleRate: number,
998
+ nFft: number,
999
+ hopLength: number,
1000
+ nIter: number,
1001
+ fmin: number,
1002
+ fmax: number,
1003
+ ) => Float32Array;
1004
+ mfccToMel: (
1005
+ mfcc: Float32Array,
1006
+ nMfcc: number,
1007
+ nFrames: number,
1008
+ nMels: number,
1009
+ ) => WasmMelPowerResult;
1010
+ mfccToAudio: (
1011
+ mfcc: Float32Array,
1012
+ nMfcc: number,
1013
+ nFrames: number,
1014
+ nMels: number,
1015
+ sampleRate: number,
1016
+ nFft: number,
1017
+ hopLength: number,
1018
+ nIter: number,
1019
+ fmin: number,
1020
+ fmax: number,
1021
+ ) => Float32Array;
1022
+
1023
+ chroma: (
1024
+ samples: Float32Array,
1025
+ sampleRate: number,
1026
+ nFft: number,
1027
+ hopLength: number,
1028
+ ) => WasmChromaResult;
1029
+
1030
+ spectralCentroid: (
1031
+ samples: Float32Array,
1032
+ sampleRate: number,
1033
+ nFft: number,
1034
+ hopLength: number,
1035
+ ) => Float32Array;
1036
+ spectralBandwidth: (
1037
+ samples: Float32Array,
1038
+ sampleRate: number,
1039
+ nFft: number,
1040
+ hopLength: number,
1041
+ ) => Float32Array;
1042
+ spectralRolloff: (
1043
+ samples: Float32Array,
1044
+ sampleRate: number,
1045
+ nFft: number,
1046
+ hopLength: number,
1047
+ rollPercent: number,
1048
+ ) => Float32Array;
1049
+ spectralFlatness: (
1050
+ samples: Float32Array,
1051
+ sampleRate: number,
1052
+ nFft: number,
1053
+ hopLength: number,
1054
+ ) => Float32Array;
1055
+ zeroCrossingRate: (
1056
+ samples: Float32Array,
1057
+ sampleRate: number,
1058
+ frameLength: number,
1059
+ hopLength: number,
1060
+ ) => Float32Array;
1061
+ rmsEnergy: (
1062
+ samples: Float32Array,
1063
+ sampleRate: number,
1064
+ frameLength: number,
1065
+ hopLength: number,
1066
+ ) => Float32Array;
1067
+
1068
+ pitchYin: (
1069
+ samples: Float32Array,
1070
+ sampleRate: number,
1071
+ frameLength: number,
1072
+ hopLength: number,
1073
+ fmin: number,
1074
+ fmax: number,
1075
+ threshold: number,
1076
+ ) => WasmPitchResult;
1077
+ pitchPyin: (
1078
+ samples: Float32Array,
1079
+ sampleRate: number,
1080
+ frameLength: number,
1081
+ hopLength: number,
1082
+ fmin: number,
1083
+ fmax: number,
1084
+ threshold: number,
1085
+ ) => WasmPitchResult;
1086
+
1087
+ hzToMel: (hz: number) => number;
1088
+ melToHz: (mel: number) => number;
1089
+ hzToMidi: (hz: number) => number;
1090
+ midiToHz: (midi: number) => number;
1091
+ hzToNote: (hz: number) => string;
1092
+ noteToHz: (note: string) => number;
1093
+ framesToTime: (frames: number, sr: number, hopLength: number) => number;
1094
+ timeToFrames: (time: number, sr: number, hopLength: number) => number;
1095
+ framesToSamples: (frames: number, hopLength: number, nFft: number) => number;
1096
+ samplesToFrames: (samples: number, hopLength: number, nFft: number) => number;
1097
+ powerToDb: (values: Float32Array, ref: number, amin: number, topDb: number) => Float32Array;
1098
+ amplitudeToDb: (values: Float32Array, ref: number, amin: number, topDb: number) => Float32Array;
1099
+ dbToPower: (values: Float32Array, ref: number) => Float32Array;
1100
+ dbToAmplitude: (values: Float32Array, ref: number) => Float32Array;
1101
+ preemphasis: (samples: Float32Array, coef: number, zi?: number | null) => Float32Array;
1102
+ deemphasis: (samples: Float32Array, coef: number, zi?: number | null) => Float32Array;
1103
+ trimSilence: (
1104
+ samples: Float32Array,
1105
+ topDb: number,
1106
+ frameLength: number,
1107
+ hopLength: number,
1108
+ ) => WasmTrimResult;
1109
+ splitSilence: (
1110
+ samples: Float32Array,
1111
+ topDb: number,
1112
+ frameLength: number,
1113
+ hopLength: number,
1114
+ ) => Int32Array;
1115
+ frameSignal: (samples: Float32Array, frameLength: number, hopLength: number) => WasmFrameResult;
1116
+ padCenter: (values: Float32Array, size: number, padValue: number) => Float32Array;
1117
+ fixLength: (values: Float32Array, size: number, padValue: number) => Float32Array;
1118
+ fixFrames: (frames: Int32Array, xMin: number, xMax: number, pad: boolean) => Int32Array;
1119
+ peakPick: (
1120
+ values: Float32Array,
1121
+ preMax: number,
1122
+ postMax: number,
1123
+ preAvg: number,
1124
+ postAvg: number,
1125
+ delta: number,
1126
+ wait: number,
1127
+ ) => Int32Array;
1128
+ vectorNormalize: (values: Float32Array, normType: number, threshold: number) => Float32Array;
1129
+ pcen: (
1130
+ values: Float32Array,
1131
+ nBins: number,
1132
+ nFrames: number,
1133
+ options?: Record<string, number> | null,
1134
+ ) => Float32Array;
1135
+ tonnetz: (chromagram: Float32Array, nChroma: number, nFrames: number) => Float32Array;
1136
+ tempogram: (
1137
+ onsetEnvelope: Float32Array,
1138
+ sampleRate: number,
1139
+ hopLength: number,
1140
+ winLength: number,
1141
+ mode: TempogramMode,
1142
+ ) => WasmTempogramResult;
1143
+ cyclicTempogram: (
1144
+ onsetEnvelope: Float32Array,
1145
+ sampleRate: number,
1146
+ hopLength: number,
1147
+ winLength: number,
1148
+ bpmMin: number,
1149
+ nBins: number,
1150
+ ) => WasmCyclicTempogramResult;
1151
+ plp: (
1152
+ onsetEnvelope: Float32Array,
1153
+ sampleRate: number,
1154
+ hopLength: number,
1155
+ tempoMin: number,
1156
+ tempoMax: number,
1157
+ winLength: number,
1158
+ ) => Float32Array;
1159
+ nnlsChroma: (samples: Float32Array, sampleRate: number) => WasmNnlsChromaResult;
1160
+ cqt: (
1161
+ samples: Float32Array,
1162
+ sampleRate: number,
1163
+ hopLength: number,
1164
+ fmin: number,
1165
+ nBins: number,
1166
+ binsPerOctave: number,
1167
+ ) => WasmCqtResult;
1168
+ vqt: (
1169
+ samples: Float32Array,
1170
+ sampleRate: number,
1171
+ hopLength: number,
1172
+ fmin: number,
1173
+ nBins: number,
1174
+ binsPerOctave: number,
1175
+ gamma: number,
1176
+ ) => WasmCqtResult;
1177
+ analyzeSections: (
1178
+ samples: Float32Array,
1179
+ sampleRate: number,
1180
+ nFft: number,
1181
+ hopLength: number,
1182
+ minSectionSec: number,
1183
+ ) => WasmSectionResult[];
1184
+ analyzeMelody: (
1185
+ samples: Float32Array,
1186
+ sampleRate: number,
1187
+ fmin: number,
1188
+ fmax: number,
1189
+ frameLength: number,
1190
+ hopLength: number,
1191
+ threshold: number,
1192
+ ) => WasmMelodyResult;
1193
+ onsetEnvelope: (
1194
+ samples: Float32Array,
1195
+ sampleRate: number,
1196
+ nFft: number,
1197
+ hopLength: number,
1198
+ nMels: number,
1199
+ ) => Float32Array;
1200
+ fourierTempogram: (
1201
+ onsetEnvelope: Float32Array,
1202
+ sampleRate: number,
1203
+ hopLength: number,
1204
+ winLength: number,
1205
+ ) => WasmFourierTempogramResult;
1206
+ tempogramRatio: (
1207
+ tempogramData: Float32Array,
1208
+ winLength: number,
1209
+ sampleRate: number,
1210
+ hopLength: number,
1211
+ ) => Float32Array;
1212
+ lufs: (samples: Float32Array, sampleRate: number) => WasmLufsResult;
1213
+ momentaryLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
1214
+ shortTermLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
1215
+ resample: (samples: Float32Array, srcSr: number, targetSr: number) => Float32Array;
1216
+
1217
+ StreamAnalyzer: new (
1218
+ sampleRate: number,
1219
+ nFft: number,
1220
+ hopLength: number,
1221
+ nMels: number,
1222
+ fmin: number,
1223
+ fmax: number,
1224
+ tuningRefHz: number,
1225
+ computeMagnitude: boolean,
1226
+ computeMel: boolean,
1227
+ computeChroma: boolean,
1228
+ computeOnset: boolean,
1229
+ computeSpectral: boolean,
1230
+ emitEveryNFrames: number,
1231
+ magnitudeDownsample: number,
1232
+ keyUpdateIntervalSec: number,
1233
+ bpmUpdateIntervalSec: number,
1234
+ window: number,
1235
+ outputFormat: number,
1236
+ ) => WasmStreamAnalyzer;
1237
+ RealtimeEngine: new (
1238
+ sampleRate: number,
1239
+ maxBlockSize: number,
1240
+ commandCapacity: number,
1241
+ telemetryCapacity: number,
1242
+ ) => WasmRealtimeEngine;
1243
+
1244
+ createStreamingMasteringChain: (config: Record<string, unknown>) => WasmStreamingMasteringChain;
1245
+ createEqualizer: (config: Record<string, unknown>) => WasmStreamingEqualizer;
1246
+ createMixerFromSceneJson: (json: string, sampleRate: number, blockSize: number) => WasmMixer;
1247
+ mixerPresetJson: (presetName: string) => string;
1248
+ }