@libraz/libsonare 1.1.0 → 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.
package/src/wasm_types.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export type ProgressCallback = (progress: number, stage: string) => void;
2
+ export type TempogramMode = 'autocorrelation' | 'auto' | 'ac' | 'cosine' | 0 | 1;
2
3
 
3
4
  export interface WasmKeyResult {
4
5
  root: number;
@@ -8,6 +9,11 @@ export interface WasmKeyResult {
8
9
  shortName: string;
9
10
  }
10
11
 
12
+ export interface WasmKeyCandidateResult {
13
+ key: WasmKeyResult;
14
+ correlation: number;
15
+ }
16
+
11
17
  export interface WasmBeatResult {
12
18
  time: number;
13
19
  strength: number;
@@ -15,6 +21,7 @@ export interface WasmBeatResult {
15
21
 
16
22
  export interface WasmChordResult {
17
23
  root: number;
24
+ bass: number;
18
25
  quality: number;
19
26
  start: number;
20
27
  end: number;
@@ -72,6 +79,24 @@ export interface WasmAnalysisResult {
72
79
  form: string;
73
80
  }
74
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
+
75
100
  export interface WasmHpssResult {
76
101
  harmonic: Float32Array;
77
102
  percussive: Float32Array;
@@ -111,6 +136,33 @@ export interface WasmMasteringStereoChainResult {
111
136
  stages: string[];
112
137
  }
113
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
+
114
166
  export interface WasmStftResult {
115
167
  nBins: number;
116
168
  nFrames: number;
@@ -142,6 +194,18 @@ export interface WasmMfccResult {
142
194
  coefficients: Float32Array;
143
195
  }
144
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
+
145
209
  export interface WasmChromaResult {
146
210
  nChroma: number;
147
211
  nFrames: number;
@@ -177,6 +241,54 @@ export interface WasmTempogramResult {
177
241
  data: Float32Array;
178
242
  }
179
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
+
180
292
  export interface WasmChordChange {
181
293
  root: number;
182
294
  quality: number;
@@ -207,6 +319,7 @@ export interface WasmProgressiveEstimate {
207
319
  chordRoot: number;
208
320
  chordQuality: number;
209
321
  chordConfidence: number;
322
+ chordStartTime: number;
210
323
  chordProgression: WasmChordChange[];
211
324
  barChordProgression: WasmBarChord[];
212
325
  currentBar: number;
@@ -242,6 +355,30 @@ export interface WasmFrameBuffer {
242
355
  chordConfidence: Float32Array;
243
356
  }
244
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
+
245
382
  export interface WasmStreamingMasteringChain {
246
383
  prepare: (sampleRate: number, maxBlockSize: number, numChannels: number) => void;
247
384
  processMono: (samples: Float32Array) => Float32Array;
@@ -255,13 +392,346 @@ export interface WasmStreamingMasteringChain {
255
392
  delete: () => void;
256
393
  }
257
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
+
258
728
  export interface WasmStreamAnalyzer {
259
729
  process: (samples: Float32Array) => void;
260
730
  processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
261
731
  availableFrames: () => number;
262
732
  readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
263
- readFramesU8: (maxFrames: number) => unknown;
264
- readFramesI16: (maxFrames: number) => unknown;
733
+ readFramesU8: (maxFrames: number) => WasmStreamFramesU8;
734
+ readFramesI16: (maxFrames: number) => WasmStreamFramesI16;
265
735
  reset: (baseSampleOffset?: number) => void;
266
736
  stats: () => WasmAnalyzerStats;
267
737
  frameCount: () => number;
@@ -276,15 +746,72 @@ export interface WasmStreamAnalyzer {
276
746
  export interface SonareModule {
277
747
  detectBpm: (samples: Float32Array, sampleRate: number) => number;
278
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[];
279
773
  detectOnsets: (samples: Float32Array, sampleRate: number) => Float32Array;
280
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;
281
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;
282
808
  analyzeWithProgress: (
283
809
  samples: Float32Array,
284
810
  sampleRate: number,
285
811
  progressCallback: ProgressCallback | null,
286
812
  ) => WasmAnalysisResult;
287
813
  version: () => string;
814
+ engineAbiVersion: () => number;
288
815
 
289
816
  hpss: (
290
817
  samples: Float32Array,
@@ -296,6 +823,25 @@ export interface SonareModule {
296
823
  percussive: (samples: Float32Array, sampleRate: number) => Float32Array;
297
824
  timeStretch: (samples: Float32Array, sampleRate: number, rate: number) => Float32Array;
298
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;
299
845
  normalize: (samples: Float32Array, sampleRate: number, targetDb: number) => Float32Array;
300
846
  mastering: (
301
847
  samples: Float32Array,
@@ -342,6 +888,21 @@ export interface SonareModule {
342
888
  sampleRate: number,
343
889
  params: Record<string, number | boolean>,
344
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;
345
906
  masteringChain: (
346
907
  samples: Float32Array,
347
908
  sampleRate: number,
@@ -380,6 +941,14 @@ export interface SonareModule {
380
941
  sampleRate: number,
381
942
  overrides: Record<string, number | boolean> | null,
382
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;
383
952
  trim: (samples: Float32Array, sampleRate: number, thresholdDb: number) => Float32Array;
384
953
 
385
954
  stft: (
@@ -411,6 +980,46 @@ export interface SonareModule {
411
980
  nMfcc: number,
412
981
  ) => WasmMfccResult;
413
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
+
414
1023
  chroma: (
415
1024
  samples: Float32Array,
416
1025
  sampleRate: number,
@@ -529,7 +1138,16 @@ export interface SonareModule {
529
1138
  sampleRate: number,
530
1139
  hopLength: number,
531
1140
  winLength: number,
1141
+ mode: TempogramMode,
532
1142
  ) => WasmTempogramResult;
1143
+ cyclicTempogram: (
1144
+ onsetEnvelope: Float32Array,
1145
+ sampleRate: number,
1146
+ hopLength: number,
1147
+ winLength: number,
1148
+ bpmMin: number,
1149
+ nBins: number,
1150
+ ) => WasmCyclicTempogramResult;
533
1151
  plp: (
534
1152
  onsetEnvelope: Float32Array,
535
1153
  sampleRate: number,
@@ -538,6 +1156,62 @@ export interface SonareModule {
538
1156
  tempoMax: number,
539
1157
  winLength: number,
540
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;
541
1215
  resample: (samples: Float32Array, srcSr: number, targetSr: number) => Float32Array;
542
1216
 
543
1217
  StreamAnalyzer: new (
@@ -545,11 +1219,30 @@ export interface SonareModule {
545
1219
  nFft: number,
546
1220
  hopLength: number,
547
1221
  nMels: number,
1222
+ fmin: number,
1223
+ fmax: number,
1224
+ tuningRefHz: number,
1225
+ computeMagnitude: boolean,
548
1226
  computeMel: boolean,
549
1227
  computeChroma: boolean,
550
1228
  computeOnset: boolean,
1229
+ computeSpectral: boolean,
551
1230
  emitEveryNFrames: number,
1231
+ magnitudeDownsample: number,
1232
+ keyUpdateIntervalSec: number,
1233
+ bpmUpdateIntervalSec: number,
1234
+ window: number,
1235
+ outputFormat: number,
552
1236
  ) => WasmStreamAnalyzer;
1237
+ RealtimeEngine: new (
1238
+ sampleRate: number,
1239
+ maxBlockSize: number,
1240
+ commandCapacity: number,
1241
+ telemetryCapacity: number,
1242
+ ) => WasmRealtimeEngine;
553
1243
 
554
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;
555
1248
  }