@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/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) =>
|
|
264
|
-
readFramesI16: (maxFrames: number) =>
|
|
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
|
}
|