@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/README.md +164 -2
- package/dist/index.d.ts +1122 -18
- package/dist/index.js +1124 -14
- package/dist/index.js.map +1 -1
- package/dist/sonare-rt-module.js +2 -0
- package/dist/sonare-rt.js +2 -0
- package/dist/sonare-rt.wasm +0 -0
- package/dist/sonare.js +1 -1
- package/dist/sonare.wasm +0 -0
- package/dist/worklet.d.ts +447 -0
- package/dist/worklet.js +2078 -0
- package/dist/worklet.js.map +1 -0
- package/package.json +14 -4
- package/src/index.ts +1895 -63
- package/src/public_types.ts +451 -0
- package/src/sonare-rt.d.ts +93 -0
- package/src/sonare.js.d.ts +710 -2
- package/src/stream_types.ts +35 -0
- package/src/wasm_types.ts +695 -2
- package/src/worklet.ts +2140 -0
package/src/sonare.js.d.ts
CHANGED
|
@@ -18,6 +18,11 @@ interface WasmKeyResult {
|
|
|
18
18
|
shortName: string;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
interface WasmKeyCandidateResult {
|
|
22
|
+
key: WasmKeyResult;
|
|
23
|
+
correlation: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
21
26
|
interface WasmBeatResult {
|
|
22
27
|
time: number;
|
|
23
28
|
strength: number;
|
|
@@ -25,6 +30,7 @@ interface WasmBeatResult {
|
|
|
25
30
|
|
|
26
31
|
interface WasmChordResult {
|
|
27
32
|
root: number;
|
|
33
|
+
bass: number;
|
|
28
34
|
quality: number;
|
|
29
35
|
start: number;
|
|
30
36
|
end: number;
|
|
@@ -82,6 +88,24 @@ interface WasmAnalysisResult {
|
|
|
82
88
|
form: string;
|
|
83
89
|
}
|
|
84
90
|
|
|
91
|
+
interface WasmChordAnalysisResult {
|
|
92
|
+
chords: WasmChordResult[];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
interface WasmAcousticResult {
|
|
96
|
+
rt60: number;
|
|
97
|
+
edt: number;
|
|
98
|
+
c50: number;
|
|
99
|
+
c80: number;
|
|
100
|
+
d50: number;
|
|
101
|
+
rt60Bands: Float32Array;
|
|
102
|
+
edtBands: Float32Array;
|
|
103
|
+
c50Bands: Float32Array;
|
|
104
|
+
c80Bands: Float32Array;
|
|
105
|
+
confidence: number;
|
|
106
|
+
isBlind: boolean;
|
|
107
|
+
}
|
|
108
|
+
|
|
85
109
|
interface WasmHpssResult {
|
|
86
110
|
harmonic: Float32Array;
|
|
87
111
|
percussive: Float32Array;
|
|
@@ -119,6 +143,18 @@ interface WasmMfccResult {
|
|
|
119
143
|
coefficients: Float32Array;
|
|
120
144
|
}
|
|
121
145
|
|
|
146
|
+
interface WasmStftPowerResult {
|
|
147
|
+
nBins: number;
|
|
148
|
+
nFrames: number;
|
|
149
|
+
power: Float32Array;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
interface WasmMelPowerResult {
|
|
153
|
+
nMels: number;
|
|
154
|
+
nFrames: number;
|
|
155
|
+
power: Float32Array;
|
|
156
|
+
}
|
|
157
|
+
|
|
122
158
|
interface WasmChromaResult {
|
|
123
159
|
nChroma: number;
|
|
124
160
|
nFrames: number;
|
|
@@ -154,6 +190,54 @@ interface WasmTempogramResult {
|
|
|
154
190
|
data: Float32Array;
|
|
155
191
|
}
|
|
156
192
|
|
|
193
|
+
interface WasmCyclicTempogramResult {
|
|
194
|
+
nFrames: number;
|
|
195
|
+
nBins: number;
|
|
196
|
+
data: Float32Array;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
interface WasmFourierTempogramResult {
|
|
200
|
+
nBins: number;
|
|
201
|
+
nFrames: number;
|
|
202
|
+
data: Float32Array;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
interface WasmNnlsChromaResult {
|
|
206
|
+
nChroma: number;
|
|
207
|
+
nFrames: number;
|
|
208
|
+
data: Float32Array;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
interface WasmMelodyPoint {
|
|
212
|
+
time: number;
|
|
213
|
+
frequency: number;
|
|
214
|
+
confidence: number;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
interface WasmMelodyResult {
|
|
218
|
+
points: WasmMelodyPoint[];
|
|
219
|
+
pitchRangeOctaves: number;
|
|
220
|
+
pitchStability: number;
|
|
221
|
+
meanFrequency: number;
|
|
222
|
+
vibratoRate: number;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
interface WasmCqtResult {
|
|
226
|
+
nBins: number;
|
|
227
|
+
nFrames: number;
|
|
228
|
+
hopLength: number;
|
|
229
|
+
sampleRate: number;
|
|
230
|
+
magnitude: Float32Array;
|
|
231
|
+
frequencies: Float32Array;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
interface WasmLufsResult {
|
|
235
|
+
integratedLufs: number;
|
|
236
|
+
momentaryLufs: number;
|
|
237
|
+
shortTermLufs: number;
|
|
238
|
+
loudnessRange: number;
|
|
239
|
+
}
|
|
240
|
+
|
|
157
241
|
interface WasmMasteringResult {
|
|
158
242
|
samples: Float32Array;
|
|
159
243
|
sampleRate: number;
|
|
@@ -187,21 +271,320 @@ interface WasmMasteringStereoResult {
|
|
|
187
271
|
latencySamples: number;
|
|
188
272
|
}
|
|
189
273
|
|
|
274
|
+
interface WasmMixMeterSnapshot {
|
|
275
|
+
peakDbL: number;
|
|
276
|
+
peakDbR: number;
|
|
277
|
+
rmsDbL: number;
|
|
278
|
+
rmsDbR: number;
|
|
279
|
+
correlation: number;
|
|
280
|
+
monoCompatWidth: number;
|
|
281
|
+
monoCompatPeak: number;
|
|
282
|
+
monoCompatSideRms: number;
|
|
283
|
+
likelyMonoCompatible: boolean;
|
|
284
|
+
momentaryLufs: number;
|
|
285
|
+
shortTermLufs: number;
|
|
286
|
+
integratedLufs: number;
|
|
287
|
+
gainReductionDb: number;
|
|
288
|
+
truePeakDbL: number;
|
|
289
|
+
truePeakDbR: number;
|
|
290
|
+
maxTruePeakDb: number;
|
|
291
|
+
seq: number;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
interface WasmMixResult {
|
|
295
|
+
left: Float32Array;
|
|
296
|
+
right: Float32Array;
|
|
297
|
+
sampleRate: number;
|
|
298
|
+
meters: WasmMixMeterSnapshot[];
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
interface WasmEngineClip {
|
|
302
|
+
id?: number;
|
|
303
|
+
channels: Float32Array[];
|
|
304
|
+
startPpq: number;
|
|
305
|
+
lengthSamples?: number;
|
|
306
|
+
clipOffsetSamples?: number;
|
|
307
|
+
loop?: boolean;
|
|
308
|
+
gain?: number;
|
|
309
|
+
fadeInSamples?: number;
|
|
310
|
+
fadeOutSamples?: number;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
interface WasmEngineParameterInfo {
|
|
314
|
+
id: number;
|
|
315
|
+
name: string;
|
|
316
|
+
unit: string;
|
|
317
|
+
minValue: number;
|
|
318
|
+
maxValue: number;
|
|
319
|
+
defaultValue: number;
|
|
320
|
+
rtSafe: boolean;
|
|
321
|
+
defaultCurve: number;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
interface WasmEngineAutomationPoint {
|
|
325
|
+
ppq: number;
|
|
326
|
+
value: number;
|
|
327
|
+
curveToNext?: number;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
interface WasmEngineMarker {
|
|
331
|
+
id: number;
|
|
332
|
+
ppq: number;
|
|
333
|
+
name?: string;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
interface WasmEngineMetronomeConfig {
|
|
337
|
+
enabled: boolean;
|
|
338
|
+
beatGain?: number;
|
|
339
|
+
accentGain?: number;
|
|
340
|
+
clickSamples?: number;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
interface WasmEngineGraphNode {
|
|
344
|
+
id: string;
|
|
345
|
+
type?: number;
|
|
346
|
+
gainDb?: number;
|
|
347
|
+
numPorts?: number;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
interface WasmEngineGraphConnection {
|
|
351
|
+
sourceNode: string;
|
|
352
|
+
sourcePort: number;
|
|
353
|
+
destNode: string;
|
|
354
|
+
destPort: number;
|
|
355
|
+
mix?: number;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
interface WasmEngineGraphParameterBinding {
|
|
359
|
+
paramId: number;
|
|
360
|
+
nodeId: string;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
interface WasmEngineGraphSpec {
|
|
364
|
+
nodes: WasmEngineGraphNode[];
|
|
365
|
+
connections: WasmEngineGraphConnection[];
|
|
366
|
+
inputNode: string;
|
|
367
|
+
outputNode: string;
|
|
368
|
+
numChannels: number;
|
|
369
|
+
parameterBindings?: WasmEngineGraphParameterBinding[];
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
interface WasmEngineTelemetry {
|
|
373
|
+
type: number;
|
|
374
|
+
error: number;
|
|
375
|
+
renderFrame: number;
|
|
376
|
+
timelineSample: number;
|
|
377
|
+
audibleTimelineSample: number;
|
|
378
|
+
graphLatencySamplesQ8: number;
|
|
379
|
+
value: number;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
interface WasmEngineMeterTelemetry {
|
|
383
|
+
targetId: number;
|
|
384
|
+
renderFrame: number;
|
|
385
|
+
seq: number;
|
|
386
|
+
peakDbL: number;
|
|
387
|
+
peakDbR: number;
|
|
388
|
+
rmsDbL: number;
|
|
389
|
+
rmsDbR: number;
|
|
390
|
+
truePeakDbL: number;
|
|
391
|
+
truePeakDbR: number;
|
|
392
|
+
maxTruePeakDb: number;
|
|
393
|
+
correlation: number;
|
|
394
|
+
monoCompatWidth: number;
|
|
395
|
+
momentaryLufs: number;
|
|
396
|
+
shortTermLufs: number;
|
|
397
|
+
integratedLufs: number;
|
|
398
|
+
gainReductionDb: number;
|
|
399
|
+
droppedRecords: number;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
interface WasmEngineCaptureStatus {
|
|
403
|
+
capturedFrames: number;
|
|
404
|
+
overflowCount: number;
|
|
405
|
+
armed: boolean;
|
|
406
|
+
punchEnabled: boolean;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
interface WasmEngineTransportState {
|
|
410
|
+
playing: boolean;
|
|
411
|
+
looping: boolean;
|
|
412
|
+
renderFrame: number;
|
|
413
|
+
samplePosition: number;
|
|
414
|
+
ppq: number;
|
|
415
|
+
bpm: number;
|
|
416
|
+
loopStartPpq: number;
|
|
417
|
+
loopEndPpq: number;
|
|
418
|
+
sampleRate: number;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
interface WasmEngineBounceOptions {
|
|
422
|
+
totalFrames: number;
|
|
423
|
+
blockSize?: number;
|
|
424
|
+
numChannels?: number;
|
|
425
|
+
targetSampleRate?: number;
|
|
426
|
+
sourceSampleRate?: number;
|
|
427
|
+
normalizeLufs?: boolean;
|
|
428
|
+
targetLufs?: number;
|
|
429
|
+
dither?: 0 | 1 | 2 | 3;
|
|
430
|
+
ditherBits?: number;
|
|
431
|
+
ditherSeed?: number;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
interface WasmEngineBounceResult {
|
|
435
|
+
interleaved: Float32Array;
|
|
436
|
+
frames: number;
|
|
437
|
+
numChannels: number;
|
|
438
|
+
sampleRate: number;
|
|
439
|
+
integratedLufs: number;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
interface WasmEngineFreezeOptions {
|
|
443
|
+
totalFrames: number;
|
|
444
|
+
blockSize?: number;
|
|
445
|
+
numChannels?: number;
|
|
446
|
+
clipId?: number;
|
|
447
|
+
startPpq?: number;
|
|
448
|
+
gain?: number;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
interface WasmEngineFreezeResult {
|
|
452
|
+
clipId: number;
|
|
453
|
+
frames: number;
|
|
454
|
+
numChannels: number;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
interface WasmEngineProcessWithMonitorResult {
|
|
458
|
+
output: Float32Array[];
|
|
459
|
+
monitor: Float32Array[];
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
interface WasmRealtimeEngine {
|
|
463
|
+
prepare: (
|
|
464
|
+
sampleRate: number,
|
|
465
|
+
maxBlockSize: number,
|
|
466
|
+
commandCapacity: number,
|
|
467
|
+
telemetryCapacity: number,
|
|
468
|
+
) => void;
|
|
469
|
+
setParameter: (paramId: number, value: number, renderFrame: number) => void;
|
|
470
|
+
setParameterSmoothed: (paramId: number, value: number, renderFrame: number) => void;
|
|
471
|
+
getTransportState: () => WasmEngineTransportState;
|
|
472
|
+
play: (renderFrame: number) => void;
|
|
473
|
+
stop: (renderFrame: number) => void;
|
|
474
|
+
seekSample: (timelineSample: number, renderFrame: number) => void;
|
|
475
|
+
seekPpq: (ppq: number, renderFrame: number) => void;
|
|
476
|
+
setTempo: (bpm: number) => void;
|
|
477
|
+
setTimeSignature: (numerator: number, denominator: number) => void;
|
|
478
|
+
setLoop: (startPpq: number, endPpq: number, enabled: boolean) => void;
|
|
479
|
+
addParameter: (info: WasmEngineParameterInfo) => void;
|
|
480
|
+
parameterCount: () => number;
|
|
481
|
+
parameterInfoByIndex: (index: number) => WasmEngineParameterInfo;
|
|
482
|
+
parameterInfo: (id: number) => WasmEngineParameterInfo;
|
|
483
|
+
setAutomationLane: (paramId: number, points: WasmEngineAutomationPoint[]) => void;
|
|
484
|
+
automationLaneCount: () => number;
|
|
485
|
+
setMarkers: (markers: WasmEngineMarker[]) => void;
|
|
486
|
+
markerCount: () => number;
|
|
487
|
+
markerByIndex: (index: number) => WasmEngineMarker;
|
|
488
|
+
marker: (id: number) => WasmEngineMarker;
|
|
489
|
+
seekMarker: (id: number, renderFrame: number) => void;
|
|
490
|
+
setLoopFromMarkers: (startMarkerId: number, endMarkerId: number) => void;
|
|
491
|
+
setMetronome: (config: WasmEngineMetronomeConfig) => void;
|
|
492
|
+
metronome: () => Required<WasmEngineMetronomeConfig>;
|
|
493
|
+
countInEndSample: (startSample: number, bars: number) => number;
|
|
494
|
+
setGraph: (spec: WasmEngineGraphSpec) => void;
|
|
495
|
+
graphNodeCount: () => number;
|
|
496
|
+
graphConnectionCount: () => number;
|
|
497
|
+
setClips: (clips: WasmEngineClip[]) => void;
|
|
498
|
+
clipCount: () => number;
|
|
499
|
+
setCaptureBuffer: (numChannels: number, capacityFrames: number) => void;
|
|
500
|
+
armCapture: (armed: boolean) => void;
|
|
501
|
+
setCapturePunch: (startSample: number, endSample: number, enabled: boolean) => void;
|
|
502
|
+
resetCapture: () => void;
|
|
503
|
+
captureStatus: () => WasmEngineCaptureStatus;
|
|
504
|
+
capturedAudio: () => Float32Array[];
|
|
505
|
+
process: (channels: Float32Array[]) => Float32Array[];
|
|
506
|
+
processWithMonitor: (channels: Float32Array[]) => WasmEngineProcessWithMonitorResult;
|
|
507
|
+
renderOffline: (channels: Float32Array[], blockSize: number) => Float32Array[];
|
|
508
|
+
bounceOffline: (options: WasmEngineBounceOptions) => WasmEngineBounceResult;
|
|
509
|
+
freezeOffline: (options: WasmEngineFreezeOptions) => WasmEngineFreezeResult;
|
|
510
|
+
drainTelemetry: (maxRecords: number) => WasmEngineTelemetry[];
|
|
511
|
+
drainMeterTelemetry: (maxRecords: number) => WasmEngineMeterTelemetry[];
|
|
512
|
+
delete: () => void;
|
|
513
|
+
}
|
|
514
|
+
|
|
190
515
|
type ProgressCallback = (progress: number, stage: string) => void;
|
|
516
|
+
type TempogramMode = 'autocorrelation' | 'auto' | 'ac' | 'cosine' | 0 | 1;
|
|
191
517
|
|
|
192
518
|
interface SonareModule {
|
|
193
519
|
// Quick API (high-level)
|
|
194
520
|
detectBpm: (samples: Float32Array, sampleRate: number) => number;
|
|
195
521
|
detectKey: (samples: Float32Array, sampleRate: number) => WasmKeyResult;
|
|
522
|
+
_detectKeyWithOptions: (
|
|
523
|
+
samples: Float32Array,
|
|
524
|
+
sampleRate: number,
|
|
525
|
+
nFft: number,
|
|
526
|
+
hopLength: number,
|
|
527
|
+
useHpss: boolean,
|
|
528
|
+
loudnessWeighted: boolean,
|
|
529
|
+
highPassHz: number,
|
|
530
|
+
modes: number[],
|
|
531
|
+
profileType: number,
|
|
532
|
+
genreHint: string,
|
|
533
|
+
) => WasmKeyResult;
|
|
534
|
+
_detectKeyCandidates: (
|
|
535
|
+
samples: Float32Array,
|
|
536
|
+
sampleRate: number,
|
|
537
|
+
nFft: number,
|
|
538
|
+
hopLength: number,
|
|
539
|
+
useHpss: boolean,
|
|
540
|
+
loudnessWeighted: boolean,
|
|
541
|
+
highPassHz: number,
|
|
542
|
+
modes: number[],
|
|
543
|
+
profileType: number,
|
|
544
|
+
genreHint: string,
|
|
545
|
+
) => WasmKeyCandidateResult[];
|
|
196
546
|
detectOnsets: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
197
547
|
detectBeats: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
548
|
+
detectDownbeats: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
549
|
+
detectChords: (
|
|
550
|
+
samples: Float32Array,
|
|
551
|
+
sampleRate: number,
|
|
552
|
+
minDuration: number,
|
|
553
|
+
smoothingWindow: number,
|
|
554
|
+
threshold: number,
|
|
555
|
+
useTriadsOnly: boolean,
|
|
556
|
+
nFft: number,
|
|
557
|
+
hopLength: number,
|
|
558
|
+
useBeatSync: boolean,
|
|
559
|
+
useHmm: boolean,
|
|
560
|
+
hmmBeamWidth: number,
|
|
561
|
+
useKeyContext: boolean,
|
|
562
|
+
keyRoot: number,
|
|
563
|
+
keyMode: number,
|
|
564
|
+
detectInversions: boolean,
|
|
565
|
+
chromaMethod: number,
|
|
566
|
+
) => WasmChordAnalysisResult;
|
|
198
567
|
analyze: (samples: Float32Array, sampleRate: number) => WasmAnalysisResult;
|
|
568
|
+
analyzeImpulseResponse: (
|
|
569
|
+
samples: Float32Array,
|
|
570
|
+
sampleRate: number,
|
|
571
|
+
nOctaveBands: number,
|
|
572
|
+
) => WasmAcousticResult;
|
|
573
|
+
detectAcoustic: (
|
|
574
|
+
samples: Float32Array,
|
|
575
|
+
sampleRate: number,
|
|
576
|
+
nOctaveBands: number,
|
|
577
|
+
nThirdOctaveSubbands: number,
|
|
578
|
+
minDecayDb: number,
|
|
579
|
+
noiseFloorMarginDb: number,
|
|
580
|
+
) => WasmAcousticResult;
|
|
199
581
|
analyzeWithProgress: (
|
|
200
582
|
samples: Float32Array,
|
|
201
583
|
sampleRate: number,
|
|
202
584
|
progressCallback: ProgressCallback | null,
|
|
203
585
|
) => WasmAnalysisResult;
|
|
204
586
|
version: () => string;
|
|
587
|
+
engineAbiVersion: () => number;
|
|
205
588
|
|
|
206
589
|
// Effects
|
|
207
590
|
hpss: (
|
|
@@ -214,6 +597,25 @@ interface SonareModule {
|
|
|
214
597
|
percussive: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
215
598
|
timeStretch: (samples: Float32Array, sampleRate: number, rate: number) => Float32Array;
|
|
216
599
|
pitchShift: (samples: Float32Array, sampleRate: number, semitones: number) => Float32Array;
|
|
600
|
+
pitchCorrectToMidi: (
|
|
601
|
+
samples: Float32Array,
|
|
602
|
+
sampleRate: number,
|
|
603
|
+
currentMidi: number,
|
|
604
|
+
targetMidi: number,
|
|
605
|
+
) => Float32Array;
|
|
606
|
+
noteStretch: (
|
|
607
|
+
samples: Float32Array,
|
|
608
|
+
sampleRate: number,
|
|
609
|
+
onsetSample: number,
|
|
610
|
+
offsetSample: number,
|
|
611
|
+
stretchRatio: number,
|
|
612
|
+
) => Float32Array;
|
|
613
|
+
voiceChange: (
|
|
614
|
+
samples: Float32Array,
|
|
615
|
+
sampleRate: number,
|
|
616
|
+
pitchSemitones: number,
|
|
617
|
+
formantFactor: number,
|
|
618
|
+
) => Float32Array;
|
|
217
619
|
normalize: (samples: Float32Array, sampleRate: number, targetDb: number) => Float32Array;
|
|
218
620
|
mastering: (
|
|
219
621
|
samples: Float32Array,
|
|
@@ -260,6 +662,21 @@ interface SonareModule {
|
|
|
260
662
|
sampleRate: number,
|
|
261
663
|
params: Record<string, number | boolean>,
|
|
262
664
|
) => string;
|
|
665
|
+
masteringAssistantSuggest: (
|
|
666
|
+
samples: Float32Array,
|
|
667
|
+
sampleRate: number,
|
|
668
|
+
params: Record<string, number | boolean>,
|
|
669
|
+
) => string;
|
|
670
|
+
masteringAudioProfile: (
|
|
671
|
+
samples: Float32Array,
|
|
672
|
+
sampleRate: number,
|
|
673
|
+
params: Record<string, number | boolean>,
|
|
674
|
+
) => string;
|
|
675
|
+
masteringStreamingPreview: (
|
|
676
|
+
samples: Float32Array,
|
|
677
|
+
sampleRate: number,
|
|
678
|
+
platforms: Array<{ name: string; targetLufs: number; ceilingDb: number }>,
|
|
679
|
+
) => string;
|
|
263
680
|
masteringChain: (
|
|
264
681
|
samples: Float32Array,
|
|
265
682
|
sampleRate: number,
|
|
@@ -298,6 +715,14 @@ interface SonareModule {
|
|
|
298
715
|
sampleRate: number,
|
|
299
716
|
overrides: Record<string, number | boolean> | null,
|
|
300
717
|
) => WasmMasteringStereoChainResult;
|
|
718
|
+
mixingScenePresetNames: () => string[];
|
|
719
|
+
mixingScenePresetJson: (presetName: string) => string;
|
|
720
|
+
mixStereo: (
|
|
721
|
+
leftChannels: Float32Array[],
|
|
722
|
+
rightChannels: Float32Array[],
|
|
723
|
+
sampleRate: number,
|
|
724
|
+
options: Record<string, unknown>,
|
|
725
|
+
) => WasmMixResult;
|
|
301
726
|
trim: (samples: Float32Array, sampleRate: number, thresholdDb: number) => Float32Array;
|
|
302
727
|
|
|
303
728
|
// Features - Spectrogram
|
|
@@ -331,6 +756,47 @@ interface SonareModule {
|
|
|
331
756
|
nMfcc: number,
|
|
332
757
|
) => WasmMfccResult;
|
|
333
758
|
|
|
759
|
+
// Features - Inverse reconstruction
|
|
760
|
+
melToStft: (
|
|
761
|
+
melPower: Float32Array,
|
|
762
|
+
nMels: number,
|
|
763
|
+
nFrames: number,
|
|
764
|
+
sampleRate: number,
|
|
765
|
+
nFft: number,
|
|
766
|
+
hopLength: number,
|
|
767
|
+
fmin: number,
|
|
768
|
+
fmax: number,
|
|
769
|
+
) => WasmStftPowerResult;
|
|
770
|
+
melToAudio: (
|
|
771
|
+
melPower: Float32Array,
|
|
772
|
+
nMels: number,
|
|
773
|
+
nFrames: number,
|
|
774
|
+
sampleRate: number,
|
|
775
|
+
nFft: number,
|
|
776
|
+
hopLength: number,
|
|
777
|
+
nIter: number,
|
|
778
|
+
fmin: number,
|
|
779
|
+
fmax: number,
|
|
780
|
+
) => Float32Array;
|
|
781
|
+
mfccToMel: (
|
|
782
|
+
mfcc: Float32Array,
|
|
783
|
+
nMfcc: number,
|
|
784
|
+
nFrames: number,
|
|
785
|
+
nMels: number,
|
|
786
|
+
) => WasmMelPowerResult;
|
|
787
|
+
mfccToAudio: (
|
|
788
|
+
mfcc: Float32Array,
|
|
789
|
+
nMfcc: number,
|
|
790
|
+
nFrames: number,
|
|
791
|
+
nMels: number,
|
|
792
|
+
sampleRate: number,
|
|
793
|
+
nFft: number,
|
|
794
|
+
hopLength: number,
|
|
795
|
+
nIter: number,
|
|
796
|
+
fmin: number,
|
|
797
|
+
fmax: number,
|
|
798
|
+
) => Float32Array;
|
|
799
|
+
|
|
334
800
|
// Features - Chroma
|
|
335
801
|
chroma: (
|
|
336
802
|
samples: Float32Array,
|
|
@@ -453,7 +919,16 @@ interface SonareModule {
|
|
|
453
919
|
sampleRate: number,
|
|
454
920
|
hopLength: number,
|
|
455
921
|
winLength: number,
|
|
922
|
+
mode: TempogramMode,
|
|
456
923
|
) => WasmTempogramResult;
|
|
924
|
+
cyclicTempogram: (
|
|
925
|
+
onsetEnvelope: Float32Array,
|
|
926
|
+
sampleRate: number,
|
|
927
|
+
hopLength: number,
|
|
928
|
+
winLength: number,
|
|
929
|
+
bpmMin: number,
|
|
930
|
+
nBins: number,
|
|
931
|
+
) => WasmCyclicTempogramResult;
|
|
457
932
|
plp: (
|
|
458
933
|
onsetEnvelope: Float32Array,
|
|
459
934
|
sampleRate: number,
|
|
@@ -462,6 +937,62 @@ interface SonareModule {
|
|
|
462
937
|
tempoMax: number,
|
|
463
938
|
winLength: number,
|
|
464
939
|
) => Float32Array;
|
|
940
|
+
nnlsChroma: (samples: Float32Array, sampleRate: number) => WasmNnlsChromaResult;
|
|
941
|
+
cqt: (
|
|
942
|
+
samples: Float32Array,
|
|
943
|
+
sampleRate: number,
|
|
944
|
+
hopLength: number,
|
|
945
|
+
fmin: number,
|
|
946
|
+
nBins: number,
|
|
947
|
+
binsPerOctave: number,
|
|
948
|
+
) => WasmCqtResult;
|
|
949
|
+
vqt: (
|
|
950
|
+
samples: Float32Array,
|
|
951
|
+
sampleRate: number,
|
|
952
|
+
hopLength: number,
|
|
953
|
+
fmin: number,
|
|
954
|
+
nBins: number,
|
|
955
|
+
binsPerOctave: number,
|
|
956
|
+
gamma: number,
|
|
957
|
+
) => WasmCqtResult;
|
|
958
|
+
analyzeSections: (
|
|
959
|
+
samples: Float32Array,
|
|
960
|
+
sampleRate: number,
|
|
961
|
+
nFft: number,
|
|
962
|
+
hopLength: number,
|
|
963
|
+
minSectionSec: number,
|
|
964
|
+
) => WasmSectionResult[];
|
|
965
|
+
analyzeMelody: (
|
|
966
|
+
samples: Float32Array,
|
|
967
|
+
sampleRate: number,
|
|
968
|
+
fmin: number,
|
|
969
|
+
fmax: number,
|
|
970
|
+
frameLength: number,
|
|
971
|
+
hopLength: number,
|
|
972
|
+
threshold: number,
|
|
973
|
+
) => WasmMelodyResult;
|
|
974
|
+
onsetEnvelope: (
|
|
975
|
+
samples: Float32Array,
|
|
976
|
+
sampleRate: number,
|
|
977
|
+
nFft: number,
|
|
978
|
+
hopLength: number,
|
|
979
|
+
nMels: number,
|
|
980
|
+
) => Float32Array;
|
|
981
|
+
fourierTempogram: (
|
|
982
|
+
onsetEnvelope: Float32Array,
|
|
983
|
+
sampleRate: number,
|
|
984
|
+
hopLength: number,
|
|
985
|
+
winLength: number,
|
|
986
|
+
) => WasmFourierTempogramResult;
|
|
987
|
+
tempogramRatio: (
|
|
988
|
+
tempogramData: Float32Array,
|
|
989
|
+
winLength: number,
|
|
990
|
+
sampleRate: number,
|
|
991
|
+
hopLength: number,
|
|
992
|
+
) => Float32Array;
|
|
993
|
+
lufs: (samples: Float32Array, sampleRate: number) => WasmLufsResult;
|
|
994
|
+
momentaryLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
995
|
+
shortTermLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
465
996
|
|
|
466
997
|
// Core - Resample
|
|
467
998
|
resample: (samples: Float32Array, srcSr: number, targetSr: number) => Float32Array;
|
|
@@ -495,6 +1026,14 @@ interface SonareModule {
|
|
|
495
1026
|
Minor7: { value: 6 };
|
|
496
1027
|
Sus2: { value: 7 };
|
|
497
1028
|
Sus4: { value: 8 };
|
|
1029
|
+
Unknown: { value: 9 };
|
|
1030
|
+
Add9: { value: 10 };
|
|
1031
|
+
MinorAdd9: { value: 11 };
|
|
1032
|
+
Dim7: { value: 12 };
|
|
1033
|
+
HalfDim7: { value: 13 };
|
|
1034
|
+
Major9: { value: 14 };
|
|
1035
|
+
Dominant9: { value: 15 };
|
|
1036
|
+
Sus2Add4: { value: 16 };
|
|
498
1037
|
};
|
|
499
1038
|
SectionType: {
|
|
500
1039
|
Intro: { value: 0 };
|
|
@@ -504,6 +1043,7 @@ interface SonareModule {
|
|
|
504
1043
|
Bridge: { value: 4 };
|
|
505
1044
|
Instrumental: { value: 5 };
|
|
506
1045
|
Outro: { value: 6 };
|
|
1046
|
+
Unknown: { value: 7 };
|
|
507
1047
|
};
|
|
508
1048
|
|
|
509
1049
|
// Streaming - StreamAnalyzer
|
|
@@ -512,14 +1052,38 @@ interface SonareModule {
|
|
|
512
1052
|
nFft: number,
|
|
513
1053
|
hopLength: number,
|
|
514
1054
|
nMels: number,
|
|
1055
|
+
fmin: number,
|
|
1056
|
+
fmax: number,
|
|
1057
|
+
tuningRefHz: number,
|
|
1058
|
+
computeMagnitude: boolean,
|
|
515
1059
|
computeMel: boolean,
|
|
516
1060
|
computeChroma: boolean,
|
|
517
1061
|
computeOnset: boolean,
|
|
1062
|
+
computeSpectral: boolean,
|
|
518
1063
|
emitEveryNFrames: number,
|
|
1064
|
+
magnitudeDownsample: number,
|
|
1065
|
+
keyUpdateIntervalSec: number,
|
|
1066
|
+
bpmUpdateIntervalSec: number,
|
|
1067
|
+
window: number,
|
|
1068
|
+
outputFormat: number,
|
|
519
1069
|
) => WasmStreamAnalyzer;
|
|
520
1070
|
|
|
1071
|
+
RealtimeEngine: new (
|
|
1072
|
+
sampleRate: number,
|
|
1073
|
+
maxBlockSize: number,
|
|
1074
|
+
commandCapacity: number,
|
|
1075
|
+
telemetryCapacity: number,
|
|
1076
|
+
) => WasmRealtimeEngine;
|
|
1077
|
+
|
|
521
1078
|
// Streaming - StreamingMasteringChain
|
|
522
1079
|
createStreamingMasteringChain: (config: Record<string, unknown>) => WasmStreamingMasteringChain;
|
|
1080
|
+
|
|
1081
|
+
// Streaming - StreamingEqualizer
|
|
1082
|
+
createEqualizer: (config: Record<string, unknown>) => WasmStreamingEqualizer;
|
|
1083
|
+
|
|
1084
|
+
// Mixing - scene-based Mixer
|
|
1085
|
+
createMixerFromSceneJson: (json: string, sampleRate: number, blockSize: number) => WasmMixer;
|
|
1086
|
+
mixerPresetJson: (presetName: string) => string;
|
|
523
1087
|
}
|
|
524
1088
|
|
|
525
1089
|
interface WasmStreamingMasteringChain {
|
|
@@ -535,6 +1099,125 @@ interface WasmStreamingMasteringChain {
|
|
|
535
1099
|
delete: () => void;
|
|
536
1100
|
}
|
|
537
1101
|
|
|
1102
|
+
interface WasmEqSpectrumSnapshot {
|
|
1103
|
+
preLeft: Float32Array;
|
|
1104
|
+
preRight: Float32Array;
|
|
1105
|
+
postLeft: Float32Array;
|
|
1106
|
+
postRight: Float32Array;
|
|
1107
|
+
bandGainDb: Float32Array;
|
|
1108
|
+
profileDb: Float32Array;
|
|
1109
|
+
lastAutoGainDb: number;
|
|
1110
|
+
seq: number;
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
interface WasmStreamingEqualizer {
|
|
1114
|
+
setBand: (index: number, band: Record<string, unknown>) => void;
|
|
1115
|
+
clear: () => void;
|
|
1116
|
+
setPhaseMode: (mode: number) => void;
|
|
1117
|
+
setAutoGain: (enabled: boolean) => void;
|
|
1118
|
+
setGainScale: (scale: number) => void;
|
|
1119
|
+
setOutputGainDb: (gainDb: number) => void;
|
|
1120
|
+
setOutputPan: (pan: number) => void;
|
|
1121
|
+
setSidechainMono: (samples: Float32Array) => void;
|
|
1122
|
+
setSidechainStereo: (left: Float32Array, right: Float32Array) => void;
|
|
1123
|
+
clearSidechain: () => void;
|
|
1124
|
+
lastAutoGainDb: () => number;
|
|
1125
|
+
latencySamples: () => number;
|
|
1126
|
+
processMono: (samples: Float32Array) => Float32Array;
|
|
1127
|
+
processStereo: (
|
|
1128
|
+
left: Float32Array,
|
|
1129
|
+
right: Float32Array,
|
|
1130
|
+
) => { left: Float32Array; right: Float32Array };
|
|
1131
|
+
spectrum: () => WasmEqSpectrumSnapshot;
|
|
1132
|
+
match: (source: Float32Array, reference: Float32Array, options: Record<string, unknown>) => void;
|
|
1133
|
+
delete: () => void;
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
interface WasmMixer {
|
|
1137
|
+
compile: () => void;
|
|
1138
|
+
processStereo: (
|
|
1139
|
+
leftChannels: Float32Array[],
|
|
1140
|
+
rightChannels: Float32Array[],
|
|
1141
|
+
) => { left: Float32Array; right: Float32Array; sampleRate: number };
|
|
1142
|
+
processStereoInto: (
|
|
1143
|
+
leftChannels: Float32Array[],
|
|
1144
|
+
rightChannels: Float32Array[],
|
|
1145
|
+
outLeft: Float32Array,
|
|
1146
|
+
outRight: Float32Array,
|
|
1147
|
+
) => void;
|
|
1148
|
+
inputLeftView: (index: number) => Float32Array;
|
|
1149
|
+
inputRightView: (index: number) => Float32Array;
|
|
1150
|
+
outputLeftView: () => Float32Array;
|
|
1151
|
+
outputRightView: () => Float32Array;
|
|
1152
|
+
processPreparedStereo: (numSamples: number) => void;
|
|
1153
|
+
stripCount: () => number;
|
|
1154
|
+
scheduleInsertAutomation: (
|
|
1155
|
+
stripIndex: number,
|
|
1156
|
+
insertIndex: number,
|
|
1157
|
+
paramId: number,
|
|
1158
|
+
samplePos: number,
|
|
1159
|
+
value: number,
|
|
1160
|
+
curve: number,
|
|
1161
|
+
) => void;
|
|
1162
|
+
stripById: (id: string) => number;
|
|
1163
|
+
setSoloed: (stripIndex: number, soloed: boolean) => void;
|
|
1164
|
+
setSoloSafe: (stripIndex: number, soloSafe: boolean) => void;
|
|
1165
|
+
setPolarityInvert: (stripIndex: number, invertLeft: boolean, invertRight: boolean) => void;
|
|
1166
|
+
setPanLaw: (stripIndex: number, panLaw: number) => void;
|
|
1167
|
+
setChannelDelaySamples: (stripIndex: number, delaySamples: number) => void;
|
|
1168
|
+
setVcaOffsetDb: (stripIndex: number, offsetDb: number) => void;
|
|
1169
|
+
setDualPan: (stripIndex: number, leftPan: number, rightPan: number) => void;
|
|
1170
|
+
addSend: (
|
|
1171
|
+
stripIndex: number,
|
|
1172
|
+
id: string,
|
|
1173
|
+
destinationBusId: string,
|
|
1174
|
+
sendDb: number,
|
|
1175
|
+
timing: number,
|
|
1176
|
+
) => number;
|
|
1177
|
+
setSendDb: (stripIndex: number, sendIndex: number, sendDb: number) => void;
|
|
1178
|
+
meterTap: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
|
|
1179
|
+
stripMeter: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
|
|
1180
|
+
scheduleFaderAutomation: (
|
|
1181
|
+
stripIndex: number,
|
|
1182
|
+
samplePos: number,
|
|
1183
|
+
faderDb: number,
|
|
1184
|
+
curve: number,
|
|
1185
|
+
) => void;
|
|
1186
|
+
schedulePanAutomation: (
|
|
1187
|
+
stripIndex: number,
|
|
1188
|
+
samplePos: number,
|
|
1189
|
+
pan: number,
|
|
1190
|
+
curve: number,
|
|
1191
|
+
) => void;
|
|
1192
|
+
scheduleWidthAutomation: (
|
|
1193
|
+
stripIndex: number,
|
|
1194
|
+
samplePos: number,
|
|
1195
|
+
width: number,
|
|
1196
|
+
curve: number,
|
|
1197
|
+
) => void;
|
|
1198
|
+
scheduleSendAutomation: (
|
|
1199
|
+
stripIndex: number,
|
|
1200
|
+
sendIndex: number,
|
|
1201
|
+
samplePos: number,
|
|
1202
|
+
db: number,
|
|
1203
|
+
curve: number,
|
|
1204
|
+
) => void;
|
|
1205
|
+
readGoniometerLatest: (stripIndex: number, maxPoints: number) => WasmGoniometerPoint[];
|
|
1206
|
+
addBus: (id: string, role: string) => void;
|
|
1207
|
+
removeBus: (id: string) => void;
|
|
1208
|
+
busCount: () => number;
|
|
1209
|
+
addVcaGroup: (id: string, gainDb: number, members: string[]) => void;
|
|
1210
|
+
removeVcaGroup: (id: string) => void;
|
|
1211
|
+
vcaGroupCount: () => number;
|
|
1212
|
+
toSceneJson: () => string;
|
|
1213
|
+
delete: () => void;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
interface WasmGoniometerPoint {
|
|
1217
|
+
left: number;
|
|
1218
|
+
right: number;
|
|
1219
|
+
}
|
|
1220
|
+
|
|
538
1221
|
// Streaming types for StreamAnalyzer
|
|
539
1222
|
interface WasmChordChange {
|
|
540
1223
|
root: number;
|
|
@@ -566,6 +1249,7 @@ interface WasmProgressiveEstimate {
|
|
|
566
1249
|
chordRoot: number;
|
|
567
1250
|
chordQuality: number;
|
|
568
1251
|
chordConfidence: number;
|
|
1252
|
+
chordStartTime: number;
|
|
569
1253
|
chordProgression: WasmChordChange[];
|
|
570
1254
|
barChordProgression: WasmBarChord[];
|
|
571
1255
|
currentBar: number;
|
|
@@ -601,13 +1285,37 @@ interface WasmFrameBuffer {
|
|
|
601
1285
|
chordConfidence: Float32Array;
|
|
602
1286
|
}
|
|
603
1287
|
|
|
1288
|
+
interface WasmStreamFramesU8 {
|
|
1289
|
+
nFrames: number;
|
|
1290
|
+
nMels: number;
|
|
1291
|
+
timestamps: Float32Array;
|
|
1292
|
+
mel: Uint8Array;
|
|
1293
|
+
chroma: Uint8Array;
|
|
1294
|
+
onsetStrength: Uint8Array;
|
|
1295
|
+
rmsEnergy: Uint8Array;
|
|
1296
|
+
spectralCentroid: Uint8Array;
|
|
1297
|
+
spectralFlatness: Uint8Array;
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
interface WasmStreamFramesI16 {
|
|
1301
|
+
nFrames: number;
|
|
1302
|
+
nMels: number;
|
|
1303
|
+
timestamps: Float32Array;
|
|
1304
|
+
mel: Int16Array;
|
|
1305
|
+
chroma: Int16Array;
|
|
1306
|
+
onsetStrength: Int16Array;
|
|
1307
|
+
rmsEnergy: Int16Array;
|
|
1308
|
+
spectralCentroid: Int16Array;
|
|
1309
|
+
spectralFlatness: Int16Array;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
604
1312
|
interface WasmStreamAnalyzer {
|
|
605
1313
|
process: (samples: Float32Array) => void;
|
|
606
1314
|
processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
|
|
607
1315
|
availableFrames: () => number;
|
|
608
1316
|
readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
|
|
609
|
-
readFramesU8: (maxFrames: number) =>
|
|
610
|
-
readFramesI16: (maxFrames: number) =>
|
|
1317
|
+
readFramesU8: (maxFrames: number) => WasmStreamFramesU8;
|
|
1318
|
+
readFramesI16: (maxFrames: number) => WasmStreamFramesI16;
|
|
611
1319
|
reset: (baseSampleOffset?: number) => void;
|
|
612
1320
|
stats: () => WasmAnalyzerStats;
|
|
613
1321
|
frameCount: () => number;
|