@libraz/libsonare 1.1.0 → 1.2.1

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,356 @@ 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 WasmStreamingRetune {
430
+ prepare: (sampleRate: number, maxBlockSize: number) => void;
431
+ reset: () => void;
432
+ setConfig: (config: Record<string, unknown>) => void;
433
+ config: () => { semitones: number; mix: number; grainSize: number };
434
+ grainSize: () => number;
435
+ processMono: (samples: Float32Array) => Float32Array;
436
+ delete: () => void;
437
+ }
438
+
439
+ export interface WasmEngineClip {
440
+ id?: number;
441
+ channels: Float32Array[];
442
+ startPpq: number;
443
+ lengthSamples?: number;
444
+ clipOffsetSamples?: number;
445
+ loop?: boolean;
446
+ gain?: number;
447
+ fadeInSamples?: number;
448
+ fadeOutSamples?: number;
449
+ }
450
+
451
+ export interface WasmEngineParameterInfo {
452
+ id: number;
453
+ name: string;
454
+ unit: string;
455
+ minValue: number;
456
+ maxValue: number;
457
+ defaultValue: number;
458
+ rtSafe: boolean;
459
+ defaultCurve: number;
460
+ }
461
+
462
+ export interface WasmEngineAutomationPoint {
463
+ ppq: number;
464
+ value: number;
465
+ curveToNext?: number;
466
+ }
467
+
468
+ export interface WasmEngineMarker {
469
+ id: number;
470
+ ppq: number;
471
+ name?: string;
472
+ }
473
+
474
+ export interface WasmEngineMetronomeConfig {
475
+ enabled: boolean;
476
+ beatGain?: number;
477
+ accentGain?: number;
478
+ clickSamples?: number;
479
+ }
480
+
481
+ export interface WasmEngineGraphNode {
482
+ id: string;
483
+ type?: number;
484
+ gainDb?: number;
485
+ numPorts?: number;
486
+ }
487
+
488
+ export interface WasmEngineGraphConnection {
489
+ sourceNode: string;
490
+ sourcePort: number;
491
+ destNode: string;
492
+ destPort: number;
493
+ mix?: number;
494
+ }
495
+
496
+ export interface WasmEngineGraphParameterBinding {
497
+ paramId: number;
498
+ nodeId: string;
499
+ }
500
+
501
+ export interface WasmEngineGraphSpec {
502
+ nodes: WasmEngineGraphNode[];
503
+ connections: WasmEngineGraphConnection[];
504
+ inputNode: string;
505
+ outputNode: string;
506
+ numChannels: number;
507
+ parameterBindings?: WasmEngineGraphParameterBinding[];
508
+ }
509
+
510
+ export interface WasmEngineTelemetry {
511
+ type: number;
512
+ error: number;
513
+ renderFrame: number;
514
+ timelineSample: number;
515
+ audibleTimelineSample: number;
516
+ graphLatencySamplesQ8: number;
517
+ value: number;
518
+ }
519
+
520
+ export interface WasmEngineMeterTelemetry {
521
+ targetId: number;
522
+ renderFrame: number;
523
+ seq: number;
524
+ peakDbL: number;
525
+ peakDbR: number;
526
+ rmsDbL: number;
527
+ rmsDbR: number;
528
+ truePeakDbL: number;
529
+ truePeakDbR: number;
530
+ maxTruePeakDb: number;
531
+ correlation: number;
532
+ monoCompatWidth: number;
533
+ momentaryLufs: number;
534
+ shortTermLufs: number;
535
+ integratedLufs: number;
536
+ gainReductionDb: number;
537
+ droppedRecords: number;
538
+ }
539
+
540
+ export interface WasmEngineCaptureStatus {
541
+ capturedFrames: number;
542
+ overflowCount: number;
543
+ armed: boolean;
544
+ punchEnabled: boolean;
545
+ }
546
+
547
+ export interface WasmEngineTransportState {
548
+ playing: boolean;
549
+ looping: boolean;
550
+ renderFrame: number;
551
+ samplePosition: number;
552
+ ppq: number;
553
+ bpm: number;
554
+ loopStartPpq: number;
555
+ loopEndPpq: number;
556
+ sampleRate: number;
557
+ }
558
+
559
+ export interface WasmEngineBounceOptions {
560
+ totalFrames: number;
561
+ blockSize?: number;
562
+ numChannels?: number;
563
+ targetSampleRate?: number;
564
+ sourceSampleRate?: number;
565
+ normalizeLufs?: boolean;
566
+ targetLufs?: number;
567
+ dither?: 0 | 1 | 2 | 3;
568
+ ditherBits?: number;
569
+ ditherSeed?: number;
570
+ }
571
+
572
+ export interface WasmEngineBounceResult {
573
+ interleaved: Float32Array;
574
+ frames: number;
575
+ numChannels: number;
576
+ sampleRate: number;
577
+ integratedLufs: number;
578
+ }
579
+
580
+ export interface WasmEngineFreezeOptions {
581
+ totalFrames: number;
582
+ blockSize?: number;
583
+ numChannels?: number;
584
+ clipId?: number;
585
+ startPpq?: number;
586
+ gain?: number;
587
+ }
588
+
589
+ export interface WasmEngineFreezeResult {
590
+ clipId: number;
591
+ frames: number;
592
+ numChannels: number;
593
+ }
594
+
595
+ export interface WasmEngineProcessWithMonitorResult {
596
+ output: Float32Array[];
597
+ monitor: Float32Array[];
598
+ }
599
+
600
+ export interface WasmRealtimeEngine {
601
+ prepare: (
602
+ sampleRate: number,
603
+ maxBlockSize: number,
604
+ commandCapacity: number,
605
+ telemetryCapacity: number,
606
+ ) => void;
607
+ setParameter: (paramId: number, value: number, renderFrame: number) => void;
608
+ setParameterSmoothed: (paramId: number, value: number, renderFrame: number) => void;
609
+ getTransportState: () => WasmEngineTransportState;
610
+ play: (renderFrame: number) => void;
611
+ stop: (renderFrame: number) => void;
612
+ seekSample: (timelineSample: number, renderFrame: number) => void;
613
+ seekPpq: (ppq: number, renderFrame: number) => void;
614
+ setTempo: (bpm: number) => void;
615
+ setTimeSignature: (numerator: number, denominator: number) => void;
616
+ setLoop: (startPpq: number, endPpq: number, enabled: boolean) => void;
617
+ addParameter: (info: WasmEngineParameterInfo) => void;
618
+ parameterCount: () => number;
619
+ parameterInfoByIndex: (index: number) => WasmEngineParameterInfo;
620
+ parameterInfo: (id: number) => WasmEngineParameterInfo;
621
+ setAutomationLane: (paramId: number, points: WasmEngineAutomationPoint[]) => void;
622
+ automationLaneCount: () => number;
623
+ setMarkers: (markers: WasmEngineMarker[]) => void;
624
+ markerCount: () => number;
625
+ markerByIndex: (index: number) => WasmEngineMarker;
626
+ marker: (id: number) => WasmEngineMarker;
627
+ seekMarker: (id: number, renderFrame: number) => void;
628
+ setLoopFromMarkers: (startMarkerId: number, endMarkerId: number) => void;
629
+ setMetronome: (config: WasmEngineMetronomeConfig) => void;
630
+ metronome: () => Required<WasmEngineMetronomeConfig>;
631
+ countInEndSample: (startSample: number, bars: number) => number;
632
+ setGraph: (spec: WasmEngineGraphSpec) => void;
633
+ graphNodeCount: () => number;
634
+ graphConnectionCount: () => number;
635
+ setClips: (clips: WasmEngineClip[]) => void;
636
+ clipCount: () => number;
637
+ setCaptureBuffer: (numChannels: number, capacityFrames: number) => void;
638
+ armCapture: (armed: boolean) => void;
639
+ setCapturePunch: (startSample: number, endSample: number, enabled: boolean) => void;
640
+ resetCapture: () => void;
641
+ captureStatus: () => WasmEngineCaptureStatus;
642
+ capturedAudio: () => Float32Array[];
643
+ process: (channels: Float32Array[]) => Float32Array[];
644
+ processWithMonitor: (channels: Float32Array[]) => WasmEngineProcessWithMonitorResult;
645
+ renderOffline: (channels: Float32Array[], blockSize: number) => Float32Array[];
646
+ bounceOffline: (options: WasmEngineBounceOptions) => WasmEngineBounceResult;
647
+ freezeOffline: (options: WasmEngineFreezeOptions) => WasmEngineFreezeResult;
648
+ drainTelemetry: (maxRecords: number) => WasmEngineTelemetry[];
649
+ drainMeterTelemetry: (maxRecords: number) => WasmEngineMeterTelemetry[];
650
+ delete: () => void;
651
+ }
652
+
653
+ export interface WasmMixer {
654
+ compile: () => void;
655
+ processStereo: (
656
+ leftChannels: Float32Array[],
657
+ rightChannels: Float32Array[],
658
+ ) => { left: Float32Array; right: Float32Array; sampleRate: number };
659
+ processStereoInto: (
660
+ leftChannels: Float32Array[],
661
+ rightChannels: Float32Array[],
662
+ outLeft: Float32Array,
663
+ outRight: Float32Array,
664
+ ) => void;
665
+ inputLeftView: (index: number) => Float32Array;
666
+ inputRightView: (index: number) => Float32Array;
667
+ outputLeftView: () => Float32Array;
668
+ outputRightView: () => Float32Array;
669
+ processPreparedStereo: (numSamples: number) => void;
670
+ stripCount: () => number;
671
+ scheduleInsertAutomation: (
672
+ stripIndex: number,
673
+ insertIndex: number,
674
+ paramId: number,
675
+ samplePos: number,
676
+ value: number,
677
+ curve: number,
678
+ ) => void;
679
+ stripById: (id: string) => number;
680
+ setSoloed: (stripIndex: number, soloed: boolean) => void;
681
+ setSoloSafe: (stripIndex: number, soloSafe: boolean) => void;
682
+ setPolarityInvert: (stripIndex: number, invertLeft: boolean, invertRight: boolean) => void;
683
+ setPanLaw: (stripIndex: number, panLaw: number) => void;
684
+ setChannelDelaySamples: (stripIndex: number, delaySamples: number) => void;
685
+ setVcaOffsetDb: (stripIndex: number, offsetDb: number) => void;
686
+ setDualPan: (stripIndex: number, leftPan: number, rightPan: number) => void;
687
+ addSend: (
688
+ stripIndex: number,
689
+ id: string,
690
+ destinationBusId: string,
691
+ sendDb: number,
692
+ timing: number,
693
+ ) => number;
694
+ setSendDb: (stripIndex: number, sendIndex: number, sendDb: number) => void;
695
+ meterTap: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
696
+ stripMeter: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
697
+ scheduleFaderAutomation: (
698
+ stripIndex: number,
699
+ samplePos: number,
700
+ faderDb: number,
701
+ curve: number,
702
+ ) => void;
703
+ schedulePanAutomation: (
704
+ stripIndex: number,
705
+ samplePos: number,
706
+ pan: number,
707
+ curve: number,
708
+ ) => void;
709
+ scheduleWidthAutomation: (
710
+ stripIndex: number,
711
+ samplePos: number,
712
+ width: number,
713
+ curve: number,
714
+ ) => void;
715
+ scheduleSendAutomation: (
716
+ stripIndex: number,
717
+ sendIndex: number,
718
+ samplePos: number,
719
+ db: number,
720
+ curve: number,
721
+ ) => void;
722
+ readGoniometerLatest: (stripIndex: number, maxPoints: number) => WasmGoniometerPoint[];
723
+ addBus: (id: string, role: string) => void;
724
+ removeBus: (id: string) => void;
725
+ busCount: () => number;
726
+ addVcaGroup: (id: string, gainDb: number, members: string[]) => void;
727
+ removeVcaGroup: (id: string) => void;
728
+ vcaGroupCount: () => number;
729
+ toSceneJson: () => string;
730
+ delete: () => void;
731
+ }
732
+
733
+ export interface WasmGoniometerPoint {
734
+ left: number;
735
+ right: number;
736
+ }
737
+
258
738
  export interface WasmStreamAnalyzer {
259
739
  process: (samples: Float32Array) => void;
260
740
  processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
261
741
  availableFrames: () => number;
262
742
  readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
263
- readFramesU8: (maxFrames: number) => unknown;
264
- readFramesI16: (maxFrames: number) => unknown;
743
+ readFramesU8: (maxFrames: number) => WasmStreamFramesU8;
744
+ readFramesI16: (maxFrames: number) => WasmStreamFramesI16;
265
745
  reset: (baseSampleOffset?: number) => void;
266
746
  stats: () => WasmAnalyzerStats;
267
747
  frameCount: () => number;
@@ -276,15 +756,72 @@ export interface WasmStreamAnalyzer {
276
756
  export interface SonareModule {
277
757
  detectBpm: (samples: Float32Array, sampleRate: number) => number;
278
758
  detectKey: (samples: Float32Array, sampleRate: number) => WasmKeyResult;
759
+ _detectKeyWithOptions: (
760
+ samples: Float32Array,
761
+ sampleRate: number,
762
+ nFft: number,
763
+ hopLength: number,
764
+ useHpss: boolean,
765
+ loudnessWeighted: boolean,
766
+ highPassHz: number,
767
+ modes: number[],
768
+ profileType: number,
769
+ genreHint: string,
770
+ ) => WasmKeyResult;
771
+ _detectKeyCandidates: (
772
+ samples: Float32Array,
773
+ sampleRate: number,
774
+ nFft: number,
775
+ hopLength: number,
776
+ useHpss: boolean,
777
+ loudnessWeighted: boolean,
778
+ highPassHz: number,
779
+ modes: number[],
780
+ profileType: number,
781
+ genreHint: string,
782
+ ) => WasmKeyCandidateResult[];
279
783
  detectOnsets: (samples: Float32Array, sampleRate: number) => Float32Array;
280
784
  detectBeats: (samples: Float32Array, sampleRate: number) => Float32Array;
785
+ detectDownbeats: (samples: Float32Array, sampleRate: number) => Float32Array;
786
+ detectChords: (
787
+ samples: Float32Array,
788
+ sampleRate: number,
789
+ minDuration: number,
790
+ smoothingWindow: number,
791
+ threshold: number,
792
+ useTriadsOnly: boolean,
793
+ nFft: number,
794
+ hopLength: number,
795
+ useBeatSync: boolean,
796
+ useHmm: boolean,
797
+ hmmBeamWidth: number,
798
+ useKeyContext: boolean,
799
+ keyRoot: number,
800
+ keyMode: number,
801
+ detectInversions: boolean,
802
+ chromaMethod: number,
803
+ ) => WasmChordAnalysisResult;
281
804
  analyze: (samples: Float32Array, sampleRate: number) => WasmAnalysisResult;
805
+ analyzeImpulseResponse: (
806
+ samples: Float32Array,
807
+ sampleRate: number,
808
+ nOctaveBands: number,
809
+ ) => WasmAcousticResult;
810
+ detectAcoustic: (
811
+ samples: Float32Array,
812
+ sampleRate: number,
813
+ nOctaveBands: number,
814
+ nThirdOctaveSubbands: number,
815
+ minDecayDb: number,
816
+ noiseFloorMarginDb: number,
817
+ ) => WasmAcousticResult;
282
818
  analyzeWithProgress: (
283
819
  samples: Float32Array,
284
820
  sampleRate: number,
285
821
  progressCallback: ProgressCallback | null,
286
822
  ) => WasmAnalysisResult;
287
823
  version: () => string;
824
+ engineAbiVersion: () => number;
288
825
 
289
826
  hpss: (
290
827
  samples: Float32Array,
@@ -296,6 +833,25 @@ export interface SonareModule {
296
833
  percussive: (samples: Float32Array, sampleRate: number) => Float32Array;
297
834
  timeStretch: (samples: Float32Array, sampleRate: number, rate: number) => Float32Array;
298
835
  pitchShift: (samples: Float32Array, sampleRate: number, semitones: number) => Float32Array;
836
+ pitchCorrectToMidi: (
837
+ samples: Float32Array,
838
+ sampleRate: number,
839
+ currentMidi: number,
840
+ targetMidi: number,
841
+ ) => Float32Array;
842
+ noteStretch: (
843
+ samples: Float32Array,
844
+ sampleRate: number,
845
+ onsetSample: number,
846
+ offsetSample: number,
847
+ stretchRatio: number,
848
+ ) => Float32Array;
849
+ voiceChange: (
850
+ samples: Float32Array,
851
+ sampleRate: number,
852
+ pitchSemitones: number,
853
+ formantFactor: number,
854
+ ) => Float32Array;
299
855
  normalize: (samples: Float32Array, sampleRate: number, targetDb: number) => Float32Array;
300
856
  mastering: (
301
857
  samples: Float32Array,
@@ -342,6 +898,21 @@ export interface SonareModule {
342
898
  sampleRate: number,
343
899
  params: Record<string, number | boolean>,
344
900
  ) => string;
901
+ masteringAssistantSuggest: (
902
+ samples: Float32Array,
903
+ sampleRate: number,
904
+ params: Record<string, number | boolean>,
905
+ ) => string;
906
+ masteringAudioProfile: (
907
+ samples: Float32Array,
908
+ sampleRate: number,
909
+ params: Record<string, number | boolean>,
910
+ ) => string;
911
+ masteringStreamingPreview: (
912
+ samples: Float32Array,
913
+ sampleRate: number,
914
+ platforms: Array<{ name: string; targetLufs: number; ceilingDb: number }>,
915
+ ) => string;
345
916
  masteringChain: (
346
917
  samples: Float32Array,
347
918
  sampleRate: number,
@@ -380,6 +951,14 @@ export interface SonareModule {
380
951
  sampleRate: number,
381
952
  overrides: Record<string, number | boolean> | null,
382
953
  ) => WasmMasteringStereoChainResult;
954
+ mixingScenePresetNames: () => string[];
955
+ mixingScenePresetJson: (presetName: string) => string;
956
+ mixStereo: (
957
+ leftChannels: Float32Array[],
958
+ rightChannels: Float32Array[],
959
+ sampleRate: number,
960
+ options: Record<string, unknown>,
961
+ ) => WasmMixResult;
383
962
  trim: (samples: Float32Array, sampleRate: number, thresholdDb: number) => Float32Array;
384
963
 
385
964
  stft: (
@@ -411,6 +990,46 @@ export interface SonareModule {
411
990
  nMfcc: number,
412
991
  ) => WasmMfccResult;
413
992
 
993
+ melToStft: (
994
+ melPower: Float32Array,
995
+ nMels: number,
996
+ nFrames: number,
997
+ sampleRate: number,
998
+ nFft: number,
999
+ hopLength: number,
1000
+ fmin: number,
1001
+ fmax: number,
1002
+ ) => WasmStftPowerResult;
1003
+ melToAudio: (
1004
+ melPower: Float32Array,
1005
+ nMels: number,
1006
+ nFrames: number,
1007
+ sampleRate: number,
1008
+ nFft: number,
1009
+ hopLength: number,
1010
+ nIter: number,
1011
+ fmin: number,
1012
+ fmax: number,
1013
+ ) => Float32Array;
1014
+ mfccToMel: (
1015
+ mfcc: Float32Array,
1016
+ nMfcc: number,
1017
+ nFrames: number,
1018
+ nMels: number,
1019
+ ) => WasmMelPowerResult;
1020
+ mfccToAudio: (
1021
+ mfcc: Float32Array,
1022
+ nMfcc: number,
1023
+ nFrames: number,
1024
+ nMels: number,
1025
+ sampleRate: number,
1026
+ nFft: number,
1027
+ hopLength: number,
1028
+ nIter: number,
1029
+ fmin: number,
1030
+ fmax: number,
1031
+ ) => Float32Array;
1032
+
414
1033
  chroma: (
415
1034
  samples: Float32Array,
416
1035
  sampleRate: number,
@@ -529,7 +1148,16 @@ export interface SonareModule {
529
1148
  sampleRate: number,
530
1149
  hopLength: number,
531
1150
  winLength: number,
1151
+ mode: TempogramMode,
532
1152
  ) => WasmTempogramResult;
1153
+ cyclicTempogram: (
1154
+ onsetEnvelope: Float32Array,
1155
+ sampleRate: number,
1156
+ hopLength: number,
1157
+ winLength: number,
1158
+ bpmMin: number,
1159
+ nBins: number,
1160
+ ) => WasmCyclicTempogramResult;
533
1161
  plp: (
534
1162
  onsetEnvelope: Float32Array,
535
1163
  sampleRate: number,
@@ -538,6 +1166,62 @@ export interface SonareModule {
538
1166
  tempoMax: number,
539
1167
  winLength: number,
540
1168
  ) => Float32Array;
1169
+ nnlsChroma: (samples: Float32Array, sampleRate: number) => WasmNnlsChromaResult;
1170
+ cqt: (
1171
+ samples: Float32Array,
1172
+ sampleRate: number,
1173
+ hopLength: number,
1174
+ fmin: number,
1175
+ nBins: number,
1176
+ binsPerOctave: number,
1177
+ ) => WasmCqtResult;
1178
+ vqt: (
1179
+ samples: Float32Array,
1180
+ sampleRate: number,
1181
+ hopLength: number,
1182
+ fmin: number,
1183
+ nBins: number,
1184
+ binsPerOctave: number,
1185
+ gamma: number,
1186
+ ) => WasmCqtResult;
1187
+ analyzeSections: (
1188
+ samples: Float32Array,
1189
+ sampleRate: number,
1190
+ nFft: number,
1191
+ hopLength: number,
1192
+ minSectionSec: number,
1193
+ ) => WasmSectionResult[];
1194
+ analyzeMelody: (
1195
+ samples: Float32Array,
1196
+ sampleRate: number,
1197
+ fmin: number,
1198
+ fmax: number,
1199
+ frameLength: number,
1200
+ hopLength: number,
1201
+ threshold: number,
1202
+ ) => WasmMelodyResult;
1203
+ onsetEnvelope: (
1204
+ samples: Float32Array,
1205
+ sampleRate: number,
1206
+ nFft: number,
1207
+ hopLength: number,
1208
+ nMels: number,
1209
+ ) => Float32Array;
1210
+ fourierTempogram: (
1211
+ onsetEnvelope: Float32Array,
1212
+ sampleRate: number,
1213
+ hopLength: number,
1214
+ winLength: number,
1215
+ ) => WasmFourierTempogramResult;
1216
+ tempogramRatio: (
1217
+ tempogramData: Float32Array,
1218
+ winLength: number,
1219
+ sampleRate: number,
1220
+ hopLength: number,
1221
+ ) => Float32Array;
1222
+ lufs: (samples: Float32Array, sampleRate: number) => WasmLufsResult;
1223
+ momentaryLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
1224
+ shortTermLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
541
1225
  resample: (samples: Float32Array, srcSr: number, targetSr: number) => Float32Array;
542
1226
 
543
1227
  StreamAnalyzer: new (
@@ -545,11 +1229,31 @@ export interface SonareModule {
545
1229
  nFft: number,
546
1230
  hopLength: number,
547
1231
  nMels: number,
1232
+ fmin: number,
1233
+ fmax: number,
1234
+ tuningRefHz: number,
1235
+ computeMagnitude: boolean,
548
1236
  computeMel: boolean,
549
1237
  computeChroma: boolean,
550
1238
  computeOnset: boolean,
1239
+ computeSpectral: boolean,
551
1240
  emitEveryNFrames: number,
1241
+ magnitudeDownsample: number,
1242
+ keyUpdateIntervalSec: number,
1243
+ bpmUpdateIntervalSec: number,
1244
+ window: number,
1245
+ outputFormat: number,
552
1246
  ) => WasmStreamAnalyzer;
1247
+ RealtimeEngine: new (
1248
+ sampleRate: number,
1249
+ maxBlockSize: number,
1250
+ commandCapacity: number,
1251
+ telemetryCapacity: number,
1252
+ ) => WasmRealtimeEngine;
553
1253
 
554
1254
  createStreamingMasteringChain: (config: Record<string, unknown>) => WasmStreamingMasteringChain;
1255
+ createEqualizer: (config: Record<string, unknown>) => WasmStreamingEqualizer;
1256
+ createStreamingRetune: (config: Record<string, unknown>) => WasmStreamingRetune;
1257
+ createMixerFromSceneJson: (json: string, sampleRate: number, blockSize: number) => WasmMixer;
1258
+ mixerPresetJson: (presetName: string) => string;
555
1259
  }