@libraz/libsonare 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -2
- package/dist/index.d.ts +1162 -18
- package/dist/index.js +1167 -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 +1960 -63
- package/src/public_types.ts +461 -0
- package/src/sonare-rt.d.ts +93 -0
- package/src/sonare.js.d.ts +723 -2
- package/src/stream_types.ts +35 -0
- package/src/wasm_types.ts +706 -2
- package/src/worklet.ts +2140 -0
package/dist/index.d.ts
CHANGED
|
@@ -22,8 +22,25 @@ type PitchClass = (typeof PitchClass)[keyof typeof PitchClass];
|
|
|
22
22
|
declare const Mode: {
|
|
23
23
|
readonly Major: 0;
|
|
24
24
|
readonly Minor: 1;
|
|
25
|
+
readonly Dorian: 2;
|
|
26
|
+
readonly Phrygian: 3;
|
|
27
|
+
readonly Lydian: 4;
|
|
28
|
+
readonly Mixolydian: 5;
|
|
29
|
+
readonly Locrian: 6;
|
|
25
30
|
};
|
|
26
31
|
type Mode = (typeof Mode)[keyof typeof Mode];
|
|
32
|
+
type TempogramMode = 'autocorrelation' | 'auto' | 'ac' | 'cosine' | 0 | 1;
|
|
33
|
+
declare const KeyProfile: {
|
|
34
|
+
readonly KrumhanslSchmuckler: 0;
|
|
35
|
+
readonly Temperley: 1;
|
|
36
|
+
readonly Shaath: 2;
|
|
37
|
+
readonly FaraldoEDMT: 3;
|
|
38
|
+
readonly FaraldoEDMA: 4;
|
|
39
|
+
readonly FaraldoEDMM: 5;
|
|
40
|
+
readonly BellmanBudge: 6;
|
|
41
|
+
};
|
|
42
|
+
type KeyProfile = (typeof KeyProfile)[keyof typeof KeyProfile];
|
|
43
|
+
type KeyProfileName = 'ks' | 'krumhansl' | 'temperley' | 'shaath' | 'keyfinder' | 'faraldo-edmt' | 'edmt' | 'faraldo-edma' | 'edma' | 'faraldo-edmm' | 'edmm' | 'bellman-budge' | 'bellman';
|
|
27
44
|
/**
|
|
28
45
|
* Chord quality
|
|
29
46
|
*/
|
|
@@ -37,8 +54,26 @@ declare const ChordQuality: {
|
|
|
37
54
|
readonly Minor7: 6;
|
|
38
55
|
readonly Sus2: 7;
|
|
39
56
|
readonly Sus4: 8;
|
|
57
|
+
readonly Unknown: 9;
|
|
58
|
+
readonly Add9: 10;
|
|
59
|
+
readonly MinorAdd9: 11;
|
|
60
|
+
readonly Dim7: 12;
|
|
61
|
+
readonly HalfDim7: 13;
|
|
62
|
+
readonly Major9: 14;
|
|
63
|
+
readonly Dominant9: 15;
|
|
64
|
+
readonly Sus2Add4: 16;
|
|
40
65
|
};
|
|
41
66
|
type ChordQuality = (typeof ChordQuality)[keyof typeof ChordQuality];
|
|
67
|
+
type MasteringPreset = 'pop' | 'edm' | 'acoustic' | 'hipHop' | 'aiMusic' | 'speech' | 'streaming' | 'youtube' | 'broadcast' | 'podcast' | 'audiobook' | 'cinema' | 'jpop' | 'ambient' | 'lofi' | 'classical' | 'drumAndBass' | 'techno' | 'metal' | 'trap' | 'rnb' | 'jazz' | 'kpop' | 'trance' | 'gameOst';
|
|
68
|
+
interface StreamingPlatform {
|
|
69
|
+
name: string;
|
|
70
|
+
targetLufs: number;
|
|
71
|
+
ceilingDb: number;
|
|
72
|
+
}
|
|
73
|
+
type SoloProcessor = 'dynamics.brickwallLimiter' | 'dynamics.compressor' | 'dynamics.deesser' | 'dynamics.expander' | 'dynamics.gate' | 'dynamics.limiter' | 'dynamics.parallelComp' | 'dynamics.sidechainRouter' | 'dynamics.duckingProcessor' | 'dynamics.transientShaper' | 'dynamics.upwardCompressor' | 'dynamics.upwardExpander' | 'dynamics.vocalRider' | 'eq.apiStyle' | 'eq.bandPass' | 'eq.cutFilter' | 'eq.dynamic' | 'eq.equalizer' | 'eq.graphic' | 'eq.linearPhase' | 'eq.midSide' | 'eq.minimumPhase' | 'eq.parametric' | 'eq.pultec' | 'eq.shelving' | 'eq.tilt' | 'final.bitDepth' | 'final.dither' | 'final.outputChain' | 'maximizer.adaptiveRelease' | 'maximizer.loudnessOptimize' | 'maximizer.maximizer' | 'maximizer.softKneeMax' | 'maximizer.truePeakLimiter' | 'multiband.compressor' | 'multiband.dynamicEq' | 'multiband.expander' | 'multiband.imager' | 'multiband.limiter' | 'multiband.saturation' | 'repair.declick' | 'repair.declip' | 'repair.decrackle' | 'repair.dehum' | 'repair.denoiseClassical' | 'repair.dereverbClassical' | 'repair.trimSilence' | 'saturation.bitcrusher' | 'saturation.exciter' | 'saturation.hardClipper' | 'saturation.multibandExciter' | 'saturation.softClipper' | 'saturation.tape' | 'saturation.transformer' | 'saturation.tube' | 'saturation.waveshaper' | 'spectral.airBand' | 'spectral.lowEndFocus' | 'spectral.presenceEnhancer' | 'spectral.spectralShaper' | 'stereo.autoPan' | 'stereo.haasEnhancer' | 'stereo.imager' | 'stereo.monoMaker' | 'stereo.phaseAlign' | 'stereo.stereoBalance';
|
|
74
|
+
type PairProcessor = 'match.applyMatchEq' | 'match.alignReferenceToSource' | 'match.abSwitch' | 'match.abCrossfade';
|
|
75
|
+
type PairAnalysis = 'match.referenceLoudness' | 'match.tonalBalance' | 'match.tonalBalanceLogBands' | 'match.matchEqCurve' | 'match.estimateReferenceDelaySamples';
|
|
76
|
+
type StereoAnalysis = 'stereo.monoCompatCheck' | 'stereo.monoCompatCheckLogBands';
|
|
42
77
|
/**
|
|
43
78
|
* Section type
|
|
44
79
|
*/
|
|
@@ -50,6 +85,7 @@ declare const SectionType: {
|
|
|
50
85
|
readonly Bridge: 4;
|
|
51
86
|
readonly Instrumental: 5;
|
|
52
87
|
readonly Outro: 6;
|
|
88
|
+
readonly Unknown: 7;
|
|
53
89
|
};
|
|
54
90
|
type SectionType = (typeof SectionType)[keyof typeof SectionType];
|
|
55
91
|
/**
|
|
@@ -62,6 +98,36 @@ interface Key {
|
|
|
62
98
|
name: string;
|
|
63
99
|
shortName: string;
|
|
64
100
|
}
|
|
101
|
+
interface KeyDetectionOptions {
|
|
102
|
+
nFft?: number;
|
|
103
|
+
hopLength?: number;
|
|
104
|
+
useHpss?: boolean;
|
|
105
|
+
loudnessWeighted?: boolean;
|
|
106
|
+
highPassHz?: number;
|
|
107
|
+
modes?: Mode[] | ('major' | 'minor' | 'dorian' | 'phrygian' | 'lydian' | 'mixolydian' | 'locrian')[] | 'major-minor' | 'all' | 'modal';
|
|
108
|
+
profile?: KeyProfile | KeyProfileName;
|
|
109
|
+
genreHint?: 'auto' | 'edm' | 'electronic' | 'dance' | 'pop' | 'classical' | 'jazz' | string;
|
|
110
|
+
}
|
|
111
|
+
interface KeyCandidate {
|
|
112
|
+
key: Key;
|
|
113
|
+
correlation: number;
|
|
114
|
+
}
|
|
115
|
+
interface ChordDetectionOptions {
|
|
116
|
+
minDuration?: number;
|
|
117
|
+
smoothingWindow?: number;
|
|
118
|
+
threshold?: number;
|
|
119
|
+
useTriadsOnly?: boolean;
|
|
120
|
+
nFft?: number;
|
|
121
|
+
hopLength?: number;
|
|
122
|
+
useBeatSync?: boolean;
|
|
123
|
+
useHmm?: boolean;
|
|
124
|
+
hmmBeamWidth?: number;
|
|
125
|
+
useKeyContext?: boolean;
|
|
126
|
+
keyRoot?: PitchClass;
|
|
127
|
+
keyMode?: Mode;
|
|
128
|
+
detectInversions?: boolean;
|
|
129
|
+
chromaMethod?: 'stft' | 'nnls';
|
|
130
|
+
}
|
|
65
131
|
/**
|
|
66
132
|
* Detected beat
|
|
67
133
|
*/
|
|
@@ -74,12 +140,16 @@ interface Beat {
|
|
|
74
140
|
*/
|
|
75
141
|
interface Chord {
|
|
76
142
|
root: PitchClass;
|
|
143
|
+
bass: PitchClass;
|
|
77
144
|
quality: ChordQuality;
|
|
78
145
|
start: number;
|
|
79
146
|
end: number;
|
|
80
147
|
confidence: number;
|
|
81
148
|
name: string;
|
|
82
149
|
}
|
|
150
|
+
interface ChordAnalysisResult {
|
|
151
|
+
chords: Chord[];
|
|
152
|
+
}
|
|
83
153
|
/**
|
|
84
154
|
* Detected section
|
|
85
155
|
*/
|
|
@@ -91,6 +161,45 @@ interface Section {
|
|
|
91
161
|
confidence: number;
|
|
92
162
|
name: string;
|
|
93
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* A single melody contour point (mirrors the C `SonareMelodyPoint`).
|
|
166
|
+
*/
|
|
167
|
+
interface MelodyPoint {
|
|
168
|
+
/** Frame time in seconds. */
|
|
169
|
+
time: number;
|
|
170
|
+
/** Estimated fundamental frequency in Hz (0 when unvoiced). */
|
|
171
|
+
frequency: number;
|
|
172
|
+
/** Voicing confidence in `[0, 1]`. */
|
|
173
|
+
confidence: number;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Melody analysis result (mirrors the C `SonareMelodyResult`).
|
|
177
|
+
*/
|
|
178
|
+
interface MelodyResult {
|
|
179
|
+
points: MelodyPoint[];
|
|
180
|
+
pitchRangeOctaves: number;
|
|
181
|
+
pitchStability: number;
|
|
182
|
+
meanFrequency: number;
|
|
183
|
+
vibratoRate: number;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Constant-Q / Variable-Q transform magnitude result (mirrors the C
|
|
187
|
+
* `SonareCqtResult`).
|
|
188
|
+
*/
|
|
189
|
+
interface CqtResult {
|
|
190
|
+
/** Number of frequency bins. */
|
|
191
|
+
nBins: number;
|
|
192
|
+
/** Number of time frames. */
|
|
193
|
+
nFrames: number;
|
|
194
|
+
/** Hop length in samples. */
|
|
195
|
+
hopLength: number;
|
|
196
|
+
/** Sample rate in Hz. */
|
|
197
|
+
sampleRate: number;
|
|
198
|
+
/** Row-major `[nBins x nFrames]` magnitude matrix. */
|
|
199
|
+
magnitude: Float32Array;
|
|
200
|
+
/** Center frequency (Hz) of each of the `nBins` bins. */
|
|
201
|
+
frequencies: Float32Array;
|
|
202
|
+
}
|
|
94
203
|
/**
|
|
95
204
|
* Timbre characteristics
|
|
96
205
|
*/
|
|
@@ -143,6 +252,22 @@ interface AnalysisResult {
|
|
|
143
252
|
rhythm: RhythmFeatures;
|
|
144
253
|
form: string;
|
|
145
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Room acoustic parameters from an impulse response
|
|
257
|
+
*/
|
|
258
|
+
interface AcousticResult {
|
|
259
|
+
rt60: number;
|
|
260
|
+
edt: number;
|
|
261
|
+
c50: number;
|
|
262
|
+
c80: number;
|
|
263
|
+
d50: number;
|
|
264
|
+
rt60Bands: Float32Array;
|
|
265
|
+
edtBands: Float32Array;
|
|
266
|
+
c50Bands: Float32Array;
|
|
267
|
+
c80Bands: Float32Array;
|
|
268
|
+
confidence: number;
|
|
269
|
+
isBlind: boolean;
|
|
270
|
+
}
|
|
146
271
|
/**
|
|
147
272
|
* HPSS (Harmonic-Percussive Source Separation) result
|
|
148
273
|
*/
|
|
@@ -163,6 +288,68 @@ interface MasteringResult {
|
|
|
163
288
|
latencySamples?: number;
|
|
164
289
|
}
|
|
165
290
|
type MasteringProcessorParams = Record<string, number | boolean>;
|
|
291
|
+
type PanMode = 'balance' | 'stereoPan' | 'stereo-pan' | 'dualPan' | 'dual-pan' | number;
|
|
292
|
+
interface MixOptions {
|
|
293
|
+
inputTrimDb?: number | number[];
|
|
294
|
+
faderDb?: number | number[];
|
|
295
|
+
pan?: number | number[];
|
|
296
|
+
panMode?: PanMode | PanMode[];
|
|
297
|
+
width?: number | number[];
|
|
298
|
+
muted?: boolean | boolean[];
|
|
299
|
+
}
|
|
300
|
+
interface MixMeterSnapshot {
|
|
301
|
+
peakDbL: number;
|
|
302
|
+
peakDbR: number;
|
|
303
|
+
rmsDbL: number;
|
|
304
|
+
rmsDbR: number;
|
|
305
|
+
correlation: number;
|
|
306
|
+
monoCompatWidth: number;
|
|
307
|
+
monoCompatPeak: number;
|
|
308
|
+
monoCompatSideRms: number;
|
|
309
|
+
likelyMonoCompatible: boolean;
|
|
310
|
+
momentaryLufs: number;
|
|
311
|
+
shortTermLufs: number;
|
|
312
|
+
integratedLufs: number;
|
|
313
|
+
gainReductionDb: number;
|
|
314
|
+
truePeakDbL: number;
|
|
315
|
+
truePeakDbR: number;
|
|
316
|
+
maxTruePeakDb: number;
|
|
317
|
+
seq: number;
|
|
318
|
+
}
|
|
319
|
+
interface MixResult {
|
|
320
|
+
left: Float32Array;
|
|
321
|
+
right: Float32Array;
|
|
322
|
+
sampleRate: number;
|
|
323
|
+
meters: MixMeterSnapshot[];
|
|
324
|
+
}
|
|
325
|
+
/** Mixed stereo master returned by {@link Mixer.processStereo}. */
|
|
326
|
+
interface MixerProcessResult {
|
|
327
|
+
left: Float32Array;
|
|
328
|
+
right: Float32Array;
|
|
329
|
+
sampleRate: number;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Interpolation curve for scheduled automation events
|
|
333
|
+
* (see {@link Mixer.scheduleInsertAutomation}).
|
|
334
|
+
*/
|
|
335
|
+
type AutomationCurve = 'linear' | 'exponential' | 'hold' | 's-curve';
|
|
336
|
+
/**
|
|
337
|
+
* Pan law applied when computing left/right gains from a pan position
|
|
338
|
+
* (see {@link Mixer.setPanLaw}). Maps to the underlying integer code.
|
|
339
|
+
*/
|
|
340
|
+
type PanLaw = 'const3dB' | 'const4.5dB' | 'const6dB' | 'linear0dB';
|
|
341
|
+
/**
|
|
342
|
+
* Meter tap point for reading a strip's meter snapshot
|
|
343
|
+
* (see {@link Mixer.meterTap} and {@link Mixer.stripMeter}).
|
|
344
|
+
*/
|
|
345
|
+
type MeterTap = 'preFader' | 'postFader';
|
|
346
|
+
/** Pre/post-fader send timing (see {@link Mixer.addSend}). */
|
|
347
|
+
type SendTiming = 'preFader' | 'postFader';
|
|
348
|
+
/** A single goniometer (left/right) sample returned by {@link Mixer.readGoniometerLatest}. */
|
|
349
|
+
interface GoniometerPoint {
|
|
350
|
+
left: number;
|
|
351
|
+
right: number;
|
|
352
|
+
}
|
|
166
353
|
interface MasteringChainConfig {
|
|
167
354
|
repair?: {
|
|
168
355
|
denoise?: boolean;
|
|
@@ -213,6 +400,7 @@ interface MasteringChainConfig {
|
|
|
213
400
|
attackMs?: number;
|
|
214
401
|
releaseMs?: number;
|
|
215
402
|
rangeDb?: number;
|
|
403
|
+
bandpassQ?: number;
|
|
216
404
|
};
|
|
217
405
|
transientShaper?: {
|
|
218
406
|
attackGainDb?: number;
|
|
@@ -349,6 +537,22 @@ interface MfccResult {
|
|
|
349
537
|
nFrames: number;
|
|
350
538
|
coefficients: Float32Array;
|
|
351
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* STFT power spectrogram result (from inverse Mel reconstruction)
|
|
542
|
+
*/
|
|
543
|
+
interface StftPowerResult {
|
|
544
|
+
nBins: number;
|
|
545
|
+
nFrames: number;
|
|
546
|
+
power: Float32Array;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Mel power spectrogram result (from inverse MFCC reconstruction)
|
|
550
|
+
*/
|
|
551
|
+
interface MelPowerResult {
|
|
552
|
+
nMels: number;
|
|
553
|
+
nFrames: number;
|
|
554
|
+
power: Float32Array;
|
|
555
|
+
}
|
|
352
556
|
/**
|
|
353
557
|
* Chroma features result
|
|
354
558
|
*/
|
|
@@ -371,6 +575,96 @@ interface PitchResult {
|
|
|
371
575
|
medianF0: number;
|
|
372
576
|
meanF0: number;
|
|
373
577
|
}
|
|
578
|
+
/**
|
|
579
|
+
* Loudness measurement result (EBU R128 / ITU-R BS.1770)
|
|
580
|
+
*/
|
|
581
|
+
interface LufsResult {
|
|
582
|
+
integratedLufs: number;
|
|
583
|
+
momentaryLufs: number;
|
|
584
|
+
shortTermLufs: number;
|
|
585
|
+
loudnessRange: number;
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Realtime equalizer spectrum snapshot.
|
|
589
|
+
*
|
|
590
|
+
* Mirrors the C++ `EqualizerSpectrumSnapshot`: `preLeft`/`preRight` and
|
|
591
|
+
* `postLeft`/`postRight` are the pre- and post-EQ spectrum streams (trimmed to
|
|
592
|
+
* their valid count). `bandGainDb` holds per-band applied gain (24 entries),
|
|
593
|
+
* `profileDb` the smoothed magnitude profile (16 entries), `lastAutoGainDb`
|
|
594
|
+
* the latest auto-gain compensation, and `seq` increments each time a new
|
|
595
|
+
* snapshot is published.
|
|
596
|
+
*/
|
|
597
|
+
interface EqSpectrumSnapshot {
|
|
598
|
+
preLeft: Float32Array;
|
|
599
|
+
preRight: Float32Array;
|
|
600
|
+
postLeft: Float32Array;
|
|
601
|
+
postRight: Float32Array;
|
|
602
|
+
bandGainDb: Float32Array;
|
|
603
|
+
profileDb: Float32Array;
|
|
604
|
+
lastAutoGainDb: number;
|
|
605
|
+
seq: number;
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* Equalizer band type (string union mirroring `sonare::mastering::eq::EqBandType`).
|
|
609
|
+
*/
|
|
610
|
+
type EqBandType = 'Peak' | 'LowShelf' | 'HighShelf' | 'LowPass' | 'HighPass' | 'BandPass' | 'Notch' | 'TiltShelf' | 'FlatTilt';
|
|
611
|
+
/** Biquad coefficient design mode. */
|
|
612
|
+
type EqCoeffMode = 'Rbj' | 'Vicanek';
|
|
613
|
+
/** Stereo placement for an EQ band. */
|
|
614
|
+
type EqStereoPlacement = 'Stereo' | 'Left' | 'Right' | 'Mid' | 'Side';
|
|
615
|
+
/** Per-band phase behaviour. */
|
|
616
|
+
type EqBandPhase = 'Inherit' | 'ZeroLatency' | 'NaturalPhase' | 'LinearPhase';
|
|
617
|
+
/**
|
|
618
|
+
* Equalizer band configuration accepted by {@link StreamingEqualizer.setBand}.
|
|
619
|
+
*
|
|
620
|
+
* All fields are optional; omitted values fall back to the C++ band defaults
|
|
621
|
+
* (Peak, 1000 Hz, 0 dB gain, Butterworth Q, disabled).
|
|
622
|
+
*/
|
|
623
|
+
interface EqBand {
|
|
624
|
+
type?: EqBandType;
|
|
625
|
+
frequencyHz?: number;
|
|
626
|
+
gainDb?: number;
|
|
627
|
+
q?: number;
|
|
628
|
+
enabled?: boolean;
|
|
629
|
+
coeffMode?: EqCoeffMode;
|
|
630
|
+
slopeDbOct?: number;
|
|
631
|
+
placement?: EqStereoPlacement;
|
|
632
|
+
phase?: EqBandPhase;
|
|
633
|
+
soloed?: boolean;
|
|
634
|
+
bypassed?: boolean;
|
|
635
|
+
proportionalQ?: boolean;
|
|
636
|
+
proportionalQStrength?: number;
|
|
637
|
+
dynamic?: boolean;
|
|
638
|
+
thresholdDb?: number;
|
|
639
|
+
autoThreshold?: boolean;
|
|
640
|
+
ratio?: number;
|
|
641
|
+
rangeDb?: number;
|
|
642
|
+
attackMs?: number;
|
|
643
|
+
releaseMs?: number;
|
|
644
|
+
lookaheadMs?: number;
|
|
645
|
+
externalSidechain?: boolean;
|
|
646
|
+
sidechainFreqHz?: number;
|
|
647
|
+
sidechainQ?: number;
|
|
648
|
+
}
|
|
649
|
+
/** Construction options for {@link StreamingEqualizer}. */
|
|
650
|
+
interface StreamingEqualizerConfig {
|
|
651
|
+
sampleRate?: number;
|
|
652
|
+
maxBlockSize?: number;
|
|
653
|
+
}
|
|
654
|
+
/** Configuration for {@link StreamingRetune}. */
|
|
655
|
+
interface StreamingRetuneConfig {
|
|
656
|
+
/** Pitch shift in semitones, clamped by the native processor to +/-24. */
|
|
657
|
+
semitones?: number;
|
|
658
|
+
/** Wet/dry mix, clamped by the native processor to 0..1. */
|
|
659
|
+
mix?: number;
|
|
660
|
+
/** Grain size in samples. Use 0/omit to derive it from the sample rate. */
|
|
661
|
+
grainSize?: number;
|
|
662
|
+
}
|
|
663
|
+
/** Options for {@link StreamingEqualizer.match}. */
|
|
664
|
+
interface EqMatchOptions {
|
|
665
|
+
sampleRate?: number;
|
|
666
|
+
maxBands?: number;
|
|
667
|
+
}
|
|
374
668
|
|
|
375
669
|
/**
|
|
376
670
|
* A detected chord change in the progression
|
|
@@ -411,6 +705,7 @@ interface ProgressiveEstimate {
|
|
|
411
705
|
chordRoot: PitchClass;
|
|
412
706
|
chordQuality: ChordQuality;
|
|
413
707
|
chordConfidence: number;
|
|
708
|
+
chordStartTime: number;
|
|
414
709
|
chordProgression: ChordChange[];
|
|
415
710
|
barChordProgression: BarChord[];
|
|
416
711
|
currentBar: number;
|
|
@@ -449,6 +744,28 @@ interface FrameBuffer {
|
|
|
449
744
|
chordQuality: Int32Array;
|
|
450
745
|
chordConfidence: Float32Array;
|
|
451
746
|
}
|
|
747
|
+
interface StreamFramesU8 {
|
|
748
|
+
nFrames: number;
|
|
749
|
+
nMels: number;
|
|
750
|
+
timestamps: Float32Array;
|
|
751
|
+
mel: Uint8Array;
|
|
752
|
+
chroma: Uint8Array;
|
|
753
|
+
onsetStrength: Uint8Array;
|
|
754
|
+
rmsEnergy: Uint8Array;
|
|
755
|
+
spectralCentroid: Uint8Array;
|
|
756
|
+
spectralFlatness: Uint8Array;
|
|
757
|
+
}
|
|
758
|
+
interface StreamFramesI16 {
|
|
759
|
+
nFrames: number;
|
|
760
|
+
nMels: number;
|
|
761
|
+
timestamps: Float32Array;
|
|
762
|
+
mel: Int16Array;
|
|
763
|
+
chroma: Int16Array;
|
|
764
|
+
onsetStrength: Int16Array;
|
|
765
|
+
rmsEnergy: Int16Array;
|
|
766
|
+
spectralCentroid: Int16Array;
|
|
767
|
+
spectralFlatness: Int16Array;
|
|
768
|
+
}
|
|
452
769
|
/**
|
|
453
770
|
* Configuration for StreamAnalyzer
|
|
454
771
|
*/
|
|
@@ -457,10 +774,20 @@ interface StreamConfig {
|
|
|
457
774
|
nFft?: number;
|
|
458
775
|
hopLength?: number;
|
|
459
776
|
nMels?: number;
|
|
777
|
+
fmin?: number;
|
|
778
|
+
fmax?: number;
|
|
779
|
+
tuningRefHz?: number;
|
|
780
|
+
computeMagnitude?: boolean;
|
|
460
781
|
computeMel?: boolean;
|
|
461
782
|
computeChroma?: boolean;
|
|
462
783
|
computeOnset?: boolean;
|
|
784
|
+
computeSpectral?: boolean;
|
|
463
785
|
emitEveryNFrames?: number;
|
|
786
|
+
magnitudeDownsample?: number;
|
|
787
|
+
keyUpdateIntervalSec?: number;
|
|
788
|
+
bpmUpdateIntervalSec?: number;
|
|
789
|
+
window?: number;
|
|
790
|
+
outputFormat?: number;
|
|
464
791
|
}
|
|
465
792
|
|
|
466
793
|
type ProgressCallback = (progress: number, stage: string) => void;
|
|
@@ -478,6 +805,164 @@ interface WasmTempogramResult {
|
|
|
478
805
|
winLength: number;
|
|
479
806
|
data: Float32Array;
|
|
480
807
|
}
|
|
808
|
+
interface WasmCyclicTempogramResult {
|
|
809
|
+
nFrames: number;
|
|
810
|
+
nBins: number;
|
|
811
|
+
data: Float32Array;
|
|
812
|
+
}
|
|
813
|
+
interface WasmFourierTempogramResult {
|
|
814
|
+
nBins: number;
|
|
815
|
+
nFrames: number;
|
|
816
|
+
data: Float32Array;
|
|
817
|
+
}
|
|
818
|
+
interface WasmNnlsChromaResult {
|
|
819
|
+
nChroma: number;
|
|
820
|
+
nFrames: number;
|
|
821
|
+
data: Float32Array;
|
|
822
|
+
}
|
|
823
|
+
interface WasmEngineClip {
|
|
824
|
+
id?: number;
|
|
825
|
+
channels: Float32Array[];
|
|
826
|
+
startPpq: number;
|
|
827
|
+
lengthSamples?: number;
|
|
828
|
+
clipOffsetSamples?: number;
|
|
829
|
+
loop?: boolean;
|
|
830
|
+
gain?: number;
|
|
831
|
+
fadeInSamples?: number;
|
|
832
|
+
fadeOutSamples?: number;
|
|
833
|
+
}
|
|
834
|
+
interface WasmEngineParameterInfo {
|
|
835
|
+
id: number;
|
|
836
|
+
name: string;
|
|
837
|
+
unit: string;
|
|
838
|
+
minValue: number;
|
|
839
|
+
maxValue: number;
|
|
840
|
+
defaultValue: number;
|
|
841
|
+
rtSafe: boolean;
|
|
842
|
+
defaultCurve: number;
|
|
843
|
+
}
|
|
844
|
+
interface WasmEngineAutomationPoint {
|
|
845
|
+
ppq: number;
|
|
846
|
+
value: number;
|
|
847
|
+
curveToNext?: number;
|
|
848
|
+
}
|
|
849
|
+
interface WasmEngineMarker {
|
|
850
|
+
id: number;
|
|
851
|
+
ppq: number;
|
|
852
|
+
name?: string;
|
|
853
|
+
}
|
|
854
|
+
interface WasmEngineMetronomeConfig {
|
|
855
|
+
enabled: boolean;
|
|
856
|
+
beatGain?: number;
|
|
857
|
+
accentGain?: number;
|
|
858
|
+
clickSamples?: number;
|
|
859
|
+
}
|
|
860
|
+
interface WasmEngineGraphNode {
|
|
861
|
+
id: string;
|
|
862
|
+
type?: number;
|
|
863
|
+
gainDb?: number;
|
|
864
|
+
numPorts?: number;
|
|
865
|
+
}
|
|
866
|
+
interface WasmEngineGraphConnection {
|
|
867
|
+
sourceNode: string;
|
|
868
|
+
sourcePort: number;
|
|
869
|
+
destNode: string;
|
|
870
|
+
destPort: number;
|
|
871
|
+
mix?: number;
|
|
872
|
+
}
|
|
873
|
+
interface WasmEngineGraphParameterBinding {
|
|
874
|
+
paramId: number;
|
|
875
|
+
nodeId: string;
|
|
876
|
+
}
|
|
877
|
+
interface WasmEngineGraphSpec {
|
|
878
|
+
nodes: WasmEngineGraphNode[];
|
|
879
|
+
connections: WasmEngineGraphConnection[];
|
|
880
|
+
inputNode: string;
|
|
881
|
+
outputNode: string;
|
|
882
|
+
numChannels: number;
|
|
883
|
+
parameterBindings?: WasmEngineGraphParameterBinding[];
|
|
884
|
+
}
|
|
885
|
+
interface WasmEngineTelemetry {
|
|
886
|
+
type: number;
|
|
887
|
+
error: number;
|
|
888
|
+
renderFrame: number;
|
|
889
|
+
timelineSample: number;
|
|
890
|
+
audibleTimelineSample: number;
|
|
891
|
+
graphLatencySamplesQ8: number;
|
|
892
|
+
value: number;
|
|
893
|
+
}
|
|
894
|
+
interface WasmEngineMeterTelemetry {
|
|
895
|
+
targetId: number;
|
|
896
|
+
renderFrame: number;
|
|
897
|
+
seq: number;
|
|
898
|
+
peakDbL: number;
|
|
899
|
+
peakDbR: number;
|
|
900
|
+
rmsDbL: number;
|
|
901
|
+
rmsDbR: number;
|
|
902
|
+
truePeakDbL: number;
|
|
903
|
+
truePeakDbR: number;
|
|
904
|
+
maxTruePeakDb: number;
|
|
905
|
+
correlation: number;
|
|
906
|
+
monoCompatWidth: number;
|
|
907
|
+
momentaryLufs: number;
|
|
908
|
+
shortTermLufs: number;
|
|
909
|
+
integratedLufs: number;
|
|
910
|
+
gainReductionDb: number;
|
|
911
|
+
droppedRecords: number;
|
|
912
|
+
}
|
|
913
|
+
interface WasmEngineCaptureStatus {
|
|
914
|
+
capturedFrames: number;
|
|
915
|
+
overflowCount: number;
|
|
916
|
+
armed: boolean;
|
|
917
|
+
punchEnabled: boolean;
|
|
918
|
+
}
|
|
919
|
+
interface WasmEngineTransportState {
|
|
920
|
+
playing: boolean;
|
|
921
|
+
looping: boolean;
|
|
922
|
+
renderFrame: number;
|
|
923
|
+
samplePosition: number;
|
|
924
|
+
ppq: number;
|
|
925
|
+
bpm: number;
|
|
926
|
+
loopStartPpq: number;
|
|
927
|
+
loopEndPpq: number;
|
|
928
|
+
sampleRate: number;
|
|
929
|
+
}
|
|
930
|
+
interface WasmEngineBounceOptions {
|
|
931
|
+
totalFrames: number;
|
|
932
|
+
blockSize?: number;
|
|
933
|
+
numChannels?: number;
|
|
934
|
+
targetSampleRate?: number;
|
|
935
|
+
sourceSampleRate?: number;
|
|
936
|
+
normalizeLufs?: boolean;
|
|
937
|
+
targetLufs?: number;
|
|
938
|
+
dither?: 0 | 1 | 2 | 3;
|
|
939
|
+
ditherBits?: number;
|
|
940
|
+
ditherSeed?: number;
|
|
941
|
+
}
|
|
942
|
+
interface WasmEngineBounceResult {
|
|
943
|
+
interleaved: Float32Array;
|
|
944
|
+
frames: number;
|
|
945
|
+
numChannels: number;
|
|
946
|
+
sampleRate: number;
|
|
947
|
+
integratedLufs: number;
|
|
948
|
+
}
|
|
949
|
+
interface WasmEngineFreezeOptions {
|
|
950
|
+
totalFrames: number;
|
|
951
|
+
blockSize?: number;
|
|
952
|
+
numChannels?: number;
|
|
953
|
+
clipId?: number;
|
|
954
|
+
startPpq?: number;
|
|
955
|
+
gain?: number;
|
|
956
|
+
}
|
|
957
|
+
interface WasmEngineFreezeResult {
|
|
958
|
+
clipId: number;
|
|
959
|
+
frames: number;
|
|
960
|
+
numChannels: number;
|
|
961
|
+
}
|
|
962
|
+
interface WasmEngineProcessWithMonitorResult {
|
|
963
|
+
output: Float32Array[];
|
|
964
|
+
monitor: Float32Array[];
|
|
965
|
+
}
|
|
481
966
|
|
|
482
967
|
/**
|
|
483
968
|
* sonare - Audio Analysis Library
|
|
@@ -499,6 +984,37 @@ interface WasmTempogramResult {
|
|
|
499
984
|
* ```
|
|
500
985
|
*/
|
|
501
986
|
|
|
987
|
+
type EngineClip = WasmEngineClip;
|
|
988
|
+
type EngineParameterInfo = WasmEngineParameterInfo;
|
|
989
|
+
type EngineAutomationPoint = WasmEngineAutomationPoint;
|
|
990
|
+
type EngineMarker = WasmEngineMarker;
|
|
991
|
+
type EngineMetronomeConfig = WasmEngineMetronomeConfig;
|
|
992
|
+
type EngineGraphSpec = WasmEngineGraphSpec;
|
|
993
|
+
type EngineCaptureStatus = WasmEngineCaptureStatus;
|
|
994
|
+
type EngineBounceOptions = WasmEngineBounceOptions;
|
|
995
|
+
type EngineBounceResult = WasmEngineBounceResult;
|
|
996
|
+
type EngineFreezeOptions = WasmEngineFreezeOptions;
|
|
997
|
+
type EngineFreezeResult = WasmEngineFreezeResult;
|
|
998
|
+
type EngineTelemetry = WasmEngineTelemetry;
|
|
999
|
+
type EngineMeterTelemetry = WasmEngineMeterTelemetry;
|
|
1000
|
+
type EngineTransportState = WasmEngineTransportState;
|
|
1001
|
+
declare const EXPECTED_ENGINE_ABI_VERSION = 2;
|
|
1002
|
+
interface EngineCapabilities {
|
|
1003
|
+
engineAbiVersion: number;
|
|
1004
|
+
expectedEngineAbiVersion: number;
|
|
1005
|
+
abiCompatible: boolean;
|
|
1006
|
+
sharedArrayBuffer: boolean;
|
|
1007
|
+
atomics: boolean;
|
|
1008
|
+
audioWorklet: boolean;
|
|
1009
|
+
mode: 'sab' | 'postMessage';
|
|
1010
|
+
}
|
|
1011
|
+
interface MixerRealtimeBuffer {
|
|
1012
|
+
leftInputs: Float32Array[];
|
|
1013
|
+
rightInputs: Float32Array[];
|
|
1014
|
+
outLeft: Float32Array;
|
|
1015
|
+
outRight: Float32Array;
|
|
1016
|
+
process: (numSamples?: number) => void;
|
|
1017
|
+
}
|
|
502
1018
|
/**
|
|
503
1019
|
* Initialize the WASM module.
|
|
504
1020
|
* Must be called before using any analysis functions.
|
|
@@ -517,6 +1033,60 @@ declare function isInitialized(): boolean;
|
|
|
517
1033
|
* Get the library version.
|
|
518
1034
|
*/
|
|
519
1035
|
declare function version(): string;
|
|
1036
|
+
declare function engineAbiVersion(): number;
|
|
1037
|
+
declare function engineCapabilities(): EngineCapabilities;
|
|
1038
|
+
declare class RealtimeEngine {
|
|
1039
|
+
private native;
|
|
1040
|
+
constructor(sampleRate?: number, maxBlockSize?: number, commandCapacity?: number, telemetryCapacity?: number);
|
|
1041
|
+
prepare(sampleRate: number, maxBlockSize: number, commandCapacity?: number, telemetryCapacity?: number): void;
|
|
1042
|
+
/** Queue a sample-accurate parameter change (engine kSetParam). */
|
|
1043
|
+
setParameter(paramId: number, value: number, renderFrame?: number): void;
|
|
1044
|
+
/** Queue a smoothed parameter change (engine kSetParamSmoothed). */
|
|
1045
|
+
setParameterSmoothed(paramId: number, value: number, renderFrame?: number): void;
|
|
1046
|
+
/** Read back the current transport state snapshot. */
|
|
1047
|
+
getTransportState(): EngineTransportState;
|
|
1048
|
+
play(renderFrame?: number): void;
|
|
1049
|
+
stop(renderFrame?: number): void;
|
|
1050
|
+
seekSample(timelineSample: number, renderFrame?: number): void;
|
|
1051
|
+
seekPpq(ppq: number, renderFrame?: number): void;
|
|
1052
|
+
setTempo(bpm: number): void;
|
|
1053
|
+
setTimeSignature(numerator: number, denominator: number): void;
|
|
1054
|
+
setLoop(startPpq: number, endPpq: number, enabled?: boolean): void;
|
|
1055
|
+
addParameter(info: EngineParameterInfo): void;
|
|
1056
|
+
parameterCount(): number;
|
|
1057
|
+
parameterInfoByIndex(index: number): EngineParameterInfo;
|
|
1058
|
+
parameterInfo(id: number): EngineParameterInfo;
|
|
1059
|
+
setAutomationLane(paramId: number, points: EngineAutomationPoint[]): void;
|
|
1060
|
+
automationLaneCount(): number;
|
|
1061
|
+
setMarkers(markers: EngineMarker[]): void;
|
|
1062
|
+
markerCount(): number;
|
|
1063
|
+
markerByIndex(index: number): EngineMarker;
|
|
1064
|
+
marker(id: number): EngineMarker;
|
|
1065
|
+
seekMarker(markerId: number, renderFrame?: number): void;
|
|
1066
|
+
setLoopFromMarkers(startMarkerId: number, endMarkerId: number): void;
|
|
1067
|
+
setMetronome(config: EngineMetronomeConfig): void;
|
|
1068
|
+
metronome(): Required<EngineMetronomeConfig>;
|
|
1069
|
+
countInEndSample(startSample: number, bars: number): number;
|
|
1070
|
+
setGraph(spec: EngineGraphSpec): void;
|
|
1071
|
+
graphNodeCount(): number;
|
|
1072
|
+
graphConnectionCount(): number;
|
|
1073
|
+
setClips(clips: EngineClip[]): void;
|
|
1074
|
+
clipCount(): number;
|
|
1075
|
+
setCaptureBuffer(numChannels: number, capacityFrames: number): void;
|
|
1076
|
+
armCapture(armed?: boolean): void;
|
|
1077
|
+
setCapturePunch(startSample: number, endSample: number, enabled?: boolean): void;
|
|
1078
|
+
resetCapture(): void;
|
|
1079
|
+
captureStatus(): EngineCaptureStatus;
|
|
1080
|
+
capturedAudio(): Float32Array[];
|
|
1081
|
+
process(channels: Float32Array[]): Float32Array[];
|
|
1082
|
+
processWithMonitor(channels: Float32Array[]): WasmEngineProcessWithMonitorResult;
|
|
1083
|
+
renderOffline(channels: Float32Array[], blockSize?: number): Float32Array[];
|
|
1084
|
+
bounceOffline(options: EngineBounceOptions): EngineBounceResult;
|
|
1085
|
+
freezeOffline(options: EngineFreezeOptions): EngineFreezeResult;
|
|
1086
|
+
drainTelemetry(maxRecords?: number): EngineTelemetry[];
|
|
1087
|
+
drainMeterTelemetry(maxRecords?: number): EngineMeterTelemetry[];
|
|
1088
|
+
destroy(): void;
|
|
1089
|
+
}
|
|
520
1090
|
/**
|
|
521
1091
|
* Detect BPM from audio samples.
|
|
522
1092
|
*
|
|
@@ -532,7 +1102,8 @@ declare function detectBpm(samples: Float32Array, sampleRate: number): number;
|
|
|
532
1102
|
* @param sampleRate - Sample rate in Hz
|
|
533
1103
|
* @returns Detected key
|
|
534
1104
|
*/
|
|
535
|
-
declare function detectKey(samples: Float32Array, sampleRate: number): Key;
|
|
1105
|
+
declare function detectKey(samples: Float32Array, sampleRate: number, options?: KeyDetectionOptions): Key;
|
|
1106
|
+
declare function detectKeyCandidates(samples: Float32Array, sampleRate: number, options?: KeyDetectionOptions): KeyCandidate[];
|
|
536
1107
|
/**
|
|
537
1108
|
* Detect onset times from audio samples.
|
|
538
1109
|
*
|
|
@@ -549,6 +1120,23 @@ declare function detectOnsets(samples: Float32Array, sampleRate: number): Float3
|
|
|
549
1120
|
* @returns Array of beat times in seconds
|
|
550
1121
|
*/
|
|
551
1122
|
declare function detectBeats(samples: Float32Array, sampleRate: number): Float32Array;
|
|
1123
|
+
/**
|
|
1124
|
+
* Detect downbeat times from audio samples.
|
|
1125
|
+
*
|
|
1126
|
+
* @param samples - Audio samples (mono, float32)
|
|
1127
|
+
* @param sampleRate - Sample rate in Hz
|
|
1128
|
+
* @returns Array of downbeat times in seconds
|
|
1129
|
+
*/
|
|
1130
|
+
declare function detectDownbeats(samples: Float32Array, sampleRate: number): Float32Array;
|
|
1131
|
+
/**
|
|
1132
|
+
* Detect chords from audio samples.
|
|
1133
|
+
*
|
|
1134
|
+
* @param samples - Audio samples (mono, float32)
|
|
1135
|
+
* @param sampleRate - Sample rate in Hz
|
|
1136
|
+
* @param options - Optional chord detection settings
|
|
1137
|
+
* @returns Detected chord segments
|
|
1138
|
+
*/
|
|
1139
|
+
declare function detectChords(samples: Float32Array, sampleRate: number, options?: ChordDetectionOptions): ChordAnalysisResult;
|
|
552
1140
|
/**
|
|
553
1141
|
* Perform complete music analysis.
|
|
554
1142
|
*
|
|
@@ -557,6 +1145,8 @@ declare function detectBeats(samples: Float32Array, sampleRate: number): Float32
|
|
|
557
1145
|
* @returns Complete analysis result
|
|
558
1146
|
*/
|
|
559
1147
|
declare function analyze(samples: Float32Array, sampleRate: number): AnalysisResult;
|
|
1148
|
+
declare function analyzeImpulseResponse(samples: Float32Array, sampleRate: number, nOctaveBands?: number): AcousticResult;
|
|
1149
|
+
declare function detectAcoustic(samples: Float32Array, sampleRate: number, nOctaveBands?: number, nThirdOctaveSubbands?: number, minDecayDb?: number, noiseFloorMarginDb?: number): AcousticResult;
|
|
560
1150
|
/**
|
|
561
1151
|
* Perform complete music analysis with progress reporting.
|
|
562
1152
|
*
|
|
@@ -610,6 +1200,37 @@ declare function timeStretch(samples: Float32Array, sampleRate: number, rate: nu
|
|
|
610
1200
|
* @returns Pitch-shifted audio
|
|
611
1201
|
*/
|
|
612
1202
|
declare function pitchShift(samples: Float32Array, sampleRate: number, semitones: number): Float32Array;
|
|
1203
|
+
/**
|
|
1204
|
+
* Pitch-correct audio from a current MIDI note to a target MIDI note.
|
|
1205
|
+
*
|
|
1206
|
+
* @param samples - Audio samples (mono, float32)
|
|
1207
|
+
* @param sampleRate - Sample rate in Hz
|
|
1208
|
+
* @param currentMidi - Detected/current MIDI note number
|
|
1209
|
+
* @param targetMidi - Desired MIDI note number
|
|
1210
|
+
* @returns Pitch-corrected audio
|
|
1211
|
+
*/
|
|
1212
|
+
declare function pitchCorrectToMidi(samples: Float32Array, sampleRate: number, currentMidi: number, targetMidi: number): Float32Array;
|
|
1213
|
+
/**
|
|
1214
|
+
* Time-stretch a note region between two sample offsets without changing pitch.
|
|
1215
|
+
*
|
|
1216
|
+
* @param samples - Audio samples (mono, float32)
|
|
1217
|
+
* @param sampleRate - Sample rate in Hz
|
|
1218
|
+
* @param onsetSample - Note onset position in samples
|
|
1219
|
+
* @param offsetSample - Note offset position in samples
|
|
1220
|
+
* @param stretchRatio - Stretch ratio (0.5 = double duration, 2.0 = half duration)
|
|
1221
|
+
* @returns Audio with the note region stretched
|
|
1222
|
+
*/
|
|
1223
|
+
declare function noteStretch(samples: Float32Array, sampleRate: number, onsetSample: number, offsetSample: number, stretchRatio: number): Float32Array;
|
|
1224
|
+
/**
|
|
1225
|
+
* Apply a voice change by shifting pitch and formants independently.
|
|
1226
|
+
*
|
|
1227
|
+
* @param samples - Audio samples (mono, float32)
|
|
1228
|
+
* @param sampleRate - Sample rate in Hz
|
|
1229
|
+
* @param pitchSemitones - Pitch shift in semitones
|
|
1230
|
+
* @param formantFactor - Formant scaling factor (1.0 = unchanged)
|
|
1231
|
+
* @returns Voice-changed audio
|
|
1232
|
+
*/
|
|
1233
|
+
declare function voiceChange(samples: Float32Array, sampleRate: number, pitchSemitones: number, formantFactor: number): Float32Array;
|
|
613
1234
|
/**
|
|
614
1235
|
* Normalize audio to target peak level.
|
|
615
1236
|
*
|
|
@@ -630,15 +1251,18 @@ declare function normalize(samples: Float32Array, sampleRate: number, targetDb?:
|
|
|
630
1251
|
* @returns Processed audio and loudness metadata
|
|
631
1252
|
*/
|
|
632
1253
|
declare function mastering(samples: Float32Array, sampleRate: number, targetLufs?: number, ceilingDb?: number, truePeakOversample?: number): MasteringResult;
|
|
633
|
-
declare function masteringProcessorNames():
|
|
634
|
-
declare function masteringPairProcessorNames():
|
|
635
|
-
declare function masteringPairAnalysisNames():
|
|
636
|
-
declare function masteringStereoAnalysisNames():
|
|
637
|
-
declare function masteringProcess(processorName:
|
|
638
|
-
declare function masteringProcessStereo(processorName:
|
|
639
|
-
declare function masteringPairProcess(processorName:
|
|
640
|
-
declare function masteringPairAnalyze(analysisName:
|
|
641
|
-
declare function masteringStereoAnalyze(analysisName:
|
|
1254
|
+
declare function masteringProcessorNames(): SoloProcessor[];
|
|
1255
|
+
declare function masteringPairProcessorNames(): PairProcessor[];
|
|
1256
|
+
declare function masteringPairAnalysisNames(): PairAnalysis[];
|
|
1257
|
+
declare function masteringStereoAnalysisNames(): StereoAnalysis[];
|
|
1258
|
+
declare function masteringProcess(processorName: SoloProcessor, samples: Float32Array, sampleRate: number, params?: MasteringProcessorParams): MasteringResult;
|
|
1259
|
+
declare function masteringProcessStereo(processorName: SoloProcessor, left: Float32Array, right: Float32Array, sampleRate: number, params?: MasteringProcessorParams): MasteringStereoResult;
|
|
1260
|
+
declare function masteringPairProcess(processorName: PairProcessor, source: Float32Array, reference: Float32Array, sampleRate: number, params?: MasteringProcessorParams): MasteringResult;
|
|
1261
|
+
declare function masteringPairAnalyze(analysisName: PairAnalysis, source: Float32Array, reference: Float32Array, sampleRate: number, params?: MasteringProcessorParams): string;
|
|
1262
|
+
declare function masteringStereoAnalyze(analysisName: StereoAnalysis, left: Float32Array, right: Float32Array, sampleRate: number, params?: MasteringProcessorParams): string;
|
|
1263
|
+
declare function masteringAssistantSuggest(samples: Float32Array, sampleRate: number, params?: MasteringProcessorParams): string;
|
|
1264
|
+
declare function masteringAudioProfile(samples: Float32Array, sampleRate: number, params?: MasteringProcessorParams): string;
|
|
1265
|
+
declare function masteringStreamingPreview(samples: Float32Array, sampleRate: number, platforms?: StreamingPlatform[]): string;
|
|
642
1266
|
/**
|
|
643
1267
|
* Apply a configurable mastering chain in WASM.
|
|
644
1268
|
*
|
|
@@ -684,7 +1308,7 @@ declare function masteringChainStereoWithProgress(left: Float32Array, right: Flo
|
|
|
684
1308
|
*
|
|
685
1309
|
* @returns Preset names in display order (e.g. "pop", "edm", "aiMusic")
|
|
686
1310
|
*/
|
|
687
|
-
declare function masteringPresetNames():
|
|
1311
|
+
declare function masteringPresetNames(): MasteringPreset[];
|
|
688
1312
|
/**
|
|
689
1313
|
* Apply a named mastering preset chain to mono audio.
|
|
690
1314
|
*
|
|
@@ -694,7 +1318,7 @@ declare function masteringPresetNames(): string[];
|
|
|
694
1318
|
* @param overrides - Optional flat overrides (dot-notation, e.g. `'loudness.targetLufs'`) applied on top of the preset. Pass `null` for preset defaults.
|
|
695
1319
|
* @returns Processed audio, loudness metadata, and applied stage names
|
|
696
1320
|
*/
|
|
697
|
-
declare function masterAudio(samples: Float32Array, sampleRate: number, presetName:
|
|
1321
|
+
declare function masterAudio(samples: Float32Array, sampleRate: number, presetName: MasteringPreset, overrides?: Record<string, number | boolean> | null): MasteringChainResult;
|
|
698
1322
|
/**
|
|
699
1323
|
* Apply a named mastering preset chain to stereo audio.
|
|
700
1324
|
*
|
|
@@ -705,7 +1329,18 @@ declare function masterAudio(samples: Float32Array, sampleRate: number, presetNa
|
|
|
705
1329
|
* @param overrides - Optional flat overrides (dot-notation, e.g. `'loudness.targetLufs'`) applied on top of the preset. Pass `null` for preset defaults.
|
|
706
1330
|
* @returns Processed stereo audio, loudness metadata, and applied stage names
|
|
707
1331
|
*/
|
|
708
|
-
declare function masterAudioStereo(left: Float32Array, right: Float32Array, sampleRate: number, presetName:
|
|
1332
|
+
declare function masterAudioStereo(left: Float32Array, right: Float32Array, sampleRate: number, presetName: MasteringPreset, overrides?: Record<string, number | boolean> | null): MasteringStereoChainResult;
|
|
1333
|
+
declare function mixingScenePresetNames(): string[];
|
|
1334
|
+
/**
|
|
1335
|
+
* Get a built-in mixing scene preset serialized as JSON. This is the canonical
|
|
1336
|
+
* name shared with the Node and Python bindings; the returned JSON loads
|
|
1337
|
+
* directly into a {@link Mixer} via {@link Mixer.fromSceneJson}.
|
|
1338
|
+
*
|
|
1339
|
+
* @param preset - Preset name (see {@link mixingScenePresetNames})
|
|
1340
|
+
* @returns Scene JSON string
|
|
1341
|
+
*/
|
|
1342
|
+
declare function mixingScenePresetJson(preset: string): string;
|
|
1343
|
+
declare function mixStereo(leftChannels: Float32Array[], rightChannels: Float32Array[], sampleRate?: number, options?: MixOptions): MixResult;
|
|
709
1344
|
/**
|
|
710
1345
|
* Block-by-block streaming variant of {@link masteringChain}.
|
|
711
1346
|
*
|
|
@@ -758,6 +1393,336 @@ declare class StreamingMasteringChain {
|
|
|
758
1393
|
/** Release the underlying WASM object. Safe to call only once. */
|
|
759
1394
|
delete(): void;
|
|
760
1395
|
}
|
|
1396
|
+
/**
|
|
1397
|
+
* Block-by-block streaming equalizer wrapping the unified C++
|
|
1398
|
+
* `EqualizerProcessor` (up to 24 bands, RBJ/Vicanek biquads, dynamic EQ,
|
|
1399
|
+
* linear-phase FIR, mid/side processing, and auto-gain).
|
|
1400
|
+
*
|
|
1401
|
+
* State is maintained across {@link processMono}/{@link processStereo} calls.
|
|
1402
|
+
* Call {@link delete} (or use `try/finally`) to release the underlying WASM
|
|
1403
|
+
* object — the embind handle is not garbage-collected automatically.
|
|
1404
|
+
*
|
|
1405
|
+
* @example
|
|
1406
|
+
* ```typescript
|
|
1407
|
+
* const eq = new StreamingEqualizer({ sampleRate: 48000, maxBlockSize: 512 });
|
|
1408
|
+
* try {
|
|
1409
|
+
* eq.setBand(0, { type: 'HighShelf', frequencyHz: 8000, gainDb: 6, enabled: true });
|
|
1410
|
+
* const out = eq.processStereo(left, right);
|
|
1411
|
+
* const snapshot = eq.spectrum();
|
|
1412
|
+
* } finally {
|
|
1413
|
+
* eq.delete();
|
|
1414
|
+
* }
|
|
1415
|
+
* ```
|
|
1416
|
+
*/
|
|
1417
|
+
declare class StreamingEqualizer {
|
|
1418
|
+
private eq;
|
|
1419
|
+
constructor(config?: StreamingEqualizerConfig);
|
|
1420
|
+
/**
|
|
1421
|
+
* Configure the band at `index` (0..23). Omitted fields use C++ defaults.
|
|
1422
|
+
*/
|
|
1423
|
+
setBand(index: number, band: EqBand): void;
|
|
1424
|
+
/** Disable and reset every band. */
|
|
1425
|
+
clear(): void;
|
|
1426
|
+
/**
|
|
1427
|
+
* Set the global phase mode: 1=ZeroLatency, 2=NaturalPhase, 3=LinearPhase.
|
|
1428
|
+
*/
|
|
1429
|
+
setPhaseMode(mode: number): void;
|
|
1430
|
+
/** Enable or disable output auto-gain compensation. */
|
|
1431
|
+
setAutoGain(enabled: boolean): void;
|
|
1432
|
+
/** Set all-band EQ gain scale as a 0.0..2.0 multiplier. */
|
|
1433
|
+
setGainScale(scale: number): void;
|
|
1434
|
+
/** Set post-EQ output gain in dB. */
|
|
1435
|
+
setOutputGainDb(gainDb: number): void;
|
|
1436
|
+
/** Set post-EQ stereo balance in -1.0..1.0; mono input ignores pan. */
|
|
1437
|
+
setOutputPan(pan: number): void;
|
|
1438
|
+
/**
|
|
1439
|
+
* Provide a mono external sidechain key for dynamic bands that opt into
|
|
1440
|
+
* `external_sidechain`. The samples are copied into an owned buffer.
|
|
1441
|
+
*/
|
|
1442
|
+
setSidechainMono(samples: Float32Array): void;
|
|
1443
|
+
/**
|
|
1444
|
+
* Provide a stereo external sidechain key. Both channels must match length.
|
|
1445
|
+
*/
|
|
1446
|
+
setSidechainStereo(left: Float32Array, right: Float32Array): void;
|
|
1447
|
+
/** Release any borrowed external sidechain buffers. */
|
|
1448
|
+
clearSidechain(): void;
|
|
1449
|
+
/** Auto-gain applied on the most recent block, in dB. */
|
|
1450
|
+
lastAutoGainDb(): number;
|
|
1451
|
+
/** Reported processing latency in samples (non-zero for linear-phase bands). */
|
|
1452
|
+
latencySamples(): number;
|
|
1453
|
+
/**
|
|
1454
|
+
* Process one mono block, returning the equalized samples (same length).
|
|
1455
|
+
*/
|
|
1456
|
+
processMono(samples: Float32Array): Float32Array;
|
|
1457
|
+
/**
|
|
1458
|
+
* Process one stereo block, returning the equalized channels.
|
|
1459
|
+
*/
|
|
1460
|
+
processStereo(left: Float32Array, right: Float32Array): {
|
|
1461
|
+
left: Float32Array;
|
|
1462
|
+
right: Float32Array;
|
|
1463
|
+
};
|
|
1464
|
+
/**
|
|
1465
|
+
* Read the latest pre/post spectrum snapshot for metering. `seq` increments
|
|
1466
|
+
* each time a new snapshot is published.
|
|
1467
|
+
*/
|
|
1468
|
+
spectrum(): EqSpectrumSnapshot;
|
|
1469
|
+
/**
|
|
1470
|
+
* Configure bands so the source spectrum matches the reference spectrum.
|
|
1471
|
+
*
|
|
1472
|
+
* @param source - Source audio (mono samples)
|
|
1473
|
+
* @param reference - Reference audio (mono samples)
|
|
1474
|
+
* @param options - `sampleRate` (default 48000) and `maxBands` (default 8)
|
|
1475
|
+
*/
|
|
1476
|
+
match(source: Float32Array, reference: Float32Array, options?: EqMatchOptions): void;
|
|
1477
|
+
/** Release the underlying WASM object. Safe to call only once. */
|
|
1478
|
+
delete(): void;
|
|
1479
|
+
}
|
|
1480
|
+
/**
|
|
1481
|
+
* Block-by-block mono voice retune / pitch shifter.
|
|
1482
|
+
*
|
|
1483
|
+
* State is maintained across {@link processMono} calls. Call {@link prepare}
|
|
1484
|
+
* before processing, and call {@link delete} (or use `try/finally`) to release
|
|
1485
|
+
* the underlying WASM object.
|
|
1486
|
+
*/
|
|
1487
|
+
declare class StreamingRetune {
|
|
1488
|
+
private retune;
|
|
1489
|
+
constructor(config?: StreamingRetuneConfig);
|
|
1490
|
+
/**
|
|
1491
|
+
* Allocate and initialize native state for the given sample rate and maximum
|
|
1492
|
+
* process block size.
|
|
1493
|
+
*/
|
|
1494
|
+
prepare(sampleRate: number, maxBlockSize: number): void;
|
|
1495
|
+
/** Reset delay, grain, and overlap-add state without changing config. */
|
|
1496
|
+
reset(): void;
|
|
1497
|
+
/**
|
|
1498
|
+
* Update retune settings. Changing `grainSize` takes effect after the next
|
|
1499
|
+
* {@link prepare} call.
|
|
1500
|
+
*/
|
|
1501
|
+
setConfig(config: StreamingRetuneConfig): void;
|
|
1502
|
+
/** Current native config. */
|
|
1503
|
+
config(): Required<StreamingRetuneConfig>;
|
|
1504
|
+
/** Resolved grain size in samples after {@link prepare}. */
|
|
1505
|
+
grainSize(): number;
|
|
1506
|
+
/** Process one mono block, returning the shifted samples (same length). */
|
|
1507
|
+
processMono(samples: Float32Array): Float32Array;
|
|
1508
|
+
/** Release the underlying WASM object. Safe to call only once. */
|
|
1509
|
+
delete(): void;
|
|
1510
|
+
}
|
|
1511
|
+
/**
|
|
1512
|
+
* Get a built-in mixing scene preset serialized as JSON, normalized through the
|
|
1513
|
+
* C mixer API (the same path {@link Mixer.fromSceneJson} uses to load it).
|
|
1514
|
+
*
|
|
1515
|
+
* @deprecated Use {@link mixingScenePresetJson}, the canonical name shared with
|
|
1516
|
+
* the Node and Python bindings. This alias is retained for backwards
|
|
1517
|
+
* compatibility and may be removed in a future release. Both functions return a
|
|
1518
|
+
* scene JSON string that loads cleanly into a {@link Mixer}.
|
|
1519
|
+
*
|
|
1520
|
+
* @param preset - Preset name (see {@link mixingScenePresetNames})
|
|
1521
|
+
* @returns Scene JSON string
|
|
1522
|
+
*/
|
|
1523
|
+
declare function mixerScenePresetJson(preset: string): string;
|
|
1524
|
+
/**
|
|
1525
|
+
* Persistent, scene-based stereo mixer.
|
|
1526
|
+
*
|
|
1527
|
+
* Build one from a scene JSON string (e.g. {@link mixerScenePresetJson} or a
|
|
1528
|
+
* hand-authored scene), then feed per-strip stereo blocks through
|
|
1529
|
+
* {@link processStereo} to get the routed stereo master. Strips, sends, buses,
|
|
1530
|
+
* and inserts are described entirely by the scene; the routing graph is
|
|
1531
|
+
* compiled lazily on the first {@link processStereo} call (or eagerly via
|
|
1532
|
+
* {@link compile}).
|
|
1533
|
+
*
|
|
1534
|
+
* Call {@link delete} (or use a `try/finally`) to release the underlying WASM
|
|
1535
|
+
* object — the embind handle is not garbage-collected automatically.
|
|
1536
|
+
*
|
|
1537
|
+
* @example
|
|
1538
|
+
* ```typescript
|
|
1539
|
+
* const mixer = Mixer.fromSceneJson(mixerScenePresetJson('basicStereo'), 48000, 512);
|
|
1540
|
+
* try {
|
|
1541
|
+
* const out = mixer.processStereo([stripL], [stripR]);
|
|
1542
|
+
* } finally {
|
|
1543
|
+
* mixer.delete();
|
|
1544
|
+
* }
|
|
1545
|
+
* ```
|
|
1546
|
+
*/
|
|
1547
|
+
declare class Mixer {
|
|
1548
|
+
private mixer;
|
|
1549
|
+
private constructor();
|
|
1550
|
+
/**
|
|
1551
|
+
* Build a mixer from a scene JSON string.
|
|
1552
|
+
*
|
|
1553
|
+
* @param json - Scene JSON (strips, buses, sends, connections, inserts)
|
|
1554
|
+
* @param sampleRate - Sample rate in Hz (default: 48000)
|
|
1555
|
+
* @param blockSize - Maximum block size per {@link processStereo} call (default: 512)
|
|
1556
|
+
*/
|
|
1557
|
+
static fromSceneJson(json: string, sampleRate?: number, blockSize?: number): Mixer;
|
|
1558
|
+
/** Rebuild and compile the routing graph from the current scene topology. */
|
|
1559
|
+
compile(): void;
|
|
1560
|
+
/**
|
|
1561
|
+
* Mix one block of per-strip stereo audio into the stereo master.
|
|
1562
|
+
*
|
|
1563
|
+
* @param leftChannels - `leftChannels[i]` is the left channel of strip `i`
|
|
1564
|
+
* @param rightChannels - `rightChannels[i]` is the right channel of strip `i`
|
|
1565
|
+
* @returns Mixed stereo master (`left`, `right`, `sampleRate`)
|
|
1566
|
+
*/
|
|
1567
|
+
processStereo(leftChannels: Float32Array[], rightChannels: Float32Array[]): MixerProcessResult;
|
|
1568
|
+
/**
|
|
1569
|
+
* Mix one block into caller-owned output arrays.
|
|
1570
|
+
*
|
|
1571
|
+
* This avoids allocating the result object and result `Float32Array`s. It is
|
|
1572
|
+
* intended for realtime bridges such as AudioWorklet; the input channel count
|
|
1573
|
+
* must match the scene strip count and all arrays must have the same length.
|
|
1574
|
+
*/
|
|
1575
|
+
processStereoInto(leftChannels: Float32Array[], rightChannels: Float32Array[], outLeft: Float32Array, outRight: Float32Array): void;
|
|
1576
|
+
/**
|
|
1577
|
+
* Create reusable WASM-heap input/output views for realtime-style processing.
|
|
1578
|
+
*
|
|
1579
|
+
* Fill `leftInputs[i]` / `rightInputs[i]`, call `process()`, then read
|
|
1580
|
+
* `outLeft` / `outRight`. The views are owned by this mixer and become invalid
|
|
1581
|
+
* after {@link delete}.
|
|
1582
|
+
*/
|
|
1583
|
+
createRealtimeBuffer(): MixerRealtimeBuffer;
|
|
1584
|
+
/** Number of strips in the mixer (e.g. strips loaded from the scene). */
|
|
1585
|
+
stripCount(): number;
|
|
1586
|
+
/**
|
|
1587
|
+
* Schedule sample-accurate insert-parameter automation on a strip's insert.
|
|
1588
|
+
*
|
|
1589
|
+
* @param stripIndex - Strip index in `[0, stripCount())`
|
|
1590
|
+
* @param insertIndex - Index into the strip's combined insert sequence
|
|
1591
|
+
* (`[pre-inserts... post-inserts...]`)
|
|
1592
|
+
* @param paramId - Processor-specific parameter id
|
|
1593
|
+
* @param samplePos - Absolute samples from the start of processing (the mixer
|
|
1594
|
+
* advances an internal position from 0 on the first {@link processStereo}
|
|
1595
|
+
* call; recompiling resets it to 0)
|
|
1596
|
+
* @param value - Target parameter value
|
|
1597
|
+
* @param curve - Interpolation curve (default: `'linear'`)
|
|
1598
|
+
* @throws If the strip index is out of range or the schedule call fails
|
|
1599
|
+
* (unknown curve, out-of-range insert index, or full event lane)
|
|
1600
|
+
*/
|
|
1601
|
+
scheduleInsertAutomation(stripIndex: number, insertIndex: number, paramId: number, samplePos: number, value: number, curve?: AutomationCurve): void;
|
|
1602
|
+
/**
|
|
1603
|
+
* Resolve a strip's index in `[0, stripCount())` from its scene id, or `null`
|
|
1604
|
+
* when no strip with that id exists (matches the Node binding's `number | null`).
|
|
1605
|
+
*/
|
|
1606
|
+
stripById(id: string): number | null;
|
|
1607
|
+
/**
|
|
1608
|
+
* Add a bus to the mixer topology. `role` is one of `'master'`, `'aux'`, or
|
|
1609
|
+
* `'submix'` (defaults to `'aux'`). Marks the routing graph dirty; call
|
|
1610
|
+
* {@link compile} (or {@link processStereo}) to rebuild.
|
|
1611
|
+
*/
|
|
1612
|
+
addBus(id: string, role?: string): void;
|
|
1613
|
+
/** Remove a bus by id. Marks the routing graph dirty. */
|
|
1614
|
+
removeBus(id: string): void;
|
|
1615
|
+
/** Number of buses in the mixer topology. */
|
|
1616
|
+
busCount(): number;
|
|
1617
|
+
/**
|
|
1618
|
+
* Add a VCA group with the given gain offset (dB). `members` is a list of
|
|
1619
|
+
* strip ids governed by the group (may be empty).
|
|
1620
|
+
*/
|
|
1621
|
+
addVcaGroup(id: string, gainDb?: number, members?: string[]): void;
|
|
1622
|
+
/** Remove a VCA group by id. */
|
|
1623
|
+
removeVcaGroup(id: string): void;
|
|
1624
|
+
/** Number of VCA groups in the mixer topology. */
|
|
1625
|
+
vcaGroupCount(): number;
|
|
1626
|
+
/**
|
|
1627
|
+
* Set a strip's solo state. Takes effect on the next process without a
|
|
1628
|
+
* graph recompile.
|
|
1629
|
+
*/
|
|
1630
|
+
setSoloed(stripIndex: number, soloed: boolean): void;
|
|
1631
|
+
/**
|
|
1632
|
+
* Mark a strip solo-safe so it is never implied-muted by another strip's
|
|
1633
|
+
* solo. Takes effect on the next process without a graph recompile.
|
|
1634
|
+
*/
|
|
1635
|
+
setSoloSafe(stripIndex: number, soloSafe: boolean): void;
|
|
1636
|
+
/** Invert the polarity of the left and/or right channel of a strip. */
|
|
1637
|
+
setPolarityInvert(stripIndex: number, invertLeft: boolean, invertRight: boolean): void;
|
|
1638
|
+
/** Set the strip's pan law. */
|
|
1639
|
+
setPanLaw(stripIndex: number, panLaw: PanLaw | number): void;
|
|
1640
|
+
/**
|
|
1641
|
+
* Set a per-strip channel delay in samples. This changes the strip's reported
|
|
1642
|
+
* latency; recompile to re-run latency compensation.
|
|
1643
|
+
*/
|
|
1644
|
+
setChannelDelaySamples(stripIndex: number, delaySamples: number): void;
|
|
1645
|
+
/** Set the strip's live VCA gain offset in dB (not persisted to the scene). */
|
|
1646
|
+
setVcaOffsetDb(stripIndex: number, offsetDb: number): void;
|
|
1647
|
+
/** Set independent left/right pan positions (dual-pan mode). */
|
|
1648
|
+
setDualPan(stripIndex: number, leftPan: number, rightPan: number): void;
|
|
1649
|
+
/**
|
|
1650
|
+
* Add a send to a strip after construction.
|
|
1651
|
+
*
|
|
1652
|
+
* @param stripIndex - Strip index in `[0, stripCount())`
|
|
1653
|
+
* @param id - Send id
|
|
1654
|
+
* @param destinationBusId - Destination bus id
|
|
1655
|
+
* @param sendDb - Initial send level in dB
|
|
1656
|
+
* @param timing - `'preFader'` or `'postFader'` (default: `'postFader'`)
|
|
1657
|
+
* @returns The new send's index
|
|
1658
|
+
*/
|
|
1659
|
+
addSend(stripIndex: number, id: string, destinationBusId: string, sendDb: number, timing?: SendTiming | number): number;
|
|
1660
|
+
/** Set the send level (in dB) for an existing send by index. */
|
|
1661
|
+
setSendDb(stripIndex: number, sendIndex: number, sendDb: number): void;
|
|
1662
|
+
/**
|
|
1663
|
+
* Read a strip's meter snapshot at the given tap point.
|
|
1664
|
+
*
|
|
1665
|
+
* @param stripIndex - Strip index in `[0, stripCount())`
|
|
1666
|
+
* @param tap - `'preFader'` or `'postFader'` (default: `'postFader'`)
|
|
1667
|
+
*/
|
|
1668
|
+
meterTap(stripIndex: number, tap?: MeterTap): MixMeterSnapshot;
|
|
1669
|
+
/**
|
|
1670
|
+
* Read a strip's meter snapshot. Alias of {@link meterTap}, provided for
|
|
1671
|
+
* cross-binding (Node/Python) parity.
|
|
1672
|
+
*
|
|
1673
|
+
* @param stripIndex - Strip index in `[0, stripCount())`
|
|
1674
|
+
* @param tap - `'preFader'` or `'postFader'` (default: `'postFader'`)
|
|
1675
|
+
*/
|
|
1676
|
+
stripMeter(stripIndex: number, tap?: MeterTap): MixMeterSnapshot;
|
|
1677
|
+
/**
|
|
1678
|
+
* Schedule sample-accurate fader automation on a strip.
|
|
1679
|
+
*
|
|
1680
|
+
* @param stripIndex - Strip index in `[0, stripCount())`
|
|
1681
|
+
* @param samplePos - Absolute samples from the start of processing
|
|
1682
|
+
* @param faderDb - Target fader level in dB
|
|
1683
|
+
* @param curve - Interpolation curve (default: `'linear'`)
|
|
1684
|
+
*/
|
|
1685
|
+
scheduleFaderAutomation(stripIndex: number, samplePos: number, faderDb: number, curve?: AutomationCurve): void;
|
|
1686
|
+
/**
|
|
1687
|
+
* Schedule sample-accurate pan automation on a strip.
|
|
1688
|
+
*
|
|
1689
|
+
* @param stripIndex - Strip index in `[0, stripCount())`
|
|
1690
|
+
* @param samplePos - Absolute samples from the start of processing
|
|
1691
|
+
* @param pan - Target pan position
|
|
1692
|
+
* @param curve - Interpolation curve (default: `'linear'`)
|
|
1693
|
+
*/
|
|
1694
|
+
schedulePanAutomation(stripIndex: number, samplePos: number, pan: number, curve?: AutomationCurve): void;
|
|
1695
|
+
/**
|
|
1696
|
+
* Schedule sample-accurate width automation on a strip.
|
|
1697
|
+
*
|
|
1698
|
+
* @param stripIndex - Strip index in `[0, stripCount())`
|
|
1699
|
+
* @param samplePos - Absolute samples from the start of processing
|
|
1700
|
+
* @param width - Target stereo width
|
|
1701
|
+
* @param curve - Interpolation curve (default: `'linear'`)
|
|
1702
|
+
*/
|
|
1703
|
+
scheduleWidthAutomation(stripIndex: number, samplePos: number, width: number, curve?: AutomationCurve): void;
|
|
1704
|
+
/**
|
|
1705
|
+
* Schedule sample-accurate send-level automation on a strip's send.
|
|
1706
|
+
*
|
|
1707
|
+
* @param stripIndex - Strip index in `[0, stripCount())`
|
|
1708
|
+
* @param sendIndex - Send index in the strip's add order
|
|
1709
|
+
* @param samplePos - Absolute samples from the start of processing
|
|
1710
|
+
* @param db - Target send level in dB
|
|
1711
|
+
* @param curve - Interpolation curve (default: `'linear'`)
|
|
1712
|
+
*/
|
|
1713
|
+
scheduleSendAutomation(stripIndex: number, sendIndex: number, samplePos: number, db: number, curve?: AutomationCurve): void;
|
|
1714
|
+
/**
|
|
1715
|
+
* Read up to `maxPoints` of a strip's most recent goniometer samples
|
|
1716
|
+
* (oldest to newest).
|
|
1717
|
+
*/
|
|
1718
|
+
readGoniometerLatest(stripIndex: number, maxPoints: number): GoniometerPoint[];
|
|
1719
|
+
/** Serialize the current scene (strips, buses, sends, connections) to JSON. */
|
|
1720
|
+
toSceneJson(): string;
|
|
1721
|
+
/** Release the underlying WASM object. Safe to call only once. */
|
|
1722
|
+
delete(): void;
|
|
1723
|
+
/** Alias for {@link delete}, provided for cross-binding (Node) compatibility. */
|
|
1724
|
+
destroy(): void;
|
|
1725
|
+
}
|
|
761
1726
|
/**
|
|
762
1727
|
* Trim silence from beginning and end of audio.
|
|
763
1728
|
*
|
|
@@ -814,6 +1779,59 @@ declare function melSpectrogram(samples: Float32Array, sampleRate: number, nFft?
|
|
|
814
1779
|
* @returns MFCC result
|
|
815
1780
|
*/
|
|
816
1781
|
declare function mfcc(samples: Float32Array, sampleRate: number, nFft?: number, hopLength?: number, nMels?: number, nMfcc?: number): MfccResult;
|
|
1782
|
+
/**
|
|
1783
|
+
* Approximate inverse of a Mel filterbank: Mel power spectrogram -> STFT power
|
|
1784
|
+
* spectrogram. Mirrors `feature::mel_to_stft`.
|
|
1785
|
+
*
|
|
1786
|
+
* @param melPower - Mel power spectrogram [nMels x nFrames] row-major
|
|
1787
|
+
* @param nMels - Number of Mel bands
|
|
1788
|
+
* @param nFrames - Number of time frames
|
|
1789
|
+
* @param sampleRate - Sample rate in Hz
|
|
1790
|
+
* @param nFft - FFT size (default: 2048)
|
|
1791
|
+
* @param hopLength - Hop length (default: 512)
|
|
1792
|
+
* @returns STFT power spectrogram result
|
|
1793
|
+
*/
|
|
1794
|
+
declare function melToStft(melPower: Float32Array, nMels: number, nFrames: number, sampleRate: number, nFft?: number, hopLength?: number, fmin?: number, fmax?: number): StftPowerResult;
|
|
1795
|
+
/**
|
|
1796
|
+
* Reconstruct audio from a Mel power spectrogram via Griffin-Lim. Mirrors
|
|
1797
|
+
* `feature::mel_to_audio`.
|
|
1798
|
+
*
|
|
1799
|
+
* @param melPower - Mel power spectrogram [nMels x nFrames] row-major
|
|
1800
|
+
* @param nMels - Number of Mel bands
|
|
1801
|
+
* @param nFrames - Number of time frames
|
|
1802
|
+
* @param sampleRate - Sample rate in Hz
|
|
1803
|
+
* @param nFft - FFT size (default: 2048)
|
|
1804
|
+
* @param hopLength - Hop length (default: 512)
|
|
1805
|
+
* @param nIter - Griffin-Lim iterations (default: 32)
|
|
1806
|
+
* @returns Reconstructed audio samples (mono, float32)
|
|
1807
|
+
*/
|
|
1808
|
+
declare function melToAudio(melPower: Float32Array, nMels: number, nFrames: number, sampleRate: number, nFft?: number, hopLength?: number, nIter?: number, fmin?: number, fmax?: number): Float32Array;
|
|
1809
|
+
/**
|
|
1810
|
+
* Invert MFCC coefficients back to a Mel power spectrogram. Mirrors
|
|
1811
|
+
* `feature::mfcc_to_mel`.
|
|
1812
|
+
*
|
|
1813
|
+
* @param mfccCoefficients - MFCC matrix [nMfcc x nFrames] row-major
|
|
1814
|
+
* @param nMfcc - Number of MFCC coefficients
|
|
1815
|
+
* @param nFrames - Number of time frames
|
|
1816
|
+
* @param nMels - Number of Mel bins to reconstruct (default: 128)
|
|
1817
|
+
* @returns Mel power spectrogram result
|
|
1818
|
+
*/
|
|
1819
|
+
declare function mfccToMel(mfccCoefficients: Float32Array, nMfcc: number, nFrames: number, nMels?: number): MelPowerResult;
|
|
1820
|
+
/**
|
|
1821
|
+
* Reconstruct audio directly from MFCC coefficients via Griffin-Lim. Mirrors
|
|
1822
|
+
* `feature::mfcc_to_audio`.
|
|
1823
|
+
*
|
|
1824
|
+
* @param mfccCoefficients - MFCC matrix [nMfcc x nFrames] row-major
|
|
1825
|
+
* @param nMfcc - Number of MFCC coefficients
|
|
1826
|
+
* @param nFrames - Number of time frames
|
|
1827
|
+
* @param nMels - Number of Mel bins (default: 128)
|
|
1828
|
+
* @param sampleRate - Sample rate in Hz
|
|
1829
|
+
* @param nFft - FFT size (default: 2048)
|
|
1830
|
+
* @param hopLength - Hop length (default: 512)
|
|
1831
|
+
* @param nIter - Griffin-Lim iterations (default: 32)
|
|
1832
|
+
* @returns Reconstructed audio samples (mono, float32)
|
|
1833
|
+
*/
|
|
1834
|
+
declare function mfccToAudio(mfccCoefficients: Float32Array, nMfcc: number, nFrames: number, nMels: number, sampleRate: number, nFft?: number, hopLength?: number, nIter?: number, fmin?: number, fmax?: number): Float32Array;
|
|
817
1835
|
/**
|
|
818
1836
|
* Compute chromagram (pitch class distribution).
|
|
819
1837
|
*
|
|
@@ -989,8 +2007,121 @@ declare function peakPick(values: Float32Array, preMax: number, postMax: number,
|
|
|
989
2007
|
declare function vectorNormalize(values: Float32Array, normType?: number, threshold?: number): Float32Array;
|
|
990
2008
|
declare function pcen(values: Float32Array, nBins: number, nFrames: number, options?: Record<string, number>): Float32Array;
|
|
991
2009
|
declare function tonnetz(chromagram: Float32Array, nChroma: number, nFrames: number): Float32Array;
|
|
992
|
-
declare function tempogram(onsetEnvelope: Float32Array, sampleRate: number, hopLength?: number, winLength?: number): WasmTempogramResult;
|
|
2010
|
+
declare function tempogram(onsetEnvelope: Float32Array, sampleRate: number, hopLength?: number, winLength?: number, mode?: TempogramMode): WasmTempogramResult;
|
|
2011
|
+
declare function cyclicTempogram(onsetEnvelope: Float32Array, sampleRate: number, hopLength?: number, winLength?: number, bpmMin?: number, nBins?: number): WasmCyclicTempogramResult;
|
|
993
2012
|
declare function plp(onsetEnvelope: Float32Array, sampleRate: number, hopLength?: number, tempoMin?: number, tempoMax?: number, winLength?: number): Float32Array;
|
|
2013
|
+
/**
|
|
2014
|
+
* Compute NNLS (non-negative least squares) chromagram.
|
|
2015
|
+
*
|
|
2016
|
+
* @param samples - Audio samples (mono, float32)
|
|
2017
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2018
|
+
* @returns NNLS chroma result
|
|
2019
|
+
*/
|
|
2020
|
+
declare function nnlsChroma(samples: Float32Array, sampleRate?: number): WasmNnlsChromaResult;
|
|
2021
|
+
/**
|
|
2022
|
+
* Compute the Constant-Q Transform magnitude.
|
|
2023
|
+
*
|
|
2024
|
+
* @param samples - Audio samples (mono, float32)
|
|
2025
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2026
|
+
* @param hopLength - Hop length (default: 512)
|
|
2027
|
+
* @param fmin - Minimum frequency in Hz (default: 32.70319566257483, C1)
|
|
2028
|
+
* @param nBins - Number of frequency bins (default: 84)
|
|
2029
|
+
* @param binsPerOctave - Bins per octave (default: 12)
|
|
2030
|
+
* @returns CQT magnitude result
|
|
2031
|
+
*/
|
|
2032
|
+
declare function cqt(samples: Float32Array, sampleRate?: number, hopLength?: number, fmin?: number, nBins?: number, binsPerOctave?: number): CqtResult;
|
|
2033
|
+
/**
|
|
2034
|
+
* Compute the Variable-Q Transform magnitude (gamma controls Q).
|
|
2035
|
+
*
|
|
2036
|
+
* @param samples - Audio samples (mono, float32)
|
|
2037
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2038
|
+
* @param hopLength - Hop length (default: 512)
|
|
2039
|
+
* @param fmin - Minimum frequency in Hz (default: 32.70319566257483, C1)
|
|
2040
|
+
* @param nBins - Number of frequency bins (default: 84)
|
|
2041
|
+
* @param binsPerOctave - Bins per octave (default: 12)
|
|
2042
|
+
* @param gamma - Bandwidth offset; 0 is equivalent to CQT (default: 0)
|
|
2043
|
+
* @returns VQT magnitude result (same shape as CQT)
|
|
2044
|
+
*/
|
|
2045
|
+
declare function vqt(samples: Float32Array, sampleRate?: number, hopLength?: number, fmin?: number, nBins?: number, binsPerOctave?: number, gamma?: number): CqtResult;
|
|
2046
|
+
/**
|
|
2047
|
+
* Detect song-structure sections (intro/verse/chorus/...).
|
|
2048
|
+
*
|
|
2049
|
+
* @param samples - Audio samples (mono, float32)
|
|
2050
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2051
|
+
* @param nFft - FFT size (default: 2048)
|
|
2052
|
+
* @param hopLength - Hop length (default: 512)
|
|
2053
|
+
* @param minSectionSec - Minimum section duration in seconds (default: 8.0)
|
|
2054
|
+
* @returns Array of detected sections
|
|
2055
|
+
*/
|
|
2056
|
+
declare function analyzeSections(samples: Float32Array, sampleRate?: number, nFft?: number, hopLength?: number, minSectionSec?: number): Section[];
|
|
2057
|
+
/**
|
|
2058
|
+
* Extract the melody contour from monophonic audio via YIN.
|
|
2059
|
+
*
|
|
2060
|
+
* @param samples - Audio samples (mono, float32)
|
|
2061
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2062
|
+
* @param fmin - Minimum frequency in Hz (default: 65.0)
|
|
2063
|
+
* @param fmax - Maximum frequency in Hz (default: 2093.0)
|
|
2064
|
+
* @param frameLength - Frame length in samples (default: 2048)
|
|
2065
|
+
* @param hopLength - Hop length (default: 512)
|
|
2066
|
+
* @param threshold - YIN threshold; lower is stricter (default: 0.1)
|
|
2067
|
+
* @returns Melody contour with per-frame pitch points and summary stats
|
|
2068
|
+
*/
|
|
2069
|
+
declare function analyzeMelody(samples: Float32Array, sampleRate?: number, fmin?: number, fmax?: number, frameLength?: number, hopLength?: number, threshold?: number): MelodyResult;
|
|
2070
|
+
/**
|
|
2071
|
+
* Compute the onset strength envelope.
|
|
2072
|
+
*
|
|
2073
|
+
* @param samples - Audio samples (mono, float32)
|
|
2074
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2075
|
+
* @param nFft - FFT size (default: 2048)
|
|
2076
|
+
* @param hopLength - Hop length (default: 512)
|
|
2077
|
+
* @param nMels - Number of Mel bands (default: 128)
|
|
2078
|
+
* @returns Onset envelope for each frame
|
|
2079
|
+
*/
|
|
2080
|
+
declare function onsetEnvelope(samples: Float32Array, sampleRate?: number, nFft?: number, hopLength?: number, nMels?: number): Float32Array;
|
|
2081
|
+
/**
|
|
2082
|
+
* Compute the Fourier tempogram from an onset envelope.
|
|
2083
|
+
*
|
|
2084
|
+
* @param onsetEnvelope - Onset strength envelope (float32)
|
|
2085
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2086
|
+
* @param hopLength - Hop length (default: 512)
|
|
2087
|
+
* @param winLength - Window length in frames (default: 384)
|
|
2088
|
+
* @returns Fourier tempogram result
|
|
2089
|
+
*/
|
|
2090
|
+
declare function fourierTempogram(onsetEnvelope: Float32Array, sampleRate?: number, hopLength?: number, winLength?: number): WasmFourierTempogramResult;
|
|
2091
|
+
/**
|
|
2092
|
+
* Compute tempogram ratio features.
|
|
2093
|
+
*
|
|
2094
|
+
* @param tempogramData - Tempogram data (float32)
|
|
2095
|
+
* @param winLength - Window length in frames (default: 384)
|
|
2096
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2097
|
+
* @param hopLength - Hop length (default: 512)
|
|
2098
|
+
* @returns Tempogram ratio features
|
|
2099
|
+
*/
|
|
2100
|
+
declare function tempogramRatio(tempogramData: Float32Array, winLength?: number, sampleRate?: number, hopLength?: number): Float32Array;
|
|
2101
|
+
/**
|
|
2102
|
+
* Measure loudness (EBU R128 / ITU-R BS.1770).
|
|
2103
|
+
*
|
|
2104
|
+
* @param samples - Audio samples (mono, float32)
|
|
2105
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2106
|
+
* @returns Loudness measurement result
|
|
2107
|
+
*/
|
|
2108
|
+
declare function lufs(samples: Float32Array, sampleRate?: number): LufsResult;
|
|
2109
|
+
/**
|
|
2110
|
+
* Compute the momentary loudness (LUFS) over time.
|
|
2111
|
+
*
|
|
2112
|
+
* @param samples - Audio samples (mono, float32)
|
|
2113
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2114
|
+
* @returns Momentary LUFS values over time
|
|
2115
|
+
*/
|
|
2116
|
+
declare function momentaryLufs(samples: Float32Array, sampleRate?: number): Float32Array;
|
|
2117
|
+
/**
|
|
2118
|
+
* Compute the short-term loudness (LUFS) over time.
|
|
2119
|
+
*
|
|
2120
|
+
* @param samples - Audio samples (mono, float32)
|
|
2121
|
+
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
2122
|
+
* @returns Short-term LUFS values over time
|
|
2123
|
+
*/
|
|
2124
|
+
declare function shortTermLufs(samples: Float32Array, sampleRate?: number): Float32Array;
|
|
994
2125
|
/**
|
|
995
2126
|
* Resample audio to a different sample rate.
|
|
996
2127
|
*
|
|
@@ -1031,9 +2162,12 @@ declare class Audio {
|
|
|
1031
2162
|
/** Duration in seconds. */
|
|
1032
2163
|
get duration(): number;
|
|
1033
2164
|
detectBpm(): number;
|
|
1034
|
-
detectKey(): Key;
|
|
2165
|
+
detectKey(options?: KeyDetectionOptions): Key;
|
|
2166
|
+
detectKeyCandidates(options?: KeyDetectionOptions): KeyCandidate[];
|
|
1035
2167
|
detectOnsets(): Float32Array;
|
|
1036
2168
|
detectBeats(): Float32Array;
|
|
2169
|
+
detectDownbeats(): Float32Array;
|
|
2170
|
+
detectChords(options?: ChordDetectionOptions): ChordAnalysisResult;
|
|
1037
2171
|
analyze(): AnalysisResult;
|
|
1038
2172
|
analyzeWithProgress(onProgress: ProgressCallback): AnalysisResult;
|
|
1039
2173
|
hpss(kernelHarmonic?: number, kernelPercussive?: number): HpssResult;
|
|
@@ -1041,11 +2175,14 @@ declare class Audio {
|
|
|
1041
2175
|
percussive(): Float32Array;
|
|
1042
2176
|
timeStretch(rate: number): Float32Array;
|
|
1043
2177
|
pitchShift(semitones: number): Float32Array;
|
|
2178
|
+
pitchCorrectToMidi(currentMidi: number, targetMidi: number): Float32Array;
|
|
2179
|
+
noteStretch(onsetSample: number, offsetSample: number, stretchRatio: number): Float32Array;
|
|
2180
|
+
voiceChange(pitchSemitones: number, formantFactor: number): Float32Array;
|
|
1044
2181
|
normalize(targetDb?: number): Float32Array;
|
|
1045
2182
|
mastering(targetLufs?: number, ceilingDb?: number, truePeakOversample?: number): MasteringResult;
|
|
1046
2183
|
masteringChain(config: MasteringChainConfig): MasteringChainResult;
|
|
1047
|
-
masterAudio(presetName:
|
|
1048
|
-
masteringProcess(processorName:
|
|
2184
|
+
masterAudio(presetName: MasteringPreset, overrides?: Record<string, number | boolean> | null): MasteringChainResult;
|
|
2185
|
+
masteringProcess(processorName: SoloProcessor, params?: MasteringProcessorParams): MasteringResult;
|
|
1049
2186
|
trim(thresholdDb?: number): Float32Array;
|
|
1050
2187
|
stft(nFft?: number, hopLength?: number): StftResult;
|
|
1051
2188
|
stftDb(nFft?: number, hopLength?: number): {
|
|
@@ -1056,6 +2193,11 @@ declare class Audio {
|
|
|
1056
2193
|
melSpectrogram(nFft?: number, hopLength?: number, nMels?: number): MelSpectrogramResult;
|
|
1057
2194
|
mfcc(nFft?: number, hopLength?: number, nMels?: number, nMfcc?: number): MfccResult;
|
|
1058
2195
|
chroma(nFft?: number, hopLength?: number): ChromaResult;
|
|
2196
|
+
nnlsChroma(): WasmNnlsChromaResult;
|
|
2197
|
+
onsetEnvelope(nFft?: number, hopLength?: number, nMels?: number): Float32Array;
|
|
2198
|
+
lufs(): LufsResult;
|
|
2199
|
+
momentaryLufs(): Float32Array;
|
|
2200
|
+
shortTermLufs(): Float32Array;
|
|
1059
2201
|
spectralCentroid(nFft?: number, hopLength?: number): Float32Array;
|
|
1060
2202
|
spectralBandwidth(nFft?: number, hopLength?: number): Float32Array;
|
|
1061
2203
|
spectralRolloff(nFft?: number, hopLength?: number, rollPercent?: number): Float32Array;
|
|
@@ -1119,6 +2261,8 @@ declare class StreamAnalyzer {
|
|
|
1119
2261
|
* @returns Frame buffer with analysis results
|
|
1120
2262
|
*/
|
|
1121
2263
|
readFrames(maxFrames: number): FrameBuffer;
|
|
2264
|
+
readFramesU8(maxFrames: number): StreamFramesU8;
|
|
2265
|
+
readFramesI16(maxFrames: number): StreamFramesI16;
|
|
1122
2266
|
/**
|
|
1123
2267
|
* Reset the analyzer state.
|
|
1124
2268
|
*
|
|
@@ -1172,4 +2316,4 @@ declare class StreamAnalyzer {
|
|
|
1172
2316
|
dispose(): void;
|
|
1173
2317
|
}
|
|
1174
2318
|
|
|
1175
|
-
export { type AnalysisResult, type AnalyzerStats, Audio, type BarChord, type Beat, type Chord, type ChordChange, ChordQuality, type ChromaResult, type Dynamics, type FrameBuffer, type HpssResult, type Key, type MasteringChainConfig, type MasteringChainResult, type MasteringProcessorParams, type MasteringResult, type MasteringStereoChainResult, type MasteringStereoResult, type MelSpectrogramResult, type MfccResult, Mode, type PatternScore, PitchClass as Pitch, PitchClass, type PitchResult, type ProgressCallback, type ProgressiveEstimate, type RhythmFeatures, type Section, SectionType, type StftResult, StreamAnalyzer, type StreamConfig, StreamingMasteringChain, type Timbre, type TimeSignature, amplitudeToDb, analyze, analyzeWithProgress, chroma, dbToAmplitude, dbToPower, deemphasis, detectBeats, detectBpm, detectKey, detectOnsets, fixFrames, fixLength, frameSignal, framesToSamples, framesToTime, harmonic, hpss, hzToMel, hzToMidi, hzToNote, init, isInitialized, masterAudio, masterAudioStereo, mastering, masteringChain, masteringChainStereo, masteringChainStereoWithProgress, masteringChainWithProgress, masteringPairAnalysisNames, masteringPairAnalyze, masteringPairProcess, masteringPairProcessorNames, masteringPresetNames, masteringProcess, masteringProcessStereo, masteringProcessorNames, masteringStereoAnalysisNames, masteringStereoAnalyze, melSpectrogram, melToHz, mfcc, midiToHz, normalize, noteToHz, padCenter, pcen, peakPick, percussive, pitchPyin, pitchShift, pitchYin, plp, powerToDb, preemphasis, resample, rmsEnergy, samplesToFrames, spectralBandwidth, spectralCentroid, spectralFlatness, spectralRolloff, splitSilence, stft, stftDb, tempogram, timeStretch, timeToFrames, tonnetz, trim, trimSilence, vectorNormalize, version, zeroCrossingRate };
|
|
2319
|
+
export { type AcousticResult, type AnalysisResult, type AnalyzerStats, Audio, type AutomationCurve, type BarChord, type Beat, type Chord, type ChordAnalysisResult, type ChordChange, type ChordDetectionOptions, ChordQuality, type ChromaResult, type CqtResult, type Dynamics, EXPECTED_ENGINE_ABI_VERSION, type EngineAutomationPoint, type EngineBounceOptions, type EngineBounceResult, type EngineCapabilities, type EngineCaptureStatus, type EngineClip, type EngineFreezeOptions, type EngineFreezeResult, type EngineGraphSpec, type EngineMarker, type EngineMeterTelemetry, type EngineMetronomeConfig, type EngineParameterInfo, type EngineTelemetry, type EngineTransportState, type EqBand, type EqBandPhase, type EqBandType, type EqCoeffMode, type EqMatchOptions, type EqSpectrumSnapshot, type EqStereoPlacement, type FrameBuffer, type GoniometerPoint, type HpssResult, type Key, type KeyCandidate, type KeyDetectionOptions, KeyProfile, type KeyProfileName, type LufsResult, type MasteringChainConfig, type MasteringChainResult, type MasteringPreset, type MasteringProcessorParams, type MasteringResult, type MasteringStereoChainResult, type MasteringStereoResult, type MelSpectrogramResult, type MelodyPoint, type MelodyResult, type MeterTap, type MfccResult, type MixMeterSnapshot, type MixOptions, type MixResult, Mixer, type MixerProcessResult, type MixerRealtimeBuffer, Mode, type PairAnalysis, type PairProcessor, type PanLaw, type PanMode, type PatternScore, PitchClass as Pitch, PitchClass, type PitchResult, type ProgressCallback, type ProgressiveEstimate, RealtimeEngine, type RhythmFeatures, type Section, SectionType, type SendTiming, type SoloProcessor, type StereoAnalysis, type StftResult, StreamAnalyzer, type StreamConfig, type StreamFramesI16, type StreamFramesU8, StreamingEqualizer, type StreamingEqualizerConfig, StreamingMasteringChain, type StreamingPlatform, StreamingRetune, type StreamingRetuneConfig, type Timbre, type TimeSignature, amplitudeToDb, analyze, analyzeImpulseResponse, analyzeMelody, analyzeSections, analyzeWithProgress, chroma, cqt, cyclicTempogram, dbToAmplitude, dbToPower, deemphasis, detectAcoustic, detectBeats, detectBpm, detectChords, detectDownbeats, detectKey, detectKeyCandidates, detectOnsets, engineAbiVersion, engineCapabilities, fixFrames, fixLength, fourierTempogram, frameSignal, framesToSamples, framesToTime, harmonic, hpss, hzToMel, hzToMidi, hzToNote, init, isInitialized, lufs, masterAudio, masterAudioStereo, mastering, masteringAssistantSuggest, masteringAudioProfile, masteringChain, masteringChainStereo, masteringChainStereoWithProgress, masteringChainWithProgress, masteringPairAnalysisNames, masteringPairAnalyze, masteringPairProcess, masteringPairProcessorNames, masteringPresetNames, masteringProcess, masteringProcessStereo, masteringProcessorNames, masteringStereoAnalysisNames, masteringStereoAnalyze, masteringStreamingPreview, melSpectrogram, melToAudio, melToHz, melToStft, mfcc, mfccToAudio, mfccToMel, midiToHz, mixStereo, mixerScenePresetJson, mixingScenePresetJson, mixingScenePresetNames, momentaryLufs, nnlsChroma, normalize, noteStretch, noteToHz, onsetEnvelope, padCenter, pcen, peakPick, percussive, pitchCorrectToMidi, pitchPyin, pitchShift, pitchYin, plp, powerToDb, preemphasis, resample, rmsEnergy, samplesToFrames, shortTermLufs, spectralBandwidth, spectralCentroid, spectralFlatness, spectralRolloff, splitSilence, stft, stftDb, tempogram, tempogramRatio, timeStretch, timeToFrames, tonnetz, trim, trimSilence, vectorNormalize, version, voiceChange, vqt, zeroCrossingRate };
|