@libraz/libsonare 1.2.2 → 1.3.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/README.md +38 -1
- package/dist/index.d.ts +1 -2722
- package/dist/index.js +3659 -1896
- package/dist/index.js.map +1 -1
- package/dist/sonare-rt-module.js +1 -1
- package/dist/sonare-rt.js +1 -1
- package/dist/sonare-rt.wasm +0 -0
- package/dist/sonare.js +1 -1
- package/dist/sonare.wasm +0 -0
- package/dist/worklet.d.ts +4827 -455
- package/dist/worklet.js +1076 -494
- package/dist/worklet.js.map +1 -1
- package/package.json +2 -1
- package/src/analysis_helpers.ts +152 -0
- package/src/audio.ts +493 -0
- package/src/codes.ts +56 -0
- package/src/effects_mastering.ts +964 -0
- package/src/feature_core.ts +248 -0
- package/src/feature_music.ts +419 -0
- package/src/feature_pitch.ts +80 -0
- package/src/feature_resample.ts +21 -0
- package/src/feature_spectral.ts +330 -0
- package/src/feature_spectrogram.ts +454 -0
- package/src/features.ts +84 -0
- package/src/index.ts +352 -4793
- package/src/live_audio.ts +45 -0
- package/src/metering.ts +380 -0
- package/src/mixer.ts +523 -0
- package/src/module_state.ts +14 -0
- package/src/opfs_clip_pages.ts +188 -0
- package/src/project.ts +1614 -0
- package/src/public_types.ts +244 -2
- package/src/quick_analysis.ts +508 -0
- package/src/realtime_engine.ts +667 -0
- package/src/realtime_voice_changer.ts +275 -0
- package/src/scale.ts +42 -0
- package/src/sonare.js.d.ts +386 -4
- package/src/stream_analyzer.ts +275 -0
- package/src/stream_types.ts +29 -1
- package/src/streaming_mixing.ts +18 -0
- package/src/streaming_processors.ts +335 -0
- package/src/validation.ts +82 -0
- package/src/web_midi.ts +367 -0
- package/src/worklet.ts +525 -81
package/src/sonare.js.d.ts
CHANGED
|
@@ -60,6 +60,8 @@ export interface WasmRealtimeVoiceChangerPodConfig {
|
|
|
60
60
|
reverb_seed: number;
|
|
61
61
|
limiter_ceiling_db: number;
|
|
62
62
|
limiter_release_ms: number;
|
|
63
|
+
limiter_enable_isp_limiter: boolean;
|
|
64
|
+
limiter_isp_ceiling_dbtp: number;
|
|
63
65
|
}
|
|
64
66
|
|
|
65
67
|
export interface WasmBeatResult {
|
|
@@ -96,6 +98,8 @@ export interface WasmTimbreResult {
|
|
|
96
98
|
|
|
97
99
|
export interface WasmDynamicsResult {
|
|
98
100
|
dynamicRangeDb: number;
|
|
101
|
+
peakDb: number;
|
|
102
|
+
rmsDb: number;
|
|
99
103
|
loudnessRangeDb: number;
|
|
100
104
|
crestFactor: number;
|
|
101
105
|
isCompressed: boolean;
|
|
@@ -105,6 +109,8 @@ export interface WasmRhythmResult {
|
|
|
105
109
|
syncopation: number;
|
|
106
110
|
grooveType: string;
|
|
107
111
|
patternRegularity: number;
|
|
112
|
+
tempoStability: number;
|
|
113
|
+
timeSignature: WasmTimeSignatureResult;
|
|
108
114
|
}
|
|
109
115
|
|
|
110
116
|
export interface WasmTimeSignatureResult {
|
|
@@ -113,6 +119,14 @@ export interface WasmTimeSignatureResult {
|
|
|
113
119
|
confidence: number;
|
|
114
120
|
}
|
|
115
121
|
|
|
122
|
+
export interface WasmMelodyContourResult {
|
|
123
|
+
pitchRangeOctaves: number;
|
|
124
|
+
pitchStability: number;
|
|
125
|
+
meanFrequency: number;
|
|
126
|
+
vibratoRate: number;
|
|
127
|
+
pitches: WasmMelodyPoint[];
|
|
128
|
+
}
|
|
129
|
+
|
|
116
130
|
export interface WasmAnalysisResult {
|
|
117
131
|
bpm: number;
|
|
118
132
|
bpmConfidence: number;
|
|
@@ -124,6 +138,7 @@ export interface WasmAnalysisResult {
|
|
|
124
138
|
timbre: WasmTimbreResult;
|
|
125
139
|
dynamics: WasmDynamicsResult;
|
|
126
140
|
rhythm: WasmRhythmResult;
|
|
141
|
+
melody: WasmMelodyContourResult;
|
|
127
142
|
form: string;
|
|
128
143
|
}
|
|
129
144
|
|
|
@@ -161,6 +176,27 @@ export interface WasmDynamicsAnalysisResult {
|
|
|
161
176
|
loudnessRmsDb: Float32Array;
|
|
162
177
|
}
|
|
163
178
|
|
|
179
|
+
export interface WasmStreamConfigDefaults {
|
|
180
|
+
sampleRate: number;
|
|
181
|
+
nFft: number;
|
|
182
|
+
hopLength: number;
|
|
183
|
+
nMels: number;
|
|
184
|
+
fmin: number;
|
|
185
|
+
fmax: number;
|
|
186
|
+
tuningRefHz: number;
|
|
187
|
+
computeMagnitude: boolean;
|
|
188
|
+
computeMel: boolean;
|
|
189
|
+
computeChroma: boolean;
|
|
190
|
+
computeOnset: boolean;
|
|
191
|
+
computeSpectral: boolean;
|
|
192
|
+
emitEveryNFrames: number;
|
|
193
|
+
magnitudeDownsample: number;
|
|
194
|
+
keyUpdateIntervalSec: number;
|
|
195
|
+
bpmUpdateIntervalSec: number;
|
|
196
|
+
window: number;
|
|
197
|
+
outputFormat: number;
|
|
198
|
+
}
|
|
199
|
+
|
|
164
200
|
export interface WasmTimbreFrameResult {
|
|
165
201
|
brightness: number;
|
|
166
202
|
warmth: number;
|
|
@@ -199,12 +235,76 @@ export interface WasmAcousticResult {
|
|
|
199
235
|
isBlind: boolean;
|
|
200
236
|
}
|
|
201
237
|
|
|
238
|
+
export interface WasmRoomGeometryOptions {
|
|
239
|
+
lengthM?: number;
|
|
240
|
+
widthM?: number;
|
|
241
|
+
heightM?: number;
|
|
242
|
+
absorption?: number;
|
|
243
|
+
materialPreset?: number;
|
|
244
|
+
bandAbsorption?: Float32Array | number[];
|
|
245
|
+
bandScattering?: Float32Array | number[];
|
|
246
|
+
sourceX?: number;
|
|
247
|
+
sourceY?: number;
|
|
248
|
+
sourceZ?: number;
|
|
249
|
+
listenerX?: number;
|
|
250
|
+
listenerY?: number;
|
|
251
|
+
listenerZ?: number;
|
|
252
|
+
ismOrder?: number;
|
|
253
|
+
seed?: number;
|
|
254
|
+
maxSeconds?: number;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
export interface WasmRirSynthOptions extends WasmRoomGeometryOptions {
|
|
258
|
+
sampleRate?: number;
|
|
259
|
+
preferEyring?: boolean;
|
|
260
|
+
mixingTimeMs?: number;
|
|
261
|
+
crossfadeMs?: number;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface WasmRirResult {
|
|
265
|
+
rir: Float32Array;
|
|
266
|
+
sampleRate: number;
|
|
267
|
+
hasError: boolean;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export interface WasmRoomEstimateOptions {
|
|
271
|
+
aspectHintLw?: number;
|
|
272
|
+
aspectHintLh?: number;
|
|
273
|
+
referenceAbsorption?: number;
|
|
274
|
+
preferEyring?: boolean;
|
|
275
|
+
nOctaveBands?: number;
|
|
276
|
+
mode?: number;
|
|
277
|
+
minDecayDb?: number;
|
|
278
|
+
noiseFloorMarginDb?: number;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export interface WasmRoomEstimateResult {
|
|
282
|
+
volume: number;
|
|
283
|
+
length: number;
|
|
284
|
+
width: number;
|
|
285
|
+
height: number;
|
|
286
|
+
drrDb: number;
|
|
287
|
+
confidence: number;
|
|
288
|
+
absorptionBands: Float32Array;
|
|
289
|
+
rt60Bands: Float32Array;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export interface WasmRoomMorphOptions extends WasmRoomGeometryOptions {
|
|
293
|
+
wet?: number;
|
|
294
|
+
sourceTailSuppression?: number;
|
|
295
|
+
}
|
|
296
|
+
|
|
202
297
|
export interface WasmHpssResult {
|
|
203
298
|
harmonic: Float32Array;
|
|
204
299
|
percussive: Float32Array;
|
|
205
300
|
sampleRate: number;
|
|
206
301
|
}
|
|
207
302
|
|
|
303
|
+
export interface WasmAudioFromMemoryResult {
|
|
304
|
+
samples: Float32Array;
|
|
305
|
+
sampleRate: number;
|
|
306
|
+
}
|
|
307
|
+
|
|
208
308
|
export interface WasmHpssWithResidualResult {
|
|
209
309
|
harmonic: Float32Array;
|
|
210
310
|
percussive: Float32Array;
|
|
@@ -314,6 +414,12 @@ export interface WasmFourierTempogramResult {
|
|
|
314
414
|
data: Float32Array;
|
|
315
415
|
}
|
|
316
416
|
|
|
417
|
+
export interface WasmOnsetStrengthMultiResult {
|
|
418
|
+
nBands: number;
|
|
419
|
+
nFrames: number;
|
|
420
|
+
data: Float32Array;
|
|
421
|
+
}
|
|
422
|
+
|
|
317
423
|
export interface WasmNnlsChromaResult {
|
|
318
424
|
nChroma: number;
|
|
319
425
|
nFrames: number;
|
|
@@ -412,7 +518,7 @@ export interface WasmMixResult {
|
|
|
412
518
|
|
|
413
519
|
export interface WasmEngineClip {
|
|
414
520
|
id?: number;
|
|
415
|
-
channels
|
|
521
|
+
channels?: Float32Array[];
|
|
416
522
|
startPpq: number;
|
|
417
523
|
lengthSamples?: number;
|
|
418
524
|
clipOffsetSamples?: number;
|
|
@@ -420,6 +526,15 @@ export interface WasmEngineClip {
|
|
|
420
526
|
gain?: number;
|
|
421
527
|
fadeInSamples?: number;
|
|
422
528
|
fadeOutSamples?: number;
|
|
529
|
+
warpMode?: 'off' | 'repitch' | 'tempo-sync' | 0 | 1 | 2;
|
|
530
|
+
warpAnchors?: Array<{ warpSample: number; sourceSample: number }>;
|
|
531
|
+
pageProvider?: number | { readonly id: number };
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
export interface WasmClipPageRequest {
|
|
535
|
+
clipId: number;
|
|
536
|
+
channel: number;
|
|
537
|
+
sample: number;
|
|
423
538
|
}
|
|
424
539
|
|
|
425
540
|
export interface WasmEngineParameterInfo {
|
|
@@ -450,6 +565,8 @@ export interface WasmEngineMetronomeConfig {
|
|
|
450
565
|
beatGain?: number;
|
|
451
566
|
accentGain?: number;
|
|
452
567
|
clickSamples?: number;
|
|
568
|
+
/** Optional click length in seconds; > 0 overrides the engine 2 ms default. */
|
|
569
|
+
clickSeconds?: number;
|
|
453
570
|
}
|
|
454
571
|
|
|
455
572
|
export interface WasmEngineGraphNode {
|
|
@@ -516,6 +633,8 @@ export interface WasmEngineCaptureStatus {
|
|
|
516
633
|
overflowCount: number;
|
|
517
634
|
armed: boolean;
|
|
518
635
|
punchEnabled: boolean;
|
|
636
|
+
source: 'output' | 'input';
|
|
637
|
+
recordOffsetSamples: number;
|
|
519
638
|
}
|
|
520
639
|
|
|
521
640
|
export interface WasmEngineTransportState {
|
|
@@ -528,6 +647,12 @@ export interface WasmEngineTransportState {
|
|
|
528
647
|
loopStartPpq: number;
|
|
529
648
|
loopEndPpq: number;
|
|
530
649
|
sampleRate: number;
|
|
650
|
+
/** PPQ of the current bar's downbeat (derived from the tempo map). */
|
|
651
|
+
barStartPpq: number;
|
|
652
|
+
/** Zero-based index of the current bar. */
|
|
653
|
+
barCount: number;
|
|
654
|
+
/** Time signature in effect at the current PPQ. */
|
|
655
|
+
timeSignature: { numerator: number; denominator: number; confidence: number };
|
|
531
656
|
}
|
|
532
657
|
|
|
533
658
|
export interface WasmEngineBounceOptions {
|
|
@@ -608,13 +733,85 @@ export interface WasmRealtimeEngine {
|
|
|
608
733
|
graphConnectionCount: () => number;
|
|
609
734
|
setClips: (clips: WasmEngineClip[]) => void;
|
|
610
735
|
clipCount: () => number;
|
|
736
|
+
createClipPageProvider: (numChannels: number, numSamples: number, pageFrames: number) => number;
|
|
737
|
+
supplyClipPage: (providerId: number, pageIndex: number, channels: Float32Array[]) => void;
|
|
738
|
+
clearClipPage: (providerId: number, pageIndex: number) => void;
|
|
739
|
+
destroyClipPageProvider: (providerId: number) => void;
|
|
740
|
+
popClipPageRequest: () => WasmClipPageRequest | null;
|
|
611
741
|
setCaptureBuffer: (numChannels: number, capacityFrames: number) => void;
|
|
612
742
|
armCapture: (armed: boolean) => void;
|
|
613
743
|
setCapturePunch: (startSample: number, endSample: number, enabled: boolean) => void;
|
|
744
|
+
setCaptureSource: (source: WasmEngineCaptureStatus['source']) => void;
|
|
745
|
+
setRecordOffsetSamples: (offsetSamples: number) => void;
|
|
746
|
+
setInputMonitor: (enabled: boolean, gain: number) => void;
|
|
614
747
|
resetCapture: () => void;
|
|
615
748
|
captureStatus: () => WasmEngineCaptureStatus;
|
|
616
749
|
capturedAudio: () => Float32Array[];
|
|
750
|
+
setBuiltinInstrument: (destinationId: number, config: object) => void;
|
|
751
|
+
clearMidiInstrument: (destinationId: number) => void;
|
|
752
|
+
midiInstrumentCount: () => number;
|
|
753
|
+
bindMidiCc: (
|
|
754
|
+
channel: number,
|
|
755
|
+
controller: number,
|
|
756
|
+
paramId: number,
|
|
757
|
+
minValue: number,
|
|
758
|
+
maxValue: number,
|
|
759
|
+
) => void;
|
|
760
|
+
clearMidiCcBindings: () => void;
|
|
761
|
+
midiCcBindingCount: () => number;
|
|
762
|
+
setMidiInputSource: (destinationId: number) => void;
|
|
763
|
+
clearMidiInputSource: () => void;
|
|
764
|
+
midiInputPendingCount: () => number;
|
|
765
|
+
pushMidiInputNoteOn: (
|
|
766
|
+
group: number,
|
|
767
|
+
channel: number,
|
|
768
|
+
note: number,
|
|
769
|
+
velocity: number,
|
|
770
|
+
portTimeSamples: number,
|
|
771
|
+
) => void;
|
|
772
|
+
pushMidiInputNoteOff: (
|
|
773
|
+
group: number,
|
|
774
|
+
channel: number,
|
|
775
|
+
note: number,
|
|
776
|
+
velocity: number,
|
|
777
|
+
portTimeSamples: number,
|
|
778
|
+
) => void;
|
|
779
|
+
pushMidiInputCc: (
|
|
780
|
+
group: number,
|
|
781
|
+
channel: number,
|
|
782
|
+
controller: number,
|
|
783
|
+
value: number,
|
|
784
|
+
portTimeSamples: number,
|
|
785
|
+
) => void;
|
|
786
|
+
pushMidiNoteOn: (
|
|
787
|
+
destinationId: number,
|
|
788
|
+
group: number,
|
|
789
|
+
channel: number,
|
|
790
|
+
note: number,
|
|
791
|
+
velocity: number,
|
|
792
|
+
renderFrame: number,
|
|
793
|
+
) => void;
|
|
794
|
+
pushMidiNoteOff: (
|
|
795
|
+
destinationId: number,
|
|
796
|
+
group: number,
|
|
797
|
+
channel: number,
|
|
798
|
+
note: number,
|
|
799
|
+
velocity: number,
|
|
800
|
+
renderFrame: number,
|
|
801
|
+
) => void;
|
|
802
|
+
pushMidiCc: (
|
|
803
|
+
destinationId: number,
|
|
804
|
+
group: number,
|
|
805
|
+
channel: number,
|
|
806
|
+
controller: number,
|
|
807
|
+
value: number,
|
|
808
|
+
renderFrame: number,
|
|
809
|
+
) => void;
|
|
810
|
+
pushMidiPanic: (renderFrame: number) => void;
|
|
617
811
|
process: (channels: Float32Array[]) => Float32Array[];
|
|
812
|
+
prepareChannels: (numChannels: number, maxFrames: number) => void;
|
|
813
|
+
getChannelBuffer: (channel: number, numFrames: number) => Float32Array;
|
|
814
|
+
processPrepared: (numFrames: number) => void;
|
|
618
815
|
processWithMonitor: (channels: Float32Array[]) => WasmEngineProcessWithMonitorResult;
|
|
619
816
|
renderOffline: (channels: Float32Array[], blockSize: number) => Float32Array[];
|
|
620
817
|
bounceOffline: (options: WasmEngineBounceOptions) => WasmEngineBounceResult;
|
|
@@ -627,7 +824,19 @@ export interface WasmRealtimeEngine {
|
|
|
627
824
|
export type ProgressCallback = (progress: number, stage: string) => void;
|
|
628
825
|
export type TempogramMode = 'autocorrelation' | 'auto' | 'ac' | 'cosine' | 0 | 1;
|
|
629
826
|
|
|
827
|
+
export interface WasmSynthEnumTables {
|
|
828
|
+
engineModes: string[];
|
|
829
|
+
waveforms: string[];
|
|
830
|
+
filterModels: string[];
|
|
831
|
+
filterOutputs: string[];
|
|
832
|
+
bodyTypes: string[];
|
|
833
|
+
modSources: string[];
|
|
834
|
+
modDestinations: string[];
|
|
835
|
+
}
|
|
836
|
+
|
|
630
837
|
export interface SonareModule {
|
|
838
|
+
audioFromMemory: (bytes: Uint8Array) => WasmAudioFromMemoryResult;
|
|
839
|
+
|
|
631
840
|
// Quick API (high-level)
|
|
632
841
|
detectBpm: (samples: Float32Array, sampleRate: number) => number;
|
|
633
842
|
detectKey: (samples: Float32Array, sampleRate: number) => WasmKeyResult;
|
|
@@ -676,7 +885,29 @@ export interface SonareModule {
|
|
|
676
885
|
detectInversions: boolean,
|
|
677
886
|
chromaMethod: number,
|
|
678
887
|
) => WasmChordAnalysisResult;
|
|
888
|
+
chordFunctionalAnalysis: (
|
|
889
|
+
samples: Float32Array,
|
|
890
|
+
keyRoot: number,
|
|
891
|
+
keyMode: number,
|
|
892
|
+
sampleRate: number,
|
|
893
|
+
minDuration: number,
|
|
894
|
+
smoothingWindow: number,
|
|
895
|
+
threshold: number,
|
|
896
|
+
useTriadsOnly: boolean,
|
|
897
|
+
nFft: number,
|
|
898
|
+
hopLength: number,
|
|
899
|
+
useBeatSync: boolean,
|
|
900
|
+
useHmm: boolean,
|
|
901
|
+
hmmBeamWidth: number,
|
|
902
|
+
useKeyContext: boolean,
|
|
903
|
+
detectInversions: boolean,
|
|
904
|
+
chromaMethod: number,
|
|
905
|
+
) => string[];
|
|
679
906
|
analyze: (samples: Float32Array, sampleRate: number) => WasmAnalysisResult;
|
|
907
|
+
_synthEnumTables: () => WasmSynthEnumTables;
|
|
908
|
+
_synthPatchRoundTrip: (patch: unknown) => unknown;
|
|
909
|
+
_analysisResultSchemaPaths: () => string[];
|
|
910
|
+
_analysisResultSchemaFixture: () => WasmAnalysisResult;
|
|
680
911
|
analyzeImpulseResponse: (
|
|
681
912
|
samples: Float32Array,
|
|
682
913
|
sampleRate: number,
|
|
@@ -690,6 +921,19 @@ export interface SonareModule {
|
|
|
690
921
|
minDecayDb: number,
|
|
691
922
|
noiseFloorMarginDb: number,
|
|
692
923
|
) => WasmAcousticResult;
|
|
924
|
+
// Acoustic-simulation entry points are present only in builds compiled with
|
|
925
|
+
// SONARE_WITH_ACOUSTIC_SIM; absent otherwise (the wrappers throw a clear error).
|
|
926
|
+
synthesizeRir?: (options: WasmRirSynthOptions) => WasmRirResult;
|
|
927
|
+
estimateRoom?: (
|
|
928
|
+
samples: Float32Array,
|
|
929
|
+
sampleRate: number,
|
|
930
|
+
options: WasmRoomEstimateOptions,
|
|
931
|
+
) => WasmRoomEstimateResult;
|
|
932
|
+
roomMorph?: (
|
|
933
|
+
samples: Float32Array,
|
|
934
|
+
sampleRate: number,
|
|
935
|
+
options: WasmRoomMorphOptions,
|
|
936
|
+
) => Float32Array;
|
|
693
937
|
analyzeWithProgress: (
|
|
694
938
|
samples: Float32Array,
|
|
695
939
|
sampleRate: number,
|
|
@@ -783,6 +1027,12 @@ export interface SonareModule {
|
|
|
783
1027
|
right: Float32Array,
|
|
784
1028
|
sampleRate: number,
|
|
785
1029
|
) => { mid: Float32Array; side: Float32Array };
|
|
1030
|
+
meteringVectorscopeDecimated: (
|
|
1031
|
+
left: Float32Array,
|
|
1032
|
+
right: Float32Array,
|
|
1033
|
+
sampleRate: number,
|
|
1034
|
+
maxPoints: number,
|
|
1035
|
+
) => { mid: Float32Array; side: Float32Array };
|
|
786
1036
|
meteringPhaseScope: (
|
|
787
1037
|
left: Float32Array,
|
|
788
1038
|
right: Float32Array,
|
|
@@ -796,6 +1046,20 @@ export interface SonareModule {
|
|
|
796
1046
|
averageAbsAngleRad: number;
|
|
797
1047
|
maxRadius: number;
|
|
798
1048
|
};
|
|
1049
|
+
meteringPhaseScopeDecimated: (
|
|
1050
|
+
left: Float32Array,
|
|
1051
|
+
right: Float32Array,
|
|
1052
|
+
sampleRate: number,
|
|
1053
|
+
maxPoints: number,
|
|
1054
|
+
) => {
|
|
1055
|
+
mid: Float32Array;
|
|
1056
|
+
side: Float32Array;
|
|
1057
|
+
radius: Float32Array;
|
|
1058
|
+
angleRad: Float32Array;
|
|
1059
|
+
correlation: number;
|
|
1060
|
+
averageAbsAngleRad: number;
|
|
1061
|
+
maxRadius: number;
|
|
1062
|
+
};
|
|
799
1063
|
meteringSpectrum: (
|
|
800
1064
|
samples: Float32Array,
|
|
801
1065
|
sampleRate: number,
|
|
@@ -814,6 +1078,47 @@ export interface SonareModule {
|
|
|
814
1078
|
nFft: number;
|
|
815
1079
|
sampleRate: number;
|
|
816
1080
|
};
|
|
1081
|
+
meteringSpectrumFrame: (
|
|
1082
|
+
samples: Float32Array,
|
|
1083
|
+
sampleRate: number,
|
|
1084
|
+
frameOffset: number,
|
|
1085
|
+
options: {
|
|
1086
|
+
nFft?: number;
|
|
1087
|
+
applyOctaveSmoothing?: boolean;
|
|
1088
|
+
octaveFraction?: number;
|
|
1089
|
+
dbRef?: number;
|
|
1090
|
+
dbAmin?: number;
|
|
1091
|
+
},
|
|
1092
|
+
) => {
|
|
1093
|
+
frequencies: Float32Array;
|
|
1094
|
+
magnitude: Float32Array;
|
|
1095
|
+
power: Float32Array;
|
|
1096
|
+
db: Float32Array;
|
|
1097
|
+
nFft: number;
|
|
1098
|
+
sampleRate: number;
|
|
1099
|
+
};
|
|
1100
|
+
waveformPeaks: (
|
|
1101
|
+
samples: Float32Array,
|
|
1102
|
+
channels: number,
|
|
1103
|
+
samplesPerBucket: number,
|
|
1104
|
+
) => {
|
|
1105
|
+
min: Float32Array;
|
|
1106
|
+
max: Float32Array;
|
|
1107
|
+
channels: number;
|
|
1108
|
+
bucketCount: number;
|
|
1109
|
+
samplesPerBucket: number;
|
|
1110
|
+
};
|
|
1111
|
+
waveformPeakPyramid: (
|
|
1112
|
+
samples: Float32Array,
|
|
1113
|
+
channels: number,
|
|
1114
|
+
samplesPerBucketLevels: number[],
|
|
1115
|
+
) => Array<{
|
|
1116
|
+
min: Float32Array;
|
|
1117
|
+
max: Float32Array;
|
|
1118
|
+
channels: number;
|
|
1119
|
+
bucketCount: number;
|
|
1120
|
+
samplesPerBucket: number;
|
|
1121
|
+
}>;
|
|
817
1122
|
|
|
818
1123
|
scaleQuantizeMidi: (
|
|
819
1124
|
root: number,
|
|
@@ -850,6 +1155,15 @@ export interface SonareModule {
|
|
|
850
1155
|
nIter: number,
|
|
851
1156
|
beta: number,
|
|
852
1157
|
) => WasmDecomposeResult;
|
|
1158
|
+
decomposeWithInit: (
|
|
1159
|
+
s: Float32Array,
|
|
1160
|
+
nFeatures: number,
|
|
1161
|
+
nFrames: number,
|
|
1162
|
+
nComponents: number,
|
|
1163
|
+
nIter: number,
|
|
1164
|
+
beta: number,
|
|
1165
|
+
init: string,
|
|
1166
|
+
) => WasmDecomposeResult;
|
|
853
1167
|
nnFilter: (
|
|
854
1168
|
s: Float32Array,
|
|
855
1169
|
nFeatures: number,
|
|
@@ -881,6 +1195,15 @@ export interface SonareModule {
|
|
|
881
1195
|
currentMidi: number,
|
|
882
1196
|
targetMidi: number,
|
|
883
1197
|
) => Float32Array;
|
|
1198
|
+
pitchCorrectToMidiTimevarying: (
|
|
1199
|
+
samples: Float32Array,
|
|
1200
|
+
sampleRate: number,
|
|
1201
|
+
f0Hz: Float32Array,
|
|
1202
|
+
targetMidi: number,
|
|
1203
|
+
hopLength: number,
|
|
1204
|
+
voiced?: Float32Array,
|
|
1205
|
+
voicedProb?: Float32Array,
|
|
1206
|
+
) => Float32Array;
|
|
884
1207
|
noteStretch: (
|
|
885
1208
|
samples: Float32Array,
|
|
886
1209
|
sampleRate: number,
|
|
@@ -1089,6 +1412,9 @@ export interface SonareModule {
|
|
|
1089
1412
|
nFft: number,
|
|
1090
1413
|
hopLength: number,
|
|
1091
1414
|
nMels: number,
|
|
1415
|
+
fmin: number,
|
|
1416
|
+
fmax: number,
|
|
1417
|
+
htk: boolean,
|
|
1092
1418
|
) => WasmMelResult;
|
|
1093
1419
|
mfcc: (
|
|
1094
1420
|
samples: Float32Array,
|
|
@@ -1097,6 +1423,9 @@ export interface SonareModule {
|
|
|
1097
1423
|
hopLength: number,
|
|
1098
1424
|
nMels: number,
|
|
1099
1425
|
nMfcc: number,
|
|
1426
|
+
fmin: number,
|
|
1427
|
+
fmax: number,
|
|
1428
|
+
htk: boolean,
|
|
1100
1429
|
) => WasmMfccResult;
|
|
1101
1430
|
|
|
1102
1431
|
// Features - Inverse reconstruction
|
|
@@ -1108,6 +1437,7 @@ export interface SonareModule {
|
|
|
1108
1437
|
nFft: number,
|
|
1109
1438
|
fmin: number,
|
|
1110
1439
|
fmax: number,
|
|
1440
|
+
htk: boolean,
|
|
1111
1441
|
) => WasmStftPowerResult;
|
|
1112
1442
|
melToAudio: (
|
|
1113
1443
|
melPower: Float32Array,
|
|
@@ -1119,6 +1449,7 @@ export interface SonareModule {
|
|
|
1119
1449
|
fmin: number,
|
|
1120
1450
|
fmax: number,
|
|
1121
1451
|
nIter: number,
|
|
1452
|
+
htk: boolean,
|
|
1122
1453
|
) => Float32Array;
|
|
1123
1454
|
mfccToMel: (
|
|
1124
1455
|
mfcc: Float32Array,
|
|
@@ -1137,6 +1468,7 @@ export interface SonareModule {
|
|
|
1137
1468
|
fmin: number,
|
|
1138
1469
|
fmax: number,
|
|
1139
1470
|
nIter: number,
|
|
1471
|
+
htk: boolean,
|
|
1140
1472
|
) => Float32Array;
|
|
1141
1473
|
|
|
1142
1474
|
// Features - Chroma
|
|
@@ -1313,6 +1645,18 @@ export interface SonareModule {
|
|
|
1313
1645
|
tempoMax: number,
|
|
1314
1646
|
winLength: number,
|
|
1315
1647
|
) => Float32Array;
|
|
1648
|
+
chromaCens: (
|
|
1649
|
+
samples: Float32Array,
|
|
1650
|
+
sampleRate: number,
|
|
1651
|
+
hopLength: number,
|
|
1652
|
+
nChroma: number,
|
|
1653
|
+
) => WasmChromaResult;
|
|
1654
|
+
bassChroma: (
|
|
1655
|
+
samples: Float32Array,
|
|
1656
|
+
sampleRate: number,
|
|
1657
|
+
hopLength: number,
|
|
1658
|
+
nChroma: number,
|
|
1659
|
+
) => WasmChromaResult;
|
|
1316
1660
|
nnlsChroma: (samples: Float32Array, sampleRate: number) => WasmNnlsChromaResult;
|
|
1317
1661
|
cqt: (
|
|
1318
1662
|
samples: Float32Array,
|
|
@@ -1322,6 +1666,22 @@ export interface SonareModule {
|
|
|
1322
1666
|
nBins: number,
|
|
1323
1667
|
binsPerOctave: number,
|
|
1324
1668
|
) => WasmCqtResult;
|
|
1669
|
+
pseudoCqt: (
|
|
1670
|
+
samples: Float32Array,
|
|
1671
|
+
sampleRate: number,
|
|
1672
|
+
hopLength: number,
|
|
1673
|
+
fmin: number,
|
|
1674
|
+
nBins: number,
|
|
1675
|
+
binsPerOctave: number,
|
|
1676
|
+
) => WasmCqtResult;
|
|
1677
|
+
hybridCqt: (
|
|
1678
|
+
samples: Float32Array,
|
|
1679
|
+
sampleRate: number,
|
|
1680
|
+
hopLength: number,
|
|
1681
|
+
fmin: number,
|
|
1682
|
+
nBins: number,
|
|
1683
|
+
binsPerOctave: number,
|
|
1684
|
+
) => WasmCqtResult;
|
|
1325
1685
|
vqt: (
|
|
1326
1686
|
samples: Float32Array,
|
|
1327
1687
|
sampleRate: number,
|
|
@@ -1346,6 +1706,8 @@ export interface SonareModule {
|
|
|
1346
1706
|
frameLength: number,
|
|
1347
1707
|
hopLength: number,
|
|
1348
1708
|
threshold: number,
|
|
1709
|
+
usePyin: boolean,
|
|
1710
|
+
center: boolean,
|
|
1349
1711
|
) => WasmMelodyResult;
|
|
1350
1712
|
onsetEnvelope: (
|
|
1351
1713
|
samples: Float32Array,
|
|
@@ -1354,6 +1716,14 @@ export interface SonareModule {
|
|
|
1354
1716
|
hopLength: number,
|
|
1355
1717
|
nMels: number,
|
|
1356
1718
|
) => Float32Array;
|
|
1719
|
+
onsetStrengthMulti: (
|
|
1720
|
+
samples: Float32Array,
|
|
1721
|
+
sampleRate: number,
|
|
1722
|
+
nFft: number,
|
|
1723
|
+
hopLength: number,
|
|
1724
|
+
nMels: number,
|
|
1725
|
+
nBands: number,
|
|
1726
|
+
) => WasmOnsetStrengthMultiResult;
|
|
1357
1727
|
fourierTempogram: (
|
|
1358
1728
|
onsetEnvelope: Float32Array,
|
|
1359
1729
|
sampleRate: number,
|
|
@@ -1425,6 +1795,7 @@ export interface SonareModule {
|
|
|
1425
1795
|
};
|
|
1426
1796
|
|
|
1427
1797
|
// Streaming - StreamAnalyzer
|
|
1798
|
+
streamAnalyzerConfigDefault: () => WasmStreamConfigDefaults;
|
|
1428
1799
|
StreamAnalyzer: new (
|
|
1429
1800
|
sampleRate: number,
|
|
1430
1801
|
nFft: number,
|
|
@@ -1605,8 +1976,9 @@ export interface WasmMixer {
|
|
|
1605
1976
|
timing: number,
|
|
1606
1977
|
) => number;
|
|
1607
1978
|
setSendDb: (stripIndex: number, sendIndex: number, sendDb: number) => void;
|
|
1979
|
+
removeSend: (stripIndex: number, sendIndex: number) => void;
|
|
1608
1980
|
meterTap: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
|
|
1609
|
-
stripMeter: (stripIndex: number
|
|
1981
|
+
stripMeter: (stripIndex: number) => WasmMixMeterSnapshot;
|
|
1610
1982
|
scheduleFaderAutomation: (
|
|
1611
1983
|
stripIndex: number,
|
|
1612
1984
|
samplePos: number,
|
|
@@ -1637,9 +2009,16 @@ export interface WasmMixer {
|
|
|
1637
2009
|
removeBus: (id: string) => void;
|
|
1638
2010
|
busCount: () => number;
|
|
1639
2011
|
addVcaGroup: (id: string, gainDb: number, members: string[]) => void;
|
|
2012
|
+
setVcaGroupGainDb: (id: string, gainDb: number) => void;
|
|
1640
2013
|
removeVcaGroup: (id: string) => void;
|
|
1641
2014
|
vcaGroupCount: () => number;
|
|
1642
2015
|
toSceneJson: () => string;
|
|
2016
|
+
tailSamples: () => number;
|
|
2017
|
+
drainTailStereo: (numSamples: number) => {
|
|
2018
|
+
left: Float32Array;
|
|
2019
|
+
right: Float32Array;
|
|
2020
|
+
sampleRate: number;
|
|
2021
|
+
};
|
|
1643
2022
|
delete: () => void;
|
|
1644
2023
|
}
|
|
1645
2024
|
|
|
@@ -1703,6 +2082,8 @@ export interface WasmAnalyzerStats {
|
|
|
1703
2082
|
|
|
1704
2083
|
export interface WasmFrameBuffer {
|
|
1705
2084
|
nFrames: number;
|
|
2085
|
+
/** Number of mel bands; flat `mel` is `[nFrames * nMels]` row-major. */
|
|
2086
|
+
nMels: number;
|
|
1706
2087
|
timestamps: Float32Array;
|
|
1707
2088
|
mel: Float32Array;
|
|
1708
2089
|
chroma: Float32Array;
|
|
@@ -1742,10 +2123,11 @@ export interface WasmStreamFramesI16 {
|
|
|
1742
2123
|
export interface WasmStreamAnalyzer {
|
|
1743
2124
|
process: (samples: Float32Array) => void;
|
|
1744
2125
|
processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
|
|
2126
|
+
finalize: () => void;
|
|
1745
2127
|
availableFrames: () => number;
|
|
1746
2128
|
readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
|
|
1747
|
-
readFramesU8: (maxFrames: number) => WasmStreamFramesU8;
|
|
1748
|
-
readFramesI16: (maxFrames: number) => WasmStreamFramesI16;
|
|
2129
|
+
readFramesU8: (maxFrames: number, quantizeConfig?: unknown) => WasmStreamFramesU8;
|
|
2130
|
+
readFramesI16: (maxFrames: number, quantizeConfig?: unknown) => WasmStreamFramesI16;
|
|
1749
2131
|
reset: (baseSampleOffset?: number) => void;
|
|
1750
2132
|
stats: () => WasmAnalyzerStats;
|
|
1751
2133
|
frameCount: () => number;
|