@libraz/libsonare 1.5.4 → 1.6.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 +109 -20
- package/dist/analysis.d.ts +5730 -0
- package/dist/analysis.js +2464 -0
- package/dist/analysis.js.map +1 -0
- package/dist/index.d.ts +873 -63
- package/dist/index.js +1037 -265
- package/dist/index.js.map +1 -1
- package/dist/schemas/realtime-voice-changer-preset-pack.schema.json +27 -0
- package/dist/schemas/realtime-voice-changer-preset.schema.json +140 -0
- package/dist/sonare-analysis.js +2 -0
- package/dist/sonare-analysis.wasm +0 -0
- package/dist/sonare.js +1 -1
- package/dist/sonare.wasm +0 -0
- package/dist/worker.d.ts +65 -0
- package/dist/worker.js +707 -0
- package/dist/worker.js.map +1 -0
- package/dist/worklet.d.ts +596 -86
- package/dist/worklet.js +1658 -235
- package/dist/worklet.js.map +1 -1
- package/package.json +23 -11
- package/src/_chain_config.ts +5 -23
- package/src/analysis.ts +137 -0
- package/src/analysis_helpers.ts +29 -0
- package/src/audio.ts +5 -3
- package/src/clip_page_streamer.ts +62 -8
- package/src/codes.ts +51 -64
- package/src/effects_mastering.ts +1 -0
- package/src/effects_transform.ts +12 -6
- package/src/errors.ts +1 -0
- package/src/feature_core.ts +159 -3
- package/src/feature_music.ts +35 -16
- package/src/feature_pitch.ts +75 -6
- package/src/feature_spectral.ts +234 -8
- package/src/feature_spectrogram.ts +186 -5
- package/src/features.ts +16 -1
- package/src/index.ts +104 -7
- package/src/mastering_chain.ts +20 -8
- package/src/mastering_core.ts +7 -0
- package/src/mastering_dynamics.ts +7 -1
- package/src/metering.ts +51 -5
- package/src/mixer.ts +14 -1
- package/src/opfs_clip_pages.ts +26 -1
- package/src/project.ts +7 -0
- package/src/project_class.ts +74 -13
- package/src/project_internal.ts +24 -29
- package/src/project_types.ts +69 -10
- package/src/public_types.ts +68 -0
- package/src/public_types_mastering.ts +28 -0
- package/src/public_types_mixing.ts +11 -2
- package/src/public_types_music.ts +13 -0
- package/src/public_types_spectral.ts +43 -3
- package/src/quick_analysis.ts +48 -12
- package/src/realtime_engine.ts +162 -4
- package/src/realtime_voice_changer.ts +51 -77
- package/src/sonare-analysis.js.d.ts +8 -0
- package/src/sonare.js.d.ts +305 -9
- package/src/streaming_processors.ts +22 -1
- package/src/validation.ts +6 -0
- package/src/web_midi.ts +36 -4
- package/src/worker.ts +196 -0
- package/src/worker_client.ts +352 -0
- package/src/worker_protocol.ts +59 -0
- package/src/worklet/engine-automation.ts +2 -1
- package/src/worklet/engine-capture-facade.ts +13 -4
- package/src/worklet/engine-clips.ts +12 -3
- package/src/worklet/engine-node.ts +212 -4
- package/src/worklet/engine-offline.ts +7 -2
- package/src/worklet/engine-parameter-facade.ts +26 -5
- package/src/worklet/engine-processor.ts +383 -42
- package/src/worklet/engine-register.ts +8 -0
- package/src/worklet/engine-strips.ts +17 -1
- package/src/worklet/engine-sync.ts +2 -6
- package/src/worklet/engine-tempo-facade.ts +8 -6
- package/src/worklet/engine.ts +380 -13
- package/src/worklet/guards.ts +22 -1
- package/src/worklet/messages.ts +141 -9
- package/src/worklet/protocol.ts +303 -17
- package/src/worklet/voice-changer-processor.ts +12 -15
- package/src/worklet.ts +20 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProgressCallback, WasmNnlsChromaResult,
|
|
1
|
+
import { ProgressCallback, WasmNnlsChromaResult, WasmExternalMidiEvent, WasmEngineTransportState, WasmEngineTempoSegment, WasmEngineTimeSignatureSegment, WasmEngineParameterInfo, WasmEngineAutomationPoint, WasmEngineMarker, WasmEngineMetronomeConfig, WasmEngineGraphSpec, WasmEngineClip, WasmClipPageRequest, WasmEngineCaptureStatus, WasmEngineProcessWithMonitorResult, WasmEngineBounceOptions, WasmEngineBounceResult, WasmEngineFreezeOptions, WasmEngineFreezeResult, WasmEngineTelemetry, WasmEngineMeterTelemetry, WasmEngineMeterTelemetryWide, WasmEngineScopeTelemetry, WasmCyclicTempogramResult, WasmFrameResult, WasmTempogramResult, WasmTrimResult, WasmFourierTempogramResult, WasmDecomposeResult, WasmHpssWithResidualResult, WasmLufsResult, WasmMatrix2dResult, SonareModule } from './sonare.js';
|
|
2
2
|
export { ProgressCallback } from './sonare.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -156,6 +156,8 @@ interface MasteringResult {
|
|
|
156
156
|
inputLufs: number;
|
|
157
157
|
outputLufs: number;
|
|
158
158
|
appliedGainDb: number;
|
|
159
|
+
/** True when peak headroom prevented the requested LUFS target. */
|
|
160
|
+
loudnessTargetLimited?: boolean;
|
|
159
161
|
latencySamples?: number;
|
|
160
162
|
}
|
|
161
163
|
type MasteringProcessorParams = Record<string, number | boolean>;
|
|
@@ -343,6 +345,7 @@ interface MasteringChainConfig {
|
|
|
343
345
|
monoMaker?: {
|
|
344
346
|
enabled?: boolean;
|
|
345
347
|
amount?: number;
|
|
348
|
+
frequencyHz?: number;
|
|
346
349
|
};
|
|
347
350
|
};
|
|
348
351
|
maximizer?: {
|
|
@@ -401,6 +404,24 @@ interface StageGainReduction {
|
|
|
401
404
|
*/
|
|
402
405
|
gainReductionDb: number;
|
|
403
406
|
}
|
|
407
|
+
/** Existing EBU R128 measurements captured before or after mastering. */
|
|
408
|
+
interface MasteringLoudnessSummary {
|
|
409
|
+
integratedLufs: number;
|
|
410
|
+
maxMomentaryLufs: number;
|
|
411
|
+
maxShortTermLufs: number;
|
|
412
|
+
truePeakDbtp: number;
|
|
413
|
+
loudnessRange: number;
|
|
414
|
+
}
|
|
415
|
+
/** Compact explanation of how an offline mastering chain changed a program. */
|
|
416
|
+
interface MasteringReport {
|
|
417
|
+
before: MasteringLoudnessSummary;
|
|
418
|
+
after: MasteringLoudnessSummary;
|
|
419
|
+
appliedGainDb: number;
|
|
420
|
+
maxGainReductionDb: number;
|
|
421
|
+
loudnessTargetLimited: boolean;
|
|
422
|
+
/** 32 logarithmically-spaced after-minus-before spectral energy deltas (dB). */
|
|
423
|
+
bandEnergyDeltaDb: Float32Array;
|
|
424
|
+
}
|
|
404
425
|
interface MasteringChainResult {
|
|
405
426
|
/** Latency-compensated offline output; no separate latency field is reported. */
|
|
406
427
|
samples: Float32Array;
|
|
@@ -417,8 +438,11 @@ interface MasteringChainResult {
|
|
|
417
438
|
outputTruePeakDbtp: number;
|
|
418
439
|
/** EBU Tech 3342 Loudness Range of the output (LU). */
|
|
419
440
|
outputLra: number;
|
|
441
|
+
/** True when peak headroom prevented the requested LUFS target. */
|
|
442
|
+
loudnessTargetLimited: boolean;
|
|
420
443
|
/** Per-stage gain reductions for the dynamics/maximizer stages (a subset of `stages`). */
|
|
421
444
|
stageGainReductions: StageGainReduction[];
|
|
445
|
+
report: MasteringReport;
|
|
422
446
|
}
|
|
423
447
|
interface MasteringChainStereoResult {
|
|
424
448
|
left: Float32Array;
|
|
@@ -431,7 +455,9 @@ interface MasteringChainStereoResult {
|
|
|
431
455
|
/** See {@link MasteringChainResult} for field semantics. */
|
|
432
456
|
outputTruePeakDbtp: number;
|
|
433
457
|
outputLra: number;
|
|
458
|
+
loudnessTargetLimited: boolean;
|
|
434
459
|
stageGainReductions: StageGainReduction[];
|
|
460
|
+
report: MasteringReport;
|
|
435
461
|
}
|
|
436
462
|
/**
|
|
437
463
|
* @deprecated Use {@link MasteringChainStereoResult}. Retained as an alias for
|
|
@@ -449,7 +475,7 @@ interface MasteringStereoResult {
|
|
|
449
475
|
latencySamples: number;
|
|
450
476
|
}
|
|
451
477
|
|
|
452
|
-
type PanMode = 'balance' | 'stereoPan' | 'stereo-pan' | 'dualPan' | 'dual-pan' | number;
|
|
478
|
+
type PanMode = 'balance' | 'pan' | 'stereoPan' | 'stereo-pan' | 'dualPan' | 'dual-pan' | number;
|
|
453
479
|
/**
|
|
454
480
|
* Surround pan position for a strip feeding a >2-channel bus. Phase 1 honors
|
|
455
481
|
* `azimuth`/`divergence`/`lfe`; `elevation`/`distance` are reserved. All fields
|
|
@@ -521,7 +547,9 @@ interface MixerProcessResult {
|
|
|
521
547
|
type AutomationCurve = 'linear' | 'exponential' | 'hold' | 's-curve';
|
|
522
548
|
/**
|
|
523
549
|
* Pan law applied when computing left/right gains from a pan position
|
|
524
|
-
* (see {@link Mixer.setPanLaw}).
|
|
550
|
+
* (see {@link Mixer.setPanLaw}). On mono strips it changes the centre gain;
|
|
551
|
+
* on stereo Balance strips it changes only the far-channel taper, while centre
|
|
552
|
+
* remains unity. Maps to the underlying integer code.
|
|
525
553
|
*/
|
|
526
554
|
type PanLaw = 'const3dB' | 'const4.5dB' | 'const6dB' | 'linear0dB';
|
|
527
555
|
/**
|
|
@@ -730,6 +758,10 @@ interface Beat {
|
|
|
730
758
|
interface Chord {
|
|
731
759
|
root: PitchClass;
|
|
732
760
|
bass: PitchClass;
|
|
761
|
+
/** Canonical core spelling; stable across all language bindings. */
|
|
762
|
+
rootName: string;
|
|
763
|
+
/** Canonical core spelling; stable across all language bindings. */
|
|
764
|
+
bassName: string;
|
|
733
765
|
quality: ChordQuality;
|
|
734
766
|
start: number;
|
|
735
767
|
end: number;
|
|
@@ -800,6 +832,12 @@ interface TimeSignature {
|
|
|
800
832
|
denominator: number;
|
|
801
833
|
confidence: number;
|
|
802
834
|
}
|
|
835
|
+
/** Existing tempo-estimator hypothesis retained by unified analysis. */
|
|
836
|
+
interface BpmHypothesis {
|
|
837
|
+
value: number;
|
|
838
|
+
confidence: number;
|
|
839
|
+
relation: 'primary' | 'half' | 'double' | 'other';
|
|
840
|
+
}
|
|
803
841
|
/**
|
|
804
842
|
* Rhythm features
|
|
805
843
|
*/
|
|
@@ -826,8 +864,10 @@ interface MelodyContour {
|
|
|
826
864
|
interface AnalysisResult {
|
|
827
865
|
bpm: number;
|
|
828
866
|
bpmConfidence: number;
|
|
867
|
+
bpmCandidates: BpmHypothesis[];
|
|
829
868
|
key: Key;
|
|
830
869
|
timeSignature: TimeSignature;
|
|
870
|
+
timeSignatureCandidates: TimeSignature[];
|
|
831
871
|
beatTimes: Float32Array;
|
|
832
872
|
beats: Beat[];
|
|
833
873
|
chords: Chord[];
|
|
@@ -1005,21 +1045,22 @@ interface PitchCorrectOptions extends ValidateOptions {
|
|
|
1005
1045
|
interface NoteStretchOptions {
|
|
1006
1046
|
/** Note onset position in samples (selects the region). Default 0. */
|
|
1007
1047
|
onsetSample?: number;
|
|
1008
|
-
/** Note offset position in samples (selects the region).
|
|
1048
|
+
/** Note offset position in samples (selects the region). Defaults to the input length. */
|
|
1009
1049
|
offsetSample?: number;
|
|
1010
|
-
/** Stretch ratio (0.5 =
|
|
1050
|
+
/** Stretch ratio (0.5 = half duration, 2.0 = double duration). Default 1. */
|
|
1011
1051
|
stretchRatio?: number;
|
|
1012
1052
|
}
|
|
1013
1053
|
/** Options for `noteMove`. */
|
|
1014
1054
|
interface NoteMoveOptions {
|
|
1015
1055
|
onsetSample?: number;
|
|
1056
|
+
/** Defaults to the input length. */
|
|
1016
1057
|
offsetSample?: number;
|
|
1017
1058
|
targetOnsetSample?: number;
|
|
1018
1059
|
}
|
|
1019
1060
|
/** How a `spectralEdit` region op modifies the masked bins. */
|
|
1020
1061
|
type SpectralEditMode = 'gain' | 'attenuate' | 'mute' | 'heal';
|
|
1021
1062
|
/** Analysis/synthesis window used by `spectralEdit`. */
|
|
1022
|
-
type SpectralEditWindow = 'hann' | 'hamming' | 'blackman' | 'rectangular';
|
|
1063
|
+
type SpectralEditWindow = 'hann' | 'hamming' | 'blackman' | 'rectangular' | 'rect';
|
|
1023
1064
|
/** One time x frequency rectangle edit op for `spectralEdit`. */
|
|
1024
1065
|
interface SpectralRegionOp {
|
|
1025
1066
|
/** Region time start (input samples); clamped to [0, length]. Default 0. */
|
|
@@ -1141,13 +1182,48 @@ interface PitchResult {
|
|
|
1141
1182
|
medianF0: number;
|
|
1142
1183
|
meanF0: number;
|
|
1143
1184
|
}
|
|
1185
|
+
/** Per-bin pitch candidates and peak magnitudes from spectral piptrack. */
|
|
1186
|
+
interface PiptrackResult {
|
|
1187
|
+
nBins: number;
|
|
1188
|
+
nFrames: number;
|
|
1189
|
+
pitches: Float32Array;
|
|
1190
|
+
magnitudes: Float32Array;
|
|
1191
|
+
}
|
|
1192
|
+
/** Magnitude and reassigned time/frequency coordinates for every STFT bin. */
|
|
1193
|
+
interface ReassignedSpectrogramResult {
|
|
1194
|
+
nBins: number;
|
|
1195
|
+
nFrames: number;
|
|
1196
|
+
magnitude: Float32Array;
|
|
1197
|
+
times: Float32Array;
|
|
1198
|
+
frequencies: Float32Array;
|
|
1199
|
+
}
|
|
1200
|
+
/** Row-major matrix returned by librosa.segment-compatible APIs. */
|
|
1201
|
+
interface SegmentMatrix {
|
|
1202
|
+
rows: number;
|
|
1203
|
+
cols: number;
|
|
1204
|
+
values: Float32Array;
|
|
1205
|
+
}
|
|
1206
|
+
/** One stable monophonic note region segmented from an F0 track. */
|
|
1207
|
+
interface NoteSegment {
|
|
1208
|
+
frameStart: number;
|
|
1209
|
+
frameEnd: number;
|
|
1210
|
+
startSeconds: number;
|
|
1211
|
+
endSeconds: number;
|
|
1212
|
+
medianCents: number;
|
|
1213
|
+
}
|
|
1144
1214
|
/**
|
|
1145
1215
|
* Loudness measurement result (EBU R128 / ITU-R BS.1770)
|
|
1146
1216
|
*/
|
|
1147
1217
|
interface LufsResult {
|
|
1148
1218
|
integratedLufs: number;
|
|
1219
|
+
/** Final complete 400 ms window, not Max-M. */
|
|
1149
1220
|
momentaryLufs: number;
|
|
1221
|
+
/** Final complete 3 s window, not Max-S. */
|
|
1150
1222
|
shortTermLufs: number;
|
|
1223
|
+
/** Maximum 400 ms window (EBU R128 Max-M). */
|
|
1224
|
+
maxMomentaryLufs: number;
|
|
1225
|
+
/** Maximum 3 s window (EBU R128 Max-S). */
|
|
1226
|
+
maxShortTermLufs: number;
|
|
1151
1227
|
loudnessRange: number;
|
|
1152
1228
|
}
|
|
1153
1229
|
/**
|
|
@@ -1159,6 +1235,67 @@ interface HpssResult {
|
|
|
1159
1235
|
sampleRate: number;
|
|
1160
1236
|
}
|
|
1161
1237
|
|
|
1238
|
+
/** Runtime capabilities reported by the loaded libsonare build. */
|
|
1239
|
+
interface SonareCapabilities {
|
|
1240
|
+
version: string;
|
|
1241
|
+
abi: {
|
|
1242
|
+
project: number;
|
|
1243
|
+
engine: number;
|
|
1244
|
+
};
|
|
1245
|
+
platform: string;
|
|
1246
|
+
features: {
|
|
1247
|
+
mastering: boolean;
|
|
1248
|
+
mixing: boolean;
|
|
1249
|
+
fx: boolean;
|
|
1250
|
+
ffmpeg: boolean;
|
|
1251
|
+
};
|
|
1252
|
+
decode: {
|
|
1253
|
+
builtin: string[];
|
|
1254
|
+
ffmpeg: string[];
|
|
1255
|
+
};
|
|
1256
|
+
simd: string;
|
|
1257
|
+
hardwareConcurrency: number;
|
|
1258
|
+
}
|
|
1259
|
+
/** One parameter descriptor in the cross-surface capability catalog. */
|
|
1260
|
+
interface CapabilityCatalogParameter {
|
|
1261
|
+
name: string;
|
|
1262
|
+
id: number;
|
|
1263
|
+
rtSafe: boolean;
|
|
1264
|
+
type: 'boolean' | 'number';
|
|
1265
|
+
min: number | null;
|
|
1266
|
+
max: number | null;
|
|
1267
|
+
default: boolean | number | null;
|
|
1268
|
+
unit: string | null;
|
|
1269
|
+
}
|
|
1270
|
+
/** One named mastering processor and its host-facing capabilities. */
|
|
1271
|
+
interface CapabilityCatalogProcessor {
|
|
1272
|
+
id: string;
|
|
1273
|
+
kind: 'realtime' | 'offline' | 'pair';
|
|
1274
|
+
realtimeInsertable: boolean;
|
|
1275
|
+
stereoOnly: boolean;
|
|
1276
|
+
latencySamples: number;
|
|
1277
|
+
tailSamples: number;
|
|
1278
|
+
/** Coarse realtime work estimate, or null when the processor is not an insert. */
|
|
1279
|
+
realtimeCost: 'low' | 'moderate' | 'high' | null;
|
|
1280
|
+
channelPolicy: 'multichannel' | 'stereoPairOnly' | 'perChannel' | 'passthrough';
|
|
1281
|
+
category: string;
|
|
1282
|
+
params: CapabilityCatalogParameter[];
|
|
1283
|
+
}
|
|
1284
|
+
/** Built-in preset names grouped by feature family. */
|
|
1285
|
+
interface CapabilityCatalogPresets {
|
|
1286
|
+
mastering: string[];
|
|
1287
|
+
synth: string[];
|
|
1288
|
+
mixingScene: string[];
|
|
1289
|
+
voiceChanger: string[];
|
|
1290
|
+
}
|
|
1291
|
+
/** Complete runtime catalog exposed by {@link capabilityCatalog}. */
|
|
1292
|
+
interface CapabilityCatalog {
|
|
1293
|
+
version: string;
|
|
1294
|
+
abi: SonareCapabilities['abi'];
|
|
1295
|
+
processors: CapabilityCatalogProcessor[];
|
|
1296
|
+
presets: CapabilityCatalogPresets;
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1162
1299
|
/** Canonical request form for HPSS. */
|
|
1163
1300
|
interface HpssRequest {
|
|
1164
1301
|
samples: Float32Array;
|
|
@@ -1275,6 +1412,10 @@ declare function pitchShift(samples: Float32Array, sampleRate: number, semitones
|
|
|
1275
1412
|
/**
|
|
1276
1413
|
* Pitch-correct audio from a current MIDI note to a target MIDI note.
|
|
1277
1414
|
*
|
|
1415
|
+
* Applies one constant, immediate transpose with no retune glide and preserves
|
|
1416
|
+
* the input buffer length. Use {@link pitchCorrectToMidiTimevarying} for a
|
|
1417
|
+
* caller-supplied pitch contour.
|
|
1418
|
+
*
|
|
1278
1419
|
* @param samples - Audio samples (mono, float32)
|
|
1279
1420
|
* @param sampleRate - Sample rate in Hz
|
|
1280
1421
|
* @param currentMidi - Detected/current MIDI note number
|
|
@@ -1290,7 +1431,8 @@ declare function pitchCorrectToMidi(samples: Float32Array, sampleRate?: number,
|
|
|
1290
1431
|
* the caller-supplied per-frame `f0Hz` contour and retunes every voiced frame
|
|
1291
1432
|
* toward `targetMidi`, so vibrato/drift in the source is tracked rather than
|
|
1292
1433
|
* flattened. `voiced` (non-zero = voiced) and `voicedProb` ([0,1]) are optional;
|
|
1293
|
-
* omitting them treats every frame as voiced.
|
|
1434
|
+
* omitting them treats every frame as voiced. An `f0Hz` NaN is accepted only
|
|
1435
|
+
* when the corresponding `voiced` entry is zero, matching pYIN output.
|
|
1294
1436
|
*
|
|
1295
1437
|
* @param samples - Audio samples (mono, float32)
|
|
1296
1438
|
* @param f0Hz - Per-frame measured F0 in Hz (one entry per analysis frame)
|
|
@@ -1310,7 +1452,8 @@ declare function pitchCorrectToMidiTimevarying(samples: Float32Array, f0Hz: Floa
|
|
|
1310
1452
|
* Generalises {@link pitchCorrectToMidiTimevarying}: the same caller-supplied
|
|
1311
1453
|
* per-frame `f0Hz` contour drives correction, but `options.mode` selects between
|
|
1312
1454
|
* a fixed-MIDI target (`'midi'`, default) and scale quantisation (`'scale'`),
|
|
1313
|
-
* and the retune knobs shape natural-vs-robotic correction.
|
|
1455
|
+
* and the retune knobs shape natural-vs-robotic correction. An `f0Hz` NaN is
|
|
1456
|
+
* accepted only for a frame marked unvoiced.
|
|
1314
1457
|
*
|
|
1315
1458
|
* @param samples - Audio samples (mono, float32)
|
|
1316
1459
|
* @param f0Hz - Per-frame measured F0 in Hz (one entry per analysis frame)
|
|
@@ -1328,7 +1471,7 @@ declare function pitchCorrectTimevarying(samples: Float32Array, f0Hz: Float32Arr
|
|
|
1328
1471
|
* @param sampleRate - Sample rate in Hz
|
|
1329
1472
|
* @param onsetSample - Note onset position in samples
|
|
1330
1473
|
* @param offsetSample - Note offset position in samples
|
|
1331
|
-
* @param stretchRatio - Stretch ratio (0.5 =
|
|
1474
|
+
* @param stretchRatio - Stretch ratio (0.5 = half duration, 2.0 = double duration)
|
|
1332
1475
|
* @returns Audio with the note region stretched
|
|
1333
1476
|
*/
|
|
1334
1477
|
declare function noteStretch(request: NoteStretchRequest): Float32Array;
|
|
@@ -1341,7 +1484,7 @@ declare function noteMove(samples: Float32Array, sampleRate?: number, options?:
|
|
|
1341
1484
|
*
|
|
1342
1485
|
* @param samples - Audio samples (mono, float32)
|
|
1343
1486
|
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
1344
|
-
* @param targetDb -
|
|
1487
|
+
* @param targetDb - Finite target at or below 0 dBFS (default: 0 dB = full scale)
|
|
1345
1488
|
* @returns Normalized audio
|
|
1346
1489
|
*/
|
|
1347
1490
|
declare function normalize(request: NormalizeRequest): Float32Array;
|
|
@@ -1419,6 +1562,7 @@ interface MasteringChainRequest {
|
|
|
1419
1562
|
sampleRate?: number;
|
|
1420
1563
|
config?: MasteringChainConfig;
|
|
1421
1564
|
onProgress?: ProgressCallback;
|
|
1565
|
+
cancel?: () => boolean;
|
|
1422
1566
|
}
|
|
1423
1567
|
interface MasteringChainStereoRequest {
|
|
1424
1568
|
left: Float32Array;
|
|
@@ -1426,6 +1570,7 @@ interface MasteringChainStereoRequest {
|
|
|
1426
1570
|
sampleRate?: number;
|
|
1427
1571
|
config?: MasteringChainConfig;
|
|
1428
1572
|
onProgress?: ProgressCallback;
|
|
1573
|
+
cancel?: () => boolean;
|
|
1429
1574
|
}
|
|
1430
1575
|
/** Canonical request form for one-shot preset mastering. */
|
|
1431
1576
|
interface MasterAudioRequest {
|
|
@@ -1434,6 +1579,7 @@ interface MasterAudioRequest {
|
|
|
1434
1579
|
preset?: MasteringPreset;
|
|
1435
1580
|
overrides?: MasteringChainConfig;
|
|
1436
1581
|
onProgress?: ProgressCallback;
|
|
1582
|
+
cancel?: () => boolean;
|
|
1437
1583
|
}
|
|
1438
1584
|
/** Canonical request form for one-shot stereo preset mastering. */
|
|
1439
1585
|
interface MasterAudioStereoRequest {
|
|
@@ -1443,6 +1589,7 @@ interface MasterAudioStereoRequest {
|
|
|
1443
1589
|
preset?: MasteringPreset;
|
|
1444
1590
|
overrides?: MasteringChainConfig;
|
|
1445
1591
|
onProgress?: ProgressCallback;
|
|
1592
|
+
cancel?: () => boolean;
|
|
1446
1593
|
}
|
|
1447
1594
|
/**
|
|
1448
1595
|
* Apply a configurable mastering chain in WASM.
|
|
@@ -1621,6 +1768,8 @@ interface MasteringInsertParamInfo {
|
|
|
1621
1768
|
id: number;
|
|
1622
1769
|
/** Whether the param can be changed live from the audio thread. */
|
|
1623
1770
|
rtSafe: boolean;
|
|
1771
|
+
/** Physical unit when the parameter is not unitless. */
|
|
1772
|
+
unit?: string;
|
|
1624
1773
|
}
|
|
1625
1774
|
/**
|
|
1626
1775
|
* Returns the realtime-automatable parameter descriptors for an insert / FX
|
|
@@ -1641,6 +1790,8 @@ declare function masteringInsertParamInfo(name: string): MasteringInsertParamInf
|
|
|
1641
1790
|
* "perChannel"/"passthrough" are reserved and unused by the current catalog.
|
|
1642
1791
|
*/
|
|
1643
1792
|
type MasteringChannelPolicy = 'multichannel' | 'stereoPairOnly' | 'perChannel' | 'passthrough';
|
|
1793
|
+
/** Coarse algorithmic work estimate for a realtime insert; not a benchmark. */
|
|
1794
|
+
type MasteringRealtimeCost = 'low' | 'moderate' | 'high';
|
|
1644
1795
|
/** One processor's realtime/offline/pair classification in the catalog. */
|
|
1645
1796
|
interface MasteringProcessorCatalogEntry {
|
|
1646
1797
|
/** Processor id (the name used for scene inserts / named processors). */
|
|
@@ -1665,6 +1816,8 @@ interface MasteringProcessorCatalogEntry {
|
|
|
1665
1816
|
* offline, dry-only, and no-tail processors.
|
|
1666
1817
|
*/
|
|
1667
1818
|
tailSamples: number;
|
|
1819
|
+
/** Coarse realtime work estimate, or null when the processor is not an insert. */
|
|
1820
|
+
realtimeCost: MasteringRealtimeCost | null;
|
|
1668
1821
|
/**
|
|
1669
1822
|
* How the mixer wraps the processor on a >2-channel (surround) bus insert:
|
|
1670
1823
|
* "multichannel" (one full-buffer call) or "stereoPairOnly" (front L/R pair,
|
|
@@ -2076,6 +2229,26 @@ interface ProjectBounceOptions {
|
|
|
2076
2229
|
/** Host-instrument PDC (latency) fed to the compiler. */
|
|
2077
2230
|
instrumentLatencySamples?: number;
|
|
2078
2231
|
}
|
|
2232
|
+
/** One decoded output from a host-owned source-separation model. */
|
|
2233
|
+
interface ExternalSeparatedStem {
|
|
2234
|
+
name: string;
|
|
2235
|
+
/** Optional host metadata; it does not change DSP. */
|
|
2236
|
+
role?: string;
|
|
2237
|
+
layout: 'mono' | 'stereo' | 1 | 2;
|
|
2238
|
+
planarSamples: Float32Array[];
|
|
2239
|
+
/** Absolute project-rate frame at which this stem begins. */
|
|
2240
|
+
startFrame?: number;
|
|
2241
|
+
}
|
|
2242
|
+
/** Request for {@link Project.importExternalStems}. */
|
|
2243
|
+
interface ExternalSeparatedStemImportRequest {
|
|
2244
|
+
sampleRate: number;
|
|
2245
|
+
stems: ExternalSeparatedStem[];
|
|
2246
|
+
}
|
|
2247
|
+
/** Ids of the normal tracks and clips created by the import. */
|
|
2248
|
+
interface ExternalSeparatedStemImportResult {
|
|
2249
|
+
trackIds: number[];
|
|
2250
|
+
clipIds: number[];
|
|
2251
|
+
}
|
|
2079
2252
|
/**
|
|
2080
2253
|
* Marker kind ordinals. Mirrors `SonareMarkerKind` in `src/sonare_c_types.h`;
|
|
2081
2254
|
* the values are part of the ABI and must not be renumbered.
|
|
@@ -2102,8 +2275,43 @@ interface ProjectMarker {
|
|
|
2102
2275
|
/** Key signature only: false = major, true = minor. */
|
|
2103
2276
|
keyMinor?: boolean;
|
|
2104
2277
|
}
|
|
2278
|
+
/** Read-only stored project track returned by {@link Project.trackByIndex}. */
|
|
2279
|
+
interface ProjectTrack {
|
|
2280
|
+
id: number;
|
|
2281
|
+
kind: number;
|
|
2282
|
+
midiDestinationId: number;
|
|
2283
|
+
gain: number;
|
|
2284
|
+
pan: number;
|
|
2285
|
+
mute: boolean;
|
|
2286
|
+
solo: boolean;
|
|
2287
|
+
name: string;
|
|
2288
|
+
}
|
|
2289
|
+
/** Read-only stored project clip returned by {@link Project.clipByIndex}. */
|
|
2290
|
+
interface ProjectClip {
|
|
2291
|
+
id: number;
|
|
2292
|
+
trackId: number;
|
|
2293
|
+
sourceId: number;
|
|
2294
|
+
sourceKind: number;
|
|
2295
|
+
startPpq: number;
|
|
2296
|
+
lengthPpq: number;
|
|
2297
|
+
sourceOffsetPpq: number;
|
|
2298
|
+
gain: number;
|
|
2299
|
+
loopMode: number;
|
|
2300
|
+
loopLengthPpq: number;
|
|
2301
|
+
}
|
|
2302
|
+
/** Read-only stored project source returned by {@link Project.sourceByIndex}. */
|
|
2303
|
+
interface ProjectSource {
|
|
2304
|
+
id: number;
|
|
2305
|
+
kind: number;
|
|
2306
|
+
channelCount: number;
|
|
2307
|
+
storageHandleId: number;
|
|
2308
|
+
sampleRateHint: number;
|
|
2309
|
+
nameOrUri: string;
|
|
2310
|
+
}
|
|
2311
|
+
/** Names accepted by the minimal built-in oscillator synth. */
|
|
2312
|
+
declare const BUILTIN_SYNTH_WAVEFORMS: readonly ["sine", "saw", "sawtooth", "square", "triangle"];
|
|
2105
2313
|
/** Oscillator waveform for the built-in synth. */
|
|
2106
|
-
type BuiltinSynthWaveform =
|
|
2314
|
+
type BuiltinSynthWaveform = (typeof BUILTIN_SYNTH_WAVEFORMS)[number] | 0 | 1 | 2 | 3;
|
|
2107
2315
|
/**
|
|
2108
2316
|
* Built-in synth patch + MIDI routing for
|
|
2109
2317
|
* {@link Project.bounceWithBuiltinInstrument}. Every field is optional; a
|
|
@@ -2148,6 +2356,8 @@ interface Sf2InstrumentConfig {
|
|
|
2148
2356
|
gain?: number;
|
|
2149
2357
|
/** Max simultaneous voices (0 => 48, clamped to [1, 64]). */
|
|
2150
2358
|
polyphony?: number;
|
|
2359
|
+
/** Prefer dedicated physical models for covered melodic GM programs. Defaults to false; drums stay SF2-first. */
|
|
2360
|
+
preferModelForModeledFamilies?: boolean;
|
|
2151
2361
|
}
|
|
2152
2362
|
/** Source backend a resolved MIDI program renders through. */
|
|
2153
2363
|
type SourceBackend = 'sf2' | 'synth';
|
|
@@ -2177,6 +2387,7 @@ declare const SYNTH_MOD_DESTINATIONS: readonly ["none", "pitch-cents", "cutoff-c
|
|
|
2177
2387
|
interface SynthEnumTables {
|
|
2178
2388
|
engineModes: string[];
|
|
2179
2389
|
waveforms: string[];
|
|
2390
|
+
builtinWaveforms: string[];
|
|
2180
2391
|
filterModels: string[];
|
|
2181
2392
|
filterOutputs: string[];
|
|
2182
2393
|
bodyTypes: string[];
|
|
@@ -2276,7 +2487,7 @@ interface SynthPatch {
|
|
|
2276
2487
|
busDrive?: number;
|
|
2277
2488
|
}
|
|
2278
2489
|
/** Clip fade-curve for {@link Project.setClipFade}. */
|
|
2279
|
-
type ProjectFadeCurve = 'linear' | 'equal-power' | 'equal_power' | 'equalPower' | 'exponential' | 'logarithmic' | 0 | 1 | 2 | 3;
|
|
2490
|
+
type ProjectFadeCurve = 'linear' | 'equal-power' | 'equal_power' | 'equalPower' | 'equalpower' | 'exponential' | 'exp' | 'logarithmic' | 'log' | 0 | 1 | 2 | 3;
|
|
2280
2491
|
/** One clip fade region for {@link Project.setClipFade}. */
|
|
2281
2492
|
interface ProjectClipFade {
|
|
2282
2493
|
/** Fade length in PPQ (>= 0; 0 = no fade). */
|
|
@@ -2606,6 +2817,8 @@ declare class Project {
|
|
|
2606
2817
|
addTrack(desc?: ProjectTrackDesc): number;
|
|
2607
2818
|
/** Add an audio or MIDI clip and return its allocated clip id. */
|
|
2608
2819
|
addClip(desc: ProjectClipDesc): number;
|
|
2820
|
+
/** Import host-separated PCM through the normal audio-track/clip path. */
|
|
2821
|
+
importExternalStems(request: ExternalSeparatedStemImportRequest): ExternalSeparatedStemImportResult;
|
|
2609
2822
|
/** Split captured loop-recording audio into takes and add one clip. */
|
|
2610
2823
|
addLoopRecordingTakes(desc: ProjectLoopRecordingDesc): ProjectLoopRecordingResult;
|
|
2611
2824
|
/** Create a MIDI track + clip; returns `{ trackId, clipId }`. */
|
|
@@ -2630,7 +2843,11 @@ declare class Project {
|
|
|
2630
2843
|
* Route a track's MIDI to host-instrument `destinationId` (0 = default). The
|
|
2631
2844
|
* compiler stamps every MIDI clip on the track with this id so the engine
|
|
2632
2845
|
* dispatches its events to the instrument registered for that destination.
|
|
2633
|
-
* Routes through an undoable edit command.
|
|
2846
|
+
* Routes through an undoable edit command. Builtin, NativeSynth, and SF2
|
|
2847
|
+
* instruments retain source-track provenance inside a shared destination
|
|
2848
|
+
* voice pool. With only zero-latency instruments bound, live lanes and
|
|
2849
|
+
* channel-strip bounces remain aligned. Configure one live lane per source
|
|
2850
|
+
* track that needs strip processing.
|
|
2634
2851
|
*/
|
|
2635
2852
|
setTrackMidiDestination(trackId: number, destinationId: number): void;
|
|
2636
2853
|
/** Set a track's linear playback gain (1.0 = unity; >= 0) via an undoable edit. */
|
|
@@ -2651,7 +2868,11 @@ declare class Project {
|
|
|
2651
2868
|
setMaxUndoDepth(depth: number): void;
|
|
2652
2869
|
/** Replace a MIDI clip's entire event list. */
|
|
2653
2870
|
setMidiEvents(clipId: number, events: ReadonlyArray<ProjectMidiEvent | readonly [number, number, number]>): void;
|
|
2654
|
-
/**
|
|
2871
|
+
/**
|
|
2872
|
+
* Import an in-memory SMF buffer; returns the first added clip id.
|
|
2873
|
+
* Malformed or partially truncated tracks are rejected instead of installing
|
|
2874
|
+
* a silently shortened clip.
|
|
2875
|
+
*/
|
|
2655
2876
|
importSmf(data: Uint8Array): number;
|
|
2656
2877
|
/** Export the project's tempo map + MIDI clips to an SMF byte buffer. */
|
|
2657
2878
|
exportSmf(): Uint8Array;
|
|
@@ -2676,15 +2897,18 @@ declare class Project {
|
|
|
2676
2897
|
setProgram(clipId: number, program: number, bank?: number): void;
|
|
2677
2898
|
/** Set a MIDI clip's program / bank for one UMP group and channel. */
|
|
2678
2899
|
setProgramOnChannel(clipId: number, group: number, channel: number, program: number, bank?: number): void;
|
|
2679
|
-
/**
|
|
2900
|
+
/**
|
|
2901
|
+
* Destructively bake a MIDI-FX chain into all stored events. Large clips are
|
|
2902
|
+
* drained without truncation; failure leaves the original clip unchanged.
|
|
2903
|
+
*/
|
|
2680
2904
|
bakeMidiFx(clipId: number, configJson: string): void;
|
|
2681
2905
|
/** Backward alias for {@link bakeMidiFx}. */
|
|
2682
2906
|
setMidiFx(clipId: number, configJson: string): void;
|
|
2683
2907
|
/**
|
|
2684
2908
|
* Pre-flight check for hanging / unmatched notes in a MIDI clip: reports
|
|
2685
|
-
* whether every note-on
|
|
2686
|
-
*
|
|
2687
|
-
* or not a MIDI clip.
|
|
2909
|
+
* whether every note-on in the exported half-open playback window has a
|
|
2910
|
+
* matching note-off (FIFO per group+channel+note). Useful before bouncing to
|
|
2911
|
+
* catch a stuck note. Throws if `clipId` is unknown or not a MIDI clip.
|
|
2688
2912
|
*/
|
|
2689
2913
|
validateMidiNotes(clipId: number): ProjectNotePairValidation;
|
|
2690
2914
|
/** Return ranked tempo-octave and detected-meter candidates without editing. */
|
|
@@ -2788,6 +3012,10 @@ declare class Project {
|
|
|
2788
3012
|
setClipGain(clipId: number, gain: number): void;
|
|
2789
3013
|
/** Set a clip's fade-in / fade-out regions (undoable). */
|
|
2790
3014
|
setClipFade(clipId: number, fadeIn?: ProjectClipFade, fadeOut?: ProjectClipFade): void;
|
|
3015
|
+
/** Audio source ids that need decoded PCM after deserialization. */
|
|
3016
|
+
unresolvedAudioSourceIds(): number[];
|
|
3017
|
+
/** Register decoded interleaved PCM for an existing audio source (undoable). */
|
|
3018
|
+
setSourceAudio(sourceId: number, audio: Float32Array, channels: number, sampleRate: number): void;
|
|
2791
3019
|
/** Replace a clip's take list and active take id (undoable). */
|
|
2792
3020
|
setClipTakes(clipId: number, takes: ReadonlyArray<ProjectClipTake>, activeTakeId?: number): void;
|
|
2793
3021
|
/** Replace a clip's comp segments (undoable). */
|
|
@@ -2808,12 +3036,12 @@ declare class Project {
|
|
|
2808
3036
|
renameTrack(trackId: number, name: string): void;
|
|
2809
3037
|
/** Set a track's mixer-strip binding + output target (undoable; omit / '' clears). */
|
|
2810
3038
|
setTrackRoute(trackId: number, channelStripRef?: string, outputTarget?: string): void;
|
|
2811
|
-
/** Append an automation lane
|
|
3039
|
+
/** Append an automation lane; returns its stable target parameter id (undoable). */
|
|
2812
3040
|
addAutomationLane(trackId: number, desc: ProjectAutomationLaneDesc): number;
|
|
2813
|
-
/** Replace
|
|
2814
|
-
editAutomationLane(trackId: number,
|
|
2815
|
-
/** Remove
|
|
2816
|
-
removeAutomationLane(trackId: number,
|
|
3041
|
+
/** Replace the lane identified by its stable target parameter id (undoable). */
|
|
3042
|
+
editAutomationLane(trackId: number, targetParamId: number, desc: ProjectAutomationLaneDesc): void;
|
|
3043
|
+
/** Remove the lane identified by its stable target parameter id (undoable). */
|
|
3044
|
+
removeAutomationLane(trackId: number, targetParamId: number): void;
|
|
2817
3045
|
/** Replace the project's key annotation stream (undoable). */
|
|
2818
3046
|
annotateKeys(keys: ReadonlyArray<ProjectKeySegment>): void;
|
|
2819
3047
|
/** Replace the project's chord-symbol annotation stream (undoable). */
|
|
@@ -2845,6 +3073,12 @@ declare class Project {
|
|
|
2845
3073
|
setMarkerEx(marker: ProjectMarker): number;
|
|
2846
3074
|
/** Read a project marker by index (0-based, in stored order). */
|
|
2847
3075
|
markerByIndex(index: number): ProjectMarker;
|
|
3076
|
+
/** Read a stored project track by 0-based index. */
|
|
3077
|
+
trackByIndex(index: number): ProjectTrack;
|
|
3078
|
+
/** Read a stored project clip by 0-based index. */
|
|
3079
|
+
clipByIndex(index: number): ProjectClip;
|
|
3080
|
+
/** Read a stored project source by 0-based index. */
|
|
3081
|
+
sourceByIndex(index: number): ProjectSource;
|
|
2848
3082
|
/** Number of markers in the project. */
|
|
2849
3083
|
markerCount(): number;
|
|
2850
3084
|
/** Number of tracks in the project. */
|
|
@@ -2903,6 +3137,7 @@ type EngineMarker = WasmEngineMarker;
|
|
|
2903
3137
|
type EngineMetronomeConfig = WasmEngineMetronomeConfig;
|
|
2904
3138
|
type EngineGraphSpec = WasmEngineGraphSpec;
|
|
2905
3139
|
type EngineCaptureStatus = WasmEngineCaptureStatus;
|
|
3140
|
+
type EngineCaptureSource = EngineCaptureStatus['source'] | number;
|
|
2906
3141
|
type EngineBounceOptions = WasmEngineBounceOptions;
|
|
2907
3142
|
type EngineBounceResult = WasmEngineBounceResult;
|
|
2908
3143
|
type EngineFreezeOptions = WasmEngineFreezeOptions;
|
|
@@ -2993,8 +3228,8 @@ interface EngineCapabilities {
|
|
|
2993
3228
|
declare function engineCapabilities(): EngineCapabilities;
|
|
2994
3229
|
declare class RealtimeEngine {
|
|
2995
3230
|
private native;
|
|
2996
|
-
constructor(sampleRate?: number, maxBlockSize?: number, commandCapacity?: number, telemetryCapacity?: number);
|
|
2997
|
-
prepare(sampleRate: number, maxBlockSize: number, commandCapacity?: number, telemetryCapacity?: number): void;
|
|
3231
|
+
constructor(sampleRate?: number, maxBlockSize?: number, commandCapacity?: number, telemetryCapacity?: number, maxChannels?: number);
|
|
3232
|
+
prepare(sampleRate: number, maxBlockSize: number, commandCapacity?: number, telemetryCapacity?: number, maxChannels?: number): void;
|
|
2998
3233
|
/** Queue a sample-accurate parameter change (engine kSetParam). */
|
|
2999
3234
|
setParameter(paramId: number, value: number, renderFrame?: number): void;
|
|
3000
3235
|
/** Queue a smoothed parameter change (engine kSetParamSmoothed). */
|
|
@@ -3040,6 +3275,7 @@ declare class RealtimeEngine {
|
|
|
3040
3275
|
destinationId?: number;
|
|
3041
3276
|
gain?: number;
|
|
3042
3277
|
polyphony?: number;
|
|
3278
|
+
preferModelForModeledFamilies?: boolean;
|
|
3043
3279
|
}, destinationId?: number): void;
|
|
3044
3280
|
clearMidiInstrument(destinationId?: number): void;
|
|
3045
3281
|
midiInstrumentCount(): number;
|
|
@@ -3049,6 +3285,8 @@ declare class RealtimeEngine {
|
|
|
3049
3285
|
* mapped into [minValue, maxValue] for `paramId`.
|
|
3050
3286
|
*/
|
|
3051
3287
|
bindMidiCc(channel: number, controller: number, paramId: number, options?: MidiCcBindOptions): void;
|
|
3288
|
+
/** Bind a 7/14-bit CC, RPN, or NRPN descriptor to a live parameter. */
|
|
3289
|
+
bindMidiCcBinding(binding: ProjectMidiCcBinding): void;
|
|
3052
3290
|
clearMidiCcBindings(): void;
|
|
3053
3291
|
midiCcBindingCount(): number;
|
|
3054
3292
|
/** Install/replace a live non-destructive MIDI-FX insert for one destination. */
|
|
@@ -3071,6 +3309,7 @@ declare class RealtimeEngine {
|
|
|
3071
3309
|
setExternalMidiClockEnabled(enabled: boolean): void;
|
|
3072
3310
|
/** Count of external-MIDI events dropped because the output queue was full. */
|
|
3073
3311
|
externalMidiDroppedCount(): number;
|
|
3312
|
+
externalMidiPendingCount(): number;
|
|
3074
3313
|
/**
|
|
3075
3314
|
* Drain queued external-MIDI events, already lowered to MIDI 1.0 byte
|
|
3076
3315
|
* messages ready to write to a Web MIDI output port. Call once per audio
|
|
@@ -3079,6 +3318,13 @@ declare class RealtimeEngine {
|
|
|
3079
3318
|
* queued for the next call (lossless); call again to drain the rest.
|
|
3080
3319
|
*/
|
|
3081
3320
|
drainExternalMidi(maxRecords?: number): WasmExternalMidiEvent[];
|
|
3321
|
+
/** Scalar, allocation-free external-MIDI drain for AudioWorklet SAB output. */
|
|
3322
|
+
popExternalMidiToScratch(): boolean;
|
|
3323
|
+
externalMidiScratchDestinationId(): number;
|
|
3324
|
+
externalMidiScratchRenderFrame(): number;
|
|
3325
|
+
externalMidiScratchByteWord(): number;
|
|
3326
|
+
externalMidiScratchByteCount(): number;
|
|
3327
|
+
consumeExternalMidiScratch(): void;
|
|
3082
3328
|
pushMidiInputNoteOn(group: number, channel: number, note: number, velocity: number, portTimeSamples?: number): void;
|
|
3083
3329
|
pushMidiInputNoteOff(group: number, channel: number, note: number, velocity?: number, portTimeSamples?: number): void;
|
|
3084
3330
|
pushMidiInputCc(group: number, channel: number, controller: number, value: number, portTimeSamples?: number): void;
|
|
@@ -3091,6 +3337,8 @@ declare class RealtimeEngine {
|
|
|
3091
3337
|
* immediate. Mirrors the Node/Python/C-ABI `pushMidiCc`.
|
|
3092
3338
|
*/
|
|
3093
3339
|
pushMidiCc(destinationId: number, group: number, channel: number, controller: number, value: number, renderFrame?: number): void;
|
|
3340
|
+
/** Queue one immediate MIDI 1.0 channel-voice UMP word for a destination. */
|
|
3341
|
+
pushMidiUmp(destinationId: number, word0: number, renderFrame?: number): void;
|
|
3094
3342
|
/**
|
|
3095
3343
|
* Queue an immediate (live) MIDI SysEx frame to a MIDI destination. `data` is
|
|
3096
3344
|
* the full message including the leading 0xF0 and trailing 0xF7 (1..512
|
|
@@ -3120,7 +3368,10 @@ declare class RealtimeEngine {
|
|
|
3120
3368
|
* settled values instead of ramping in from defaults.
|
|
3121
3369
|
*/
|
|
3122
3370
|
settleParameters(): void;
|
|
3371
|
+
/** Drains queued commands on an offline/control-only engine immediately. */
|
|
3372
|
+
flushControlCommands(): void;
|
|
3123
3373
|
seekPpq(ppq: number, renderFrame?: number): void;
|
|
3374
|
+
/** Set a finite tempo in the range (0, 100000] BPM. */
|
|
3124
3375
|
setTempo(bpm: number): void;
|
|
3125
3376
|
setTempoSegments(segments: readonly EngineTempoSegment[]): void;
|
|
3126
3377
|
setTimeSignature(numerator: number, denominator: number): void;
|
|
@@ -3139,6 +3390,7 @@ declare class RealtimeEngine {
|
|
|
3139
3390
|
marker(id: number): EngineMarker;
|
|
3140
3391
|
seekMarker(markerId: number, renderFrame?: number): void;
|
|
3141
3392
|
setLoopFromMarkers(startMarkerId: number, endMarkerId: number): void;
|
|
3393
|
+
/** Set a metronome config; click lengths are limited to one second. */
|
|
3142
3394
|
setMetronome(config: EngineMetronomeConfig): void;
|
|
3143
3395
|
metronome(): Required<EngineMetronomeConfig>;
|
|
3144
3396
|
countInEndSample(startSample: number, bars: number): number;
|
|
@@ -3210,15 +3462,29 @@ declare class RealtimeEngine {
|
|
|
3210
3462
|
clearClipPage(providerId: number, pageIndex: number): void;
|
|
3211
3463
|
destroyClipPageProvider(providerId: number): void;
|
|
3212
3464
|
popClipPageRequest(): ClipPageRequest | null;
|
|
3465
|
+
/**
|
|
3466
|
+
* Moves one native request into the binding's persistent scalar scratch.
|
|
3467
|
+
* This avoids creating an embind JS object in AudioWorklet process().
|
|
3468
|
+
*/
|
|
3469
|
+
popClipPageRequestToScratch(): boolean;
|
|
3470
|
+
clipPageRequestScratchClipId(): number;
|
|
3471
|
+
clipPageRequestScratchSample(): number;
|
|
3472
|
+
/** Cumulative page misses dropped because the native bounded request queue was full. */
|
|
3473
|
+
clipPageRequestOverflowCount(): number;
|
|
3213
3474
|
setCaptureBuffer(numChannels: number, capacityFrames: number): void;
|
|
3214
3475
|
armCapture(armed?: boolean): void;
|
|
3215
3476
|
setCapturePunch(startSample: number, endSample: number, enabled?: boolean): void;
|
|
3216
|
-
setCaptureSource(source:
|
|
3477
|
+
setCaptureSource(source: EngineCaptureSource): void;
|
|
3478
|
+
/** Positive values delay capture relative to the punch window. */
|
|
3217
3479
|
setRecordOffsetSamples(offsetSamples: number): void;
|
|
3218
3480
|
setInputMonitor(enabled: boolean, gain?: number): void;
|
|
3219
3481
|
resetCapture(): void;
|
|
3220
3482
|
captureStatus(): EngineCaptureStatus;
|
|
3221
3483
|
capturedAudio(): Float32Array[];
|
|
3484
|
+
/**
|
|
3485
|
+
* Renders in place, adding engine output to `channels`. Zero each plane first
|
|
3486
|
+
* when it contains no upstream input.
|
|
3487
|
+
*/
|
|
3222
3488
|
process(channels: Float32Array[]): Float32Array[];
|
|
3223
3489
|
/**
|
|
3224
3490
|
* Allocates persistent per-channel WASM-heap scratch for the zero-copy
|
|
@@ -3235,6 +3501,7 @@ declare class RealtimeEngine {
|
|
|
3235
3501
|
getChannelBuffer(channel: number, numFrames: number): Float32Array;
|
|
3236
3502
|
/**
|
|
3237
3503
|
* Runs the engine in place over the prepared per-channel scratch buffers.
|
|
3504
|
+
* Zero each active span first when it contains no upstream input.
|
|
3238
3505
|
* Allocation-free: safe to call on the AudioWorklet render thread after
|
|
3239
3506
|
* `prepareChannels`.
|
|
3240
3507
|
*/
|
|
@@ -3244,6 +3511,18 @@ declare class RealtimeEngine {
|
|
|
3244
3511
|
bounceOffline(options: EngineBounceOptions): EngineBounceResult;
|
|
3245
3512
|
freezeOffline(options: EngineFreezeOptions): EngineFreezeResult;
|
|
3246
3513
|
drainTelemetry(maxRecords?: number): EngineTelemetry[];
|
|
3514
|
+
popTelemetryToScratch(): boolean;
|
|
3515
|
+
telemetryScratchType(): number;
|
|
3516
|
+
telemetryScratchError(): number;
|
|
3517
|
+
telemetryScratchRenderFrame(): number;
|
|
3518
|
+
telemetryScratchTimelineSample(): number;
|
|
3519
|
+
telemetryScratchAudibleTimelineSample(): number;
|
|
3520
|
+
telemetryScratchGraphLatencySamplesQ8(): number;
|
|
3521
|
+
telemetryScratchValue(): number;
|
|
3522
|
+
popMeterTelemetryToScratch(): boolean;
|
|
3523
|
+
meterScratchTargetId(): number;
|
|
3524
|
+
meterScratchRenderFrame(): number;
|
|
3525
|
+
meterScratchValue(field: number): number;
|
|
3247
3526
|
drainMeterTelemetry(maxRecords?: number): EngineMeterTelemetry[];
|
|
3248
3527
|
/**
|
|
3249
3528
|
* Drains pending meter telemetry as per-plane (wide) records for a surround
|
|
@@ -3263,6 +3542,14 @@ declare class RealtimeEngine {
|
|
|
3263
3542
|
configureScopeTelemetry(intervalFrames: number, bandCount: number): number;
|
|
3264
3543
|
/** Drains pending spectrum + vectorscope snapshots (per mix target). */
|
|
3265
3544
|
drainScopeTelemetry(maxRecords?: number): EngineScopeTelemetry[];
|
|
3545
|
+
popScopeTelemetryToScratch(): boolean;
|
|
3546
|
+
scopeScratchTargetId(): number;
|
|
3547
|
+
scopeScratchRenderFrame(): number;
|
|
3548
|
+
scopeScratchBandCount(): number;
|
|
3549
|
+
scopeScratchBand(index: number): number;
|
|
3550
|
+
scopeScratchPointCount(): number;
|
|
3551
|
+
scopeScratchPointLeft(index: number): number;
|
|
3552
|
+
scopeScratchPointRight(index: number): number;
|
|
3266
3553
|
destroy(): void;
|
|
3267
3554
|
}
|
|
3268
3555
|
declare class ClipPageProvider {
|
|
@@ -3283,11 +3570,19 @@ interface OpfsClipPageProviderOptions {
|
|
|
3283
3570
|
dataOffsetBytes?: number;
|
|
3284
3571
|
worker?: Worker;
|
|
3285
3572
|
terminateWorkerOnClose?: boolean;
|
|
3573
|
+
/** Internal bridge hook used to mirror a supplied page into an AudioWorklet. */
|
|
3574
|
+
onPageSupplied?: (pageIndex: number, channels: Float32Array[]) => void;
|
|
3575
|
+
/** Internal bridge hook used to mirror an eviction into an AudioWorklet. */
|
|
3576
|
+
onPageCleared?: (pageIndex: number) => void;
|
|
3577
|
+
/** Internal bridge hook called after the local provider is destroyed. */
|
|
3578
|
+
onClose?: () => void;
|
|
3286
3579
|
}
|
|
3287
3580
|
interface OpfsClipPageProviderBinding {
|
|
3288
3581
|
provider: ClipPageProvider;
|
|
3289
3582
|
supplyPage(pageIndex: number): Promise<boolean>;
|
|
3290
3583
|
supplyRequest(request: ClipPageRequest): Promise<boolean>;
|
|
3584
|
+
/** Evict one resident page from every configured consumer. */
|
|
3585
|
+
clearPage?(pageIndex: number): void;
|
|
3291
3586
|
close(): void;
|
|
3292
3587
|
}
|
|
3293
3588
|
declare const opfsClipPageWorkerSource = "\nconst sonareClipPageReadQueues = new Map();\n\nfunction sonareEnqueueClipPageRead(key, task) {\n const previous = sonareClipPageReadQueues.get(key) || Promise.resolve();\n const next = previous.catch(() => undefined).then(task);\n const queued = next.finally(() => {\n if (sonareClipPageReadQueues.get(key) === queued) {\n sonareClipPageReadQueues.delete(key);\n }\n });\n sonareClipPageReadQueues.set(key, queued);\n return next;\n}\n\nself.onmessage = async (event) => {\n const message = event.data;\n if (!message || message.type !== 'sonare:read-clip-page') return;\n const { requestId, path, pageIndex, numChannels, numSamples, pageFrames, dataOffsetBytes = 0 } = message;\n await sonareEnqueueClipPageRead(String(path), async () => {\n try {\n if (pageIndex < 0) {\n self.postMessage({ type: 'sonare:clip-page', requestId, pageIndex, ok: false });\n return;\n }\n const startFrame = pageIndex * pageFrames;\n if (startFrame >= numSamples) {\n self.postMessage({ type: 'sonare:clip-page', requestId, pageIndex, ok: false });\n return;\n }\n const root = await self.navigator.storage.getDirectory();\n let dir = root;\n const parts = String(path).split('/').filter(Boolean);\n for (let i = 0; i < parts.length - 1; ++i) {\n dir = await dir.getDirectoryHandle(parts[i]);\n }\n const fileHandle = await dir.getFileHandle(parts[parts.length - 1]);\n const access = await fileHandle.createSyncAccessHandle();\n try {\n const frames = Math.min(pageFrames, numSamples - startFrame);\n const frameBytes = numChannels * 4;\n const bytes = new Uint8Array(frames * frameBytes);\n let bytesReadTotal = 0;\n const readOffset = dataOffsetBytes + startFrame * frameBytes;\n while (bytesReadTotal < bytes.byteLength) {\n const bytesRead = access.read(bytes.subarray(bytesReadTotal), {\n at: readOffset + bytesReadTotal,\n });\n if (bytesRead <= 0) {\n break;\n }\n bytesReadTotal += bytesRead;\n }\n if (bytesReadTotal !== bytes.byteLength || bytesReadTotal % frameBytes !== 0) {\n self.postMessage({ type: 'sonare:clip-page', requestId, pageIndex, ok: false });\n return;\n }\n const framesRead = bytesReadTotal / frameBytes;\n const view = new DataView(bytes.buffer, 0, framesRead * frameBytes);\n const channelBuffers = Array.from({ length: numChannels }, () => new ArrayBuffer(framesRead * 4));\n for (let ch = 0; ch < numChannels; ++ch) {\n const channel = new Float32Array(channelBuffers[ch]);\n for (let frame = 0; frame < framesRead; ++frame) {\n channel[frame] = view.getFloat32((frame * numChannels + ch) * 4, true);\n }\n }\n self.postMessage(\n { type: 'sonare:clip-page', requestId, pageIndex, ok: true, frames: framesRead, channelBuffers },\n channelBuffers,\n );\n } finally {\n access.close();\n }\n } catch (error) {\n self.postMessage({\n type: 'sonare:clip-page',\n requestId,\n pageIndex,\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n};\n";
|
|
@@ -3300,7 +3595,16 @@ declare function createOpfsClipPageProvider(engine: RealtimeEngine, options: Opf
|
|
|
3300
3595
|
*/
|
|
3301
3596
|
interface ClipPageStreamerEngine {
|
|
3302
3597
|
/** Drain one pending audio-thread page-miss request, or `null` when empty. */
|
|
3303
|
-
popClipPageRequest():
|
|
3598
|
+
popClipPageRequest(): ClipPageStreamerRequest | null;
|
|
3599
|
+
}
|
|
3600
|
+
/**
|
|
3601
|
+
* A page miss reported by either a direct engine (`sample`) or the worklet
|
|
3602
|
+
* bridge (`pageIndex`). Exactly one position form is required.
|
|
3603
|
+
*/
|
|
3604
|
+
interface ClipPageStreamerRequest {
|
|
3605
|
+
clipId: number;
|
|
3606
|
+
sample?: number;
|
|
3607
|
+
pageIndex?: number;
|
|
3304
3608
|
}
|
|
3305
3609
|
/** A paged clip the streamer keeps fed from its backing store. */
|
|
3306
3610
|
interface ClipPageStreamSource {
|
|
@@ -3378,6 +3682,7 @@ declare class ClipPageStreamer {
|
|
|
3378
3682
|
close(): void;
|
|
3379
3683
|
private serviceFrontier;
|
|
3380
3684
|
private resetState;
|
|
3685
|
+
private clearPage;
|
|
3381
3686
|
}
|
|
3382
3687
|
interface OpfsClipStreamOptions extends OpfsClipPageProviderOptions {
|
|
3383
3688
|
/** Clip schedule id used in `setClips` (matches the page-miss request clipId). */
|
|
@@ -3390,20 +3695,30 @@ interface OpfsClipStreamOptions extends OpfsClipPageProviderOptions {
|
|
|
3390
3695
|
}
|
|
3391
3696
|
interface OpfsClipStream {
|
|
3392
3697
|
binding: OpfsClipPageProviderBinding;
|
|
3393
|
-
/** Pass
|
|
3698
|
+
/** Pass as `addClip`'s buffer argument to schedule the streaming clip. */
|
|
3394
3699
|
provider: ClipPageProvider;
|
|
3395
3700
|
}
|
|
3701
|
+
/** Structural seam implemented by the AudioWorklet-backed `SonareEngine`. */
|
|
3702
|
+
interface WorkletOpfsClipStreamHost {
|
|
3703
|
+
attachOpfsClipStream(options: OpfsClipStreamOptions): Promise<OpfsClipStream>;
|
|
3704
|
+
}
|
|
3396
3705
|
/**
|
|
3397
3706
|
* One-call wiring of an OPFS-backed streaming clip: creates the page provider,
|
|
3398
3707
|
* primes the leading pages, and registers it with `streamer` so later misses are
|
|
3399
3708
|
* serviced within the bounded window. Returns the binding (for `close`) and the
|
|
3400
|
-
* provider to schedule via `
|
|
3709
|
+
* provider to schedule via `addClip(trackId, provider, startPpq, { id: clipId })`.
|
|
3401
3710
|
*
|
|
3402
3711
|
* @param streamer Shared streamer pumped on the control thread.
|
|
3403
3712
|
* @param engine Engine the provider is created on (the same one `streamer` drives).
|
|
3404
3713
|
* @param options Provider options plus `clipId` and optional `primePages`.
|
|
3405
3714
|
*/
|
|
3406
3715
|
declare function attachOpfsClipStream(streamer: ClipPageStreamer, engine: RealtimeEngine, options: OpfsClipStreamOptions): Promise<OpfsClipStream>;
|
|
3716
|
+
/**
|
|
3717
|
+
* Worklet overload: delegates to `SonareEngine.attachOpfsClipStream`, which
|
|
3718
|
+
* creates the remote provider and drives this same sliding-window policy from
|
|
3719
|
+
* worklet page-miss messages.
|
|
3720
|
+
*/
|
|
3721
|
+
declare function attachOpfsClipStream(engine: WorkletOpfsClipStreamHost, options: OpfsClipStreamOptions): Promise<OpfsClipStream>;
|
|
3407
3722
|
|
|
3408
3723
|
/**
|
|
3409
3724
|
* Numeric error codes carried by a {@link SonareError}. Mirrors the C ABI
|
|
@@ -3419,6 +3734,7 @@ declare enum ErrorCode {
|
|
|
3419
3734
|
OutOfMemory = 5,
|
|
3420
3735
|
NotSupported = 6,
|
|
3421
3736
|
InvalidState = 7,
|
|
3737
|
+
Cancelled = 8,
|
|
3422
3738
|
Unknown = 99
|
|
3423
3739
|
}
|
|
3424
3740
|
/**
|
|
@@ -3436,6 +3752,12 @@ declare class SonareError extends Error {
|
|
|
3436
3752
|
/** Type guard: whether a caught value is a libsonare {@link SonareError}. */
|
|
3437
3753
|
declare function isSonareError(value: unknown): value is SonareError;
|
|
3438
3754
|
|
|
3755
|
+
declare function tone(request?: ToneRequest): Float32Array;
|
|
3756
|
+
declare function tone(frequency?: number, sampleRate?: number, duration?: number, phase?: number, amplitude?: number): Float32Array;
|
|
3757
|
+
declare function chirp(request?: ChirpRequest): Float32Array;
|
|
3758
|
+
declare function chirp(fmin?: number, fmax?: number, sampleRate?: number, duration?: number, linear?: boolean): Float32Array;
|
|
3759
|
+
declare function clicks(request: ClicksRequest): Float32Array;
|
|
3760
|
+
declare function clicks(times: Float32Array, sampleRate?: number, length?: number, frequency?: number, clickDuration?: number): Float32Array;
|
|
3439
3761
|
interface DbConversionRequest {
|
|
3440
3762
|
values: Float32Array;
|
|
3441
3763
|
ref?: number;
|
|
@@ -3453,6 +3775,27 @@ interface FrameSignalRequest {
|
|
|
3453
3775
|
frameLength: number;
|
|
3454
3776
|
hopLength: number;
|
|
3455
3777
|
}
|
|
3778
|
+
interface ToneRequest {
|
|
3779
|
+
frequency?: number;
|
|
3780
|
+
sampleRate?: number;
|
|
3781
|
+
duration?: number;
|
|
3782
|
+
phase?: number;
|
|
3783
|
+
amplitude?: number;
|
|
3784
|
+
}
|
|
3785
|
+
interface ChirpRequest {
|
|
3786
|
+
fmin?: number;
|
|
3787
|
+
fmax?: number;
|
|
3788
|
+
sampleRate?: number;
|
|
3789
|
+
duration?: number;
|
|
3790
|
+
linear?: boolean;
|
|
3791
|
+
}
|
|
3792
|
+
interface ClicksRequest {
|
|
3793
|
+
times: Float32Array;
|
|
3794
|
+
sampleRate?: number;
|
|
3795
|
+
length?: number;
|
|
3796
|
+
frequency?: number;
|
|
3797
|
+
clickDuration?: number;
|
|
3798
|
+
}
|
|
3456
3799
|
/** Canonical request form for pre/de-emphasis filters. */
|
|
3457
3800
|
interface EmphasisRequest {
|
|
3458
3801
|
samples: Float32Array;
|
|
@@ -3478,6 +3821,10 @@ interface FixFramesRequest {
|
|
|
3478
3821
|
xMax?: number;
|
|
3479
3822
|
pad?: boolean;
|
|
3480
3823
|
}
|
|
3824
|
+
interface OnsetBacktrackRequest {
|
|
3825
|
+
events: Int32Array;
|
|
3826
|
+
energy: Float32Array;
|
|
3827
|
+
}
|
|
3481
3828
|
/** Canonical request form for peak selection. */
|
|
3482
3829
|
interface PeakPickRequest {
|
|
3483
3830
|
values: Float32Array;
|
|
@@ -3504,6 +3851,14 @@ interface PcenRequest {
|
|
|
3504
3851
|
values: Float32Array;
|
|
3505
3852
|
nBins: number;
|
|
3506
3853
|
nFrames: number;
|
|
3854
|
+
sampleRate?: number;
|
|
3855
|
+
hopLength?: number;
|
|
3856
|
+
timeConstant?: number;
|
|
3857
|
+
gain?: number;
|
|
3858
|
+
bias?: number;
|
|
3859
|
+
power?: number;
|
|
3860
|
+
eps?: number;
|
|
3861
|
+
/** @deprecated Put PCEN fields directly on the request object. */
|
|
3507
3862
|
options?: Record<string, number>;
|
|
3508
3863
|
}
|
|
3509
3864
|
interface TempogramRequest {
|
|
@@ -3512,6 +3867,8 @@ interface TempogramRequest {
|
|
|
3512
3867
|
hopLength?: number;
|
|
3513
3868
|
winLength?: number;
|
|
3514
3869
|
mode?: TempogramMode;
|
|
3870
|
+
center?: boolean;
|
|
3871
|
+
norm?: boolean;
|
|
3515
3872
|
}
|
|
3516
3873
|
interface CyclicTempogramRequest {
|
|
3517
3874
|
onsetEnvelope: Float32Array;
|
|
@@ -3613,6 +3970,8 @@ declare function fixLength(request: FixLengthRequest): Float32Array;
|
|
|
3613
3970
|
declare function fixLength(values: Float32Array, targetSize: number, padValue?: number): Float32Array;
|
|
3614
3971
|
declare function fixFrames(request: FixFramesRequest): Int32Array;
|
|
3615
3972
|
declare function fixFrames(frames: Int32Array, xMin?: number, xMax?: number, pad?: boolean): Int32Array;
|
|
3973
|
+
declare function onsetBacktrack(request: OnsetBacktrackRequest): Int32Array;
|
|
3974
|
+
declare function onsetBacktrack(events: Int32Array, energy: Float32Array): Int32Array;
|
|
3616
3975
|
declare function peakPick(request: PeakPickRequest): Int32Array;
|
|
3617
3976
|
declare function peakPick(values: Float32Array, preMax: number, postMax: number, preAvg: number, postAvg: number, delta: number, wait: number): Int32Array;
|
|
3618
3977
|
declare function vectorNormalize(request: VectorNormalizeRequest): Float32Array;
|
|
@@ -3622,7 +3981,7 @@ declare function pcen(values: Float32Array, nBins: number, nFrames: number, opti
|
|
|
3622
3981
|
declare function tonnetz(request: TonnetzRequest): Float32Array;
|
|
3623
3982
|
declare function tonnetz(chromagram: Float32Array, nChroma: number, nFrames: number): Float32Array;
|
|
3624
3983
|
declare function tempogram(request: TempogramRequest): WasmTempogramResult;
|
|
3625
|
-
declare function tempogram(onsetEnvelope: Float32Array, sampleRate?: number, hopLength?: number, winLength?: number, mode?: TempogramMode): WasmTempogramResult;
|
|
3984
|
+
declare function tempogram(onsetEnvelope: Float32Array, sampleRate?: number, hopLength?: number, winLength?: number, mode?: TempogramMode, center?: boolean, norm?: boolean): WasmTempogramResult;
|
|
3626
3985
|
declare function cyclicTempogram(request: CyclicTempogramRequest): WasmCyclicTempogramResult;
|
|
3627
3986
|
declare function cyclicTempogram(onsetEnvelope: Float32Array, sampleRate?: number, hopLength?: number, winLength?: number, bpmMin?: number, nBins?: number): WasmCyclicTempogramResult;
|
|
3628
3987
|
declare function plp(request: PlpRequest): Float32Array;
|
|
@@ -3659,6 +4018,8 @@ interface FourierTempogramRequest extends GuardedOptions$2 {
|
|
|
3659
4018
|
sampleRate?: number;
|
|
3660
4019
|
hopLength?: number;
|
|
3661
4020
|
winLength?: number;
|
|
4021
|
+
center?: boolean;
|
|
4022
|
+
norm?: boolean;
|
|
3662
4023
|
}
|
|
3663
4024
|
interface TempogramRatioRequest extends GuardedOptions$2 {
|
|
3664
4025
|
tempogramData: Float32Array;
|
|
@@ -3695,6 +4056,9 @@ interface LufsRequest extends ValidateOptions {
|
|
|
3695
4056
|
interface NnlsChromaRequest extends GuardedOptions$2 {
|
|
3696
4057
|
samples: Float32Array;
|
|
3697
4058
|
sampleRate?: number;
|
|
4059
|
+
enableStftBlend?: boolean;
|
|
4060
|
+
stftBlendWeight?: number;
|
|
4061
|
+
stftBlendNFft?: number;
|
|
3698
4062
|
}
|
|
3699
4063
|
/**
|
|
3700
4064
|
* Compute NNLS (non-negative least squares) chromagram.
|
|
@@ -3704,7 +4068,7 @@ interface NnlsChromaRequest extends GuardedOptions$2 {
|
|
|
3704
4068
|
* @returns NNLS chroma result
|
|
3705
4069
|
*/
|
|
3706
4070
|
declare function nnlsChroma(request: NnlsChromaRequest): WasmNnlsChromaResult;
|
|
3707
|
-
declare function nnlsChroma(samples: Float32Array, sampleRate?: number, options?:
|
|
4071
|
+
declare function nnlsChroma(samples: Float32Array, sampleRate?: number, options?: Omit<NnlsChromaRequest, 'samples' | 'sampleRate'>): WasmNnlsChromaResult;
|
|
3708
4072
|
/**
|
|
3709
4073
|
* Compute the Constant-Q Transform magnitude.
|
|
3710
4074
|
*
|
|
@@ -3753,7 +4117,8 @@ declare function hybridCqt(samples: Float32Array, sampleRate?: number, hopLength
|
|
|
3753
4117
|
* @param fmin - Minimum frequency in Hz (default: 32.70319566257483, C1)
|
|
3754
4118
|
* @param nBins - Number of frequency bins (default: 84)
|
|
3755
4119
|
* @param binsPerOctave - Bins per octave (default: 12)
|
|
3756
|
-
* @param gamma - Bandwidth offset;
|
|
4120
|
+
* @param gamma - Bandwidth offset; negative selects the automatic ERB-derived
|
|
4121
|
+
* value, while 0 is equivalent to CQT (default: -1)
|
|
3757
4122
|
* @returns VQT magnitude result (same shape as CQT)
|
|
3758
4123
|
*/
|
|
3759
4124
|
declare function vqt(request: VqtRequest): CqtResult;
|
|
@@ -3794,7 +4159,7 @@ interface MelodyOptions {
|
|
|
3794
4159
|
*/
|
|
3795
4160
|
usePyin?: boolean;
|
|
3796
4161
|
/**
|
|
3797
|
-
* When {@link usePyin} is `true`,
|
|
4162
|
+
* When {@link usePyin} is `true`, zero-pad by `frameLength / 2` so frame
|
|
3798
4163
|
* `i` is centered at `i * hopLength` (matches `librosa.pyin(center=True)`).
|
|
3799
4164
|
* Ignored by the plain-YIN path. Defaults to `true`.
|
|
3800
4165
|
*/
|
|
@@ -3845,7 +4210,7 @@ declare function onsetStrengthMulti(samples: Float32Array, sampleRate?: number,
|
|
|
3845
4210
|
* @returns Fourier tempogram result
|
|
3846
4211
|
*/
|
|
3847
4212
|
declare function fourierTempogram(request: FourierTempogramRequest): WasmFourierTempogramResult;
|
|
3848
|
-
declare function fourierTempogram(onsetEnvelope: Float32Array, sampleRate?: number, hopLength?: number, winLength?: number, options?: GuardedOptions$2): WasmFourierTempogramResult;
|
|
4213
|
+
declare function fourierTempogram(onsetEnvelope: Float32Array, sampleRate?: number, hopLength?: number, winLength?: number, center?: boolean, norm?: boolean, options?: GuardedOptions$2): WasmFourierTempogramResult;
|
|
3849
4214
|
/**
|
|
3850
4215
|
* Compute tempogram ratio features.
|
|
3851
4216
|
*
|
|
@@ -3900,8 +4265,8 @@ declare function shortTermLufs(samples: Float32Array, sampleRate?: number, optio
|
|
|
3900
4265
|
* @param hopLength - Hop length (default: 512)
|
|
3901
4266
|
* @param fmin - Minimum frequency in Hz (default: 65)
|
|
3902
4267
|
* @param fmax - Maximum frequency in Hz (default: 2093)
|
|
3903
|
-
* @param threshold - YIN threshold (default: 0.
|
|
3904
|
-
* @param fillNa -
|
|
4268
|
+
* @param threshold - YIN threshold (default: 0.1)
|
|
4269
|
+
* @param fillNa - Retained for compatibility; YIN always returns a finite per-frame estimate.
|
|
3905
4270
|
* @returns Pitch detection result
|
|
3906
4271
|
*/
|
|
3907
4272
|
interface PitchYinRequest {
|
|
@@ -3914,6 +4279,18 @@ interface PitchYinRequest {
|
|
|
3914
4279
|
threshold?: number;
|
|
3915
4280
|
fillNa?: boolean;
|
|
3916
4281
|
}
|
|
4282
|
+
interface PiptrackRequest {
|
|
4283
|
+
samples: Float32Array;
|
|
4284
|
+
sampleRate?: number;
|
|
4285
|
+
nFft?: number;
|
|
4286
|
+
hopLength?: number;
|
|
4287
|
+
fmin?: number;
|
|
4288
|
+
fmax?: number;
|
|
4289
|
+
threshold?: number;
|
|
4290
|
+
}
|
|
4291
|
+
/** Per-bin spectral pitch candidates and peak magnitudes (librosa.piptrack). */
|
|
4292
|
+
declare function piptrack(request: PiptrackRequest): PiptrackResult;
|
|
4293
|
+
declare function piptrack(samples: Float32Array, sampleRate?: number, nFft?: number, hopLength?: number, fmin?: number, fmax?: number, threshold?: number): PiptrackResult;
|
|
3917
4294
|
declare function pitchYin(request: PitchYinRequest): PitchResult;
|
|
3918
4295
|
declare function pitchYin(samples: Float32Array, sampleRate?: number, frameLength?: number, hopLength?: number, fmin?: number, fmax?: number, threshold?: number, fillNa?: boolean): PitchResult;
|
|
3919
4296
|
/**
|
|
@@ -3925,7 +4302,7 @@ declare function pitchYin(samples: Float32Array, sampleRate?: number, frameLengt
|
|
|
3925
4302
|
* @param hopLength - Hop length (default: 512)
|
|
3926
4303
|
* @param fmin - Minimum frequency in Hz (default: 65)
|
|
3927
4304
|
* @param fmax - Maximum frequency in Hz (default: 2093)
|
|
3928
|
-
* @param threshold - YIN threshold (default: 0.
|
|
4305
|
+
* @param threshold - YIN threshold (default: 0.1)
|
|
3929
4306
|
* @param fillNa - If true, return 0 for unvoiced f0 frames; otherwise keep NaN (default: false)
|
|
3930
4307
|
* @returns Pitch detection result
|
|
3931
4308
|
*/
|
|
@@ -3933,6 +4310,22 @@ interface PitchPyinRequest extends PitchYinRequest {
|
|
|
3933
4310
|
}
|
|
3934
4311
|
declare function pitchPyin(request: PitchPyinRequest): PitchResult;
|
|
3935
4312
|
declare function pitchPyin(samples: Float32Array, sampleRate?: number, frameLength?: number, hopLength?: number, fmin?: number, fmax?: number, threshold?: number, fillNa?: boolean): PitchResult;
|
|
4313
|
+
/** Parameters for segmenting an F0 track into stable monophonic notes. */
|
|
4314
|
+
interface NoteSegmentsRequest {
|
|
4315
|
+
f0Hz: Float32Array;
|
|
4316
|
+
voicedProb: Float32Array;
|
|
4317
|
+
frameRate: number;
|
|
4318
|
+
segmentationThresholdCents?: number;
|
|
4319
|
+
minNoteMs?: number;
|
|
4320
|
+
referenceHz?: number;
|
|
4321
|
+
}
|
|
4322
|
+
/**
|
|
4323
|
+
* Segment a caller-supplied monophonic F0 track into stable note regions.
|
|
4324
|
+
*
|
|
4325
|
+
* `f0Hz` and `voicedProb` must have the same non-zero length. Zero-Hz frames
|
|
4326
|
+
* and probabilities below 0.5 are treated as unvoiced.
|
|
4327
|
+
*/
|
|
4328
|
+
declare function noteSegments(request: NoteSegmentsRequest): NoteSegment[];
|
|
3936
4329
|
|
|
3937
4330
|
/**
|
|
3938
4331
|
* Resample audio to a different sample rate.
|
|
@@ -4009,6 +4402,59 @@ interface NnFilterRequest {
|
|
|
4009
4402
|
k?: number;
|
|
4010
4403
|
width?: number;
|
|
4011
4404
|
}
|
|
4405
|
+
interface SegmentCrossSimilarityRequest {
|
|
4406
|
+
x: Float32Array;
|
|
4407
|
+
xRows: number;
|
|
4408
|
+
xCols: number;
|
|
4409
|
+
y: Float32Array;
|
|
4410
|
+
yRows: number;
|
|
4411
|
+
yCols: number;
|
|
4412
|
+
k?: number;
|
|
4413
|
+
metric?: 'cosine' | 'euclidean';
|
|
4414
|
+
mode?: 'connectivity' | 'affinity';
|
|
4415
|
+
}
|
|
4416
|
+
interface SegmentRecurrenceMatrixRequest {
|
|
4417
|
+
data: Float32Array;
|
|
4418
|
+
rows: number;
|
|
4419
|
+
cols: number;
|
|
4420
|
+
k?: number;
|
|
4421
|
+
width?: number;
|
|
4422
|
+
sym?: boolean;
|
|
4423
|
+
metric?: 'cosine' | 'euclidean';
|
|
4424
|
+
mode?: 'connectivity' | 'affinity';
|
|
4425
|
+
}
|
|
4426
|
+
interface SegmentRecurrenceToLagRequest {
|
|
4427
|
+
recurrence: Float32Array;
|
|
4428
|
+
n: number;
|
|
4429
|
+
pad?: boolean;
|
|
4430
|
+
}
|
|
4431
|
+
interface SegmentLagToRecurrenceRequest {
|
|
4432
|
+
lag: Float32Array;
|
|
4433
|
+
rows: number;
|
|
4434
|
+
lags: number;
|
|
4435
|
+
}
|
|
4436
|
+
interface SegmentSubsegmentRequest {
|
|
4437
|
+
data: Float32Array;
|
|
4438
|
+
rows: number;
|
|
4439
|
+
cols: number;
|
|
4440
|
+
boundaries: Int32Array;
|
|
4441
|
+
nSegments?: number;
|
|
4442
|
+
}
|
|
4443
|
+
interface SegmentAgglomerativeRequest {
|
|
4444
|
+
data: Float32Array;
|
|
4445
|
+
rows: number;
|
|
4446
|
+
cols: number;
|
|
4447
|
+
k: number;
|
|
4448
|
+
linkage?: 'average' | 'single' | 'complete' | 'ward';
|
|
4449
|
+
}
|
|
4450
|
+
interface SegmentPathEnhanceRequest {
|
|
4451
|
+
recurrence: Float32Array;
|
|
4452
|
+
n: number;
|
|
4453
|
+
win: number;
|
|
4454
|
+
maxRatio?: number;
|
|
4455
|
+
minRatio?: number;
|
|
4456
|
+
nFilters?: number;
|
|
4457
|
+
}
|
|
4012
4458
|
interface RemixRequest {
|
|
4013
4459
|
samples: Float32Array;
|
|
4014
4460
|
intervals: Int32Array | ArrayLike<number>;
|
|
@@ -4106,7 +4552,7 @@ declare function remix(samples: Float32Array, intervals: Int32Array | ArrayLike<
|
|
|
4106
4552
|
* Phase-vocoder time-scale modification (rate > 1 faster, < 1 slower).
|
|
4107
4553
|
*/
|
|
4108
4554
|
declare function phaseVocoder(request: PhaseVocoderRequest): Float32Array;
|
|
4109
|
-
declare function phaseVocoder(samples: Float32Array,
|
|
4555
|
+
declare function phaseVocoder(samples: Float32Array, sampleRate: number, rate: number, nFft?: number, hopLength?: number): Float32Array;
|
|
4110
4556
|
/**
|
|
4111
4557
|
* HPSS into harmonic / percussive / residual signals.
|
|
4112
4558
|
*/
|
|
@@ -4139,8 +4585,10 @@ declare function ebur128LoudnessRange(samples: Float32Array, sampleRate?: number
|
|
|
4139
4585
|
* @param hopLength - Hop length (default: 512)
|
|
4140
4586
|
* @returns Spectral bandwidth in Hz for each frame
|
|
4141
4587
|
*/
|
|
4142
|
-
declare function spectralBandwidth(request: SpectralFrameRequest
|
|
4143
|
-
|
|
4588
|
+
declare function spectralBandwidth(request: SpectralFrameRequest & {
|
|
4589
|
+
p?: number;
|
|
4590
|
+
}): Float32Array;
|
|
4591
|
+
declare function spectralBandwidth(samples: Float32Array, sampleRate?: number, nFft?: number, hopLength?: number, p?: number): Float32Array;
|
|
4144
4592
|
/**
|
|
4145
4593
|
* Compute spectral rolloff frequency.
|
|
4146
4594
|
*
|
|
@@ -4164,6 +4612,10 @@ declare function spectralRolloff(samples: Float32Array, sampleRate?: number, nFf
|
|
|
4164
4612
|
*/
|
|
4165
4613
|
declare function spectralFlatness(request: SpectralFrameRequest): Float32Array;
|
|
4166
4614
|
declare function spectralFlatness(samples: Float32Array, sampleRate?: number, nFft?: number, hopLength?: number): Float32Array;
|
|
4615
|
+
declare function spectralFlux(request: SpectralFrameRequest & {
|
|
4616
|
+
lag?: number;
|
|
4617
|
+
}): Float32Array;
|
|
4618
|
+
declare function spectralFlux(samples: Float32Array, sampleRate?: number, nFft?: number, hopLength?: number, lag?: number): Float32Array;
|
|
4167
4619
|
/**
|
|
4168
4620
|
* Compute zero crossing rate.
|
|
4169
4621
|
*
|
|
@@ -4186,6 +4638,20 @@ declare function zeroCrossingRate(samples: Float32Array, sampleRate?: number, fr
|
|
|
4186
4638
|
*/
|
|
4187
4639
|
declare function rmsEnergy(request: ZeroCrossingRateRequest): Float32Array;
|
|
4188
4640
|
declare function rmsEnergy(samples: Float32Array, sampleRate?: number, frameLength?: number, hopLength?: number): Float32Array;
|
|
4641
|
+
/** Column-wise cross-similarity (librosa.segment.cross_similarity). */
|
|
4642
|
+
declare function segmentCrossSimilarity(request: SegmentCrossSimilarityRequest): SegmentMatrix;
|
|
4643
|
+
/** Self-similarity recurrence matrix (librosa.segment.recurrence_matrix). */
|
|
4644
|
+
declare function segmentRecurrenceMatrix(request: SegmentRecurrenceMatrixRequest): SegmentMatrix;
|
|
4645
|
+
/** Convert an `n × n` recurrence matrix to a lag matrix. */
|
|
4646
|
+
declare function segmentRecurrenceToLag(request: SegmentRecurrenceToLagRequest): SegmentMatrix;
|
|
4647
|
+
/** Convert a lag matrix back to an `n × n` recurrence matrix. */
|
|
4648
|
+
declare function segmentLagToRecurrence(request: SegmentLagToRecurrenceRequest): SegmentMatrix;
|
|
4649
|
+
/** Refine frame boundaries by clustering within each parent segment. */
|
|
4650
|
+
declare function segmentSubsegment(request: SegmentSubsegmentRequest): Int32Array;
|
|
4651
|
+
/** Cluster feature columns and return one label per column. */
|
|
4652
|
+
declare function segmentAgglomerative(request: SegmentAgglomerativeRequest): Int32Array;
|
|
4653
|
+
/** Enhance diagonal paths in an `n × n` recurrence matrix. */
|
|
4654
|
+
declare function segmentPathEnhance(request: SegmentPathEnhanceRequest): SegmentMatrix;
|
|
4189
4655
|
|
|
4190
4656
|
type GuardedOptions$1 = ValidateOptions;
|
|
4191
4657
|
/** Canonical request form for basic frame-based spectrogram features. */
|
|
@@ -4200,6 +4666,7 @@ interface ChromaSpectrogramRequest extends GuardedOptions$1 {
|
|
|
4200
4666
|
sampleRate?: number;
|
|
4201
4667
|
hopLength?: number;
|
|
4202
4668
|
nChroma?: number;
|
|
4669
|
+
binsPerOctave?: number;
|
|
4203
4670
|
}
|
|
4204
4671
|
interface MelSpectrogramRequest extends SpectrogramRequest {
|
|
4205
4672
|
nMels?: number;
|
|
@@ -4211,11 +4678,23 @@ interface MfccRequest extends MelSpectrogramRequest {
|
|
|
4211
4678
|
nMfcc?: number;
|
|
4212
4679
|
lifter?: number;
|
|
4213
4680
|
}
|
|
4681
|
+
interface MelDeltaRequest extends GuardedOptions$1 {
|
|
4682
|
+
features: Float32Array;
|
|
4683
|
+
nFeatures: number;
|
|
4684
|
+
nFrames: number;
|
|
4685
|
+
width?: number;
|
|
4686
|
+
}
|
|
4687
|
+
interface ReassignedSpectrogramRequest extends SpectrogramRequest {
|
|
4688
|
+
refPower?: number;
|
|
4689
|
+
fillNan?: boolean;
|
|
4690
|
+
}
|
|
4214
4691
|
interface MfccToMelRequest extends GuardedOptions$1 {
|
|
4215
4692
|
mfccCoefficients: Float32Array;
|
|
4216
4693
|
nMfcc: number;
|
|
4217
4694
|
nFrames: number;
|
|
4218
4695
|
nMels?: number;
|
|
4696
|
+
/** Lifter used by the forward MFCC transform; zero means no liftering. */
|
|
4697
|
+
lifter?: number;
|
|
4219
4698
|
}
|
|
4220
4699
|
/** Canonical request form for reconstruction from a Mel power spectrogram. */
|
|
4221
4700
|
interface MelToStftRequest extends GuardedOptions$1 {
|
|
@@ -4233,6 +4712,16 @@ interface MelToAudioRequest extends MelToStftRequest {
|
|
|
4233
4712
|
hopLength?: number;
|
|
4234
4713
|
nIter?: number;
|
|
4235
4714
|
}
|
|
4715
|
+
interface GriffinLimRequest extends GuardedOptions$1 {
|
|
4716
|
+
magnitude: Float32Array;
|
|
4717
|
+
nBins: number;
|
|
4718
|
+
nFrames: number;
|
|
4719
|
+
sampleRate?: number;
|
|
4720
|
+
nFft?: number;
|
|
4721
|
+
hopLength?: number;
|
|
4722
|
+
nIter?: number;
|
|
4723
|
+
momentum?: number;
|
|
4724
|
+
}
|
|
4236
4725
|
/** Canonical request form for Griffin-Lim reconstruction from MFCCs. */
|
|
4237
4726
|
interface MfccToAudioRequest extends MfccToMelRequest {
|
|
4238
4727
|
sampleRate?: number;
|
|
@@ -4298,7 +4787,7 @@ declare function stftDb(samples: Float32Array, sampleRate?: number, nFft?: numbe
|
|
|
4298
4787
|
* @returns Chroma result
|
|
4299
4788
|
*/
|
|
4300
4789
|
declare function chromaCens(request: ChromaSpectrogramRequest): ChromaResult;
|
|
4301
|
-
declare function chromaCens(samples: Float32Array, sampleRate?: number, hopLength?: number, nChroma?: number, options?: GuardedOptions$1): ChromaResult;
|
|
4790
|
+
declare function chromaCens(samples: Float32Array, sampleRate?: number, hopLength?: number, nChroma?: number, binsPerOctave?: number, options?: GuardedOptions$1): ChromaResult;
|
|
4302
4791
|
/**
|
|
4303
4792
|
* Compute a constant-Q chromagram (librosa.feature.chroma_cqt).
|
|
4304
4793
|
*
|
|
@@ -4309,7 +4798,7 @@ declare function chromaCens(samples: Float32Array, sampleRate?: number, hopLengt
|
|
|
4309
4798
|
* @returns Chroma result
|
|
4310
4799
|
*/
|
|
4311
4800
|
declare function chromaCqt(request: ChromaSpectrogramRequest): ChromaResult;
|
|
4312
|
-
declare function chromaCqt(samples: Float32Array, sampleRate?: number, hopLength?: number, nChroma?: number, options?: GuardedOptions$1): ChromaResult;
|
|
4801
|
+
declare function chromaCqt(samples: Float32Array, sampleRate?: number, hopLength?: number, nChroma?: number, binsPerOctave?: number, options?: GuardedOptions$1): ChromaResult;
|
|
4313
4802
|
/**
|
|
4314
4803
|
* Compute low-frequency bass chroma.
|
|
4315
4804
|
*
|
|
@@ -4354,6 +4843,12 @@ declare function melSpectrogram(samples: Float32Array, sampleRate?: number, nFft
|
|
|
4354
4843
|
*/
|
|
4355
4844
|
declare function mfcc(request: MfccRequest): MfccResult;
|
|
4356
4845
|
declare function mfcc(samples: Float32Array, sampleRate?: number, nFft?: number, hopLength?: number, nMels?: number, nMfcc?: number, fmin?: number, fmax?: number, htk?: boolean, lifter?: number, options?: GuardedOptions$1): MfccResult;
|
|
4846
|
+
/** First-order regression delta of a row-major feature matrix. */
|
|
4847
|
+
declare function melDelta(request: MelDeltaRequest): Float32Array;
|
|
4848
|
+
declare function melDelta(features: Float32Array, nFeatures: number, nFrames: number, width?: number): Float32Array;
|
|
4849
|
+
/** Auger-Flandrin reassigned spectrogram (row-major [nBins x nFrames] arrays). */
|
|
4850
|
+
declare function reassignedSpectrogram(request: ReassignedSpectrogramRequest): ReassignedSpectrogramResult;
|
|
4851
|
+
declare function reassignedSpectrogram(samples: Float32Array, sampleRate?: number, nFft?: number, hopLength?: number, refPower?: number, fillNan?: boolean): ReassignedSpectrogramResult;
|
|
4357
4852
|
/**
|
|
4358
4853
|
* Approximate inverse of a Mel filterbank: Mel power spectrogram -> STFT power
|
|
4359
4854
|
* spectrogram. Mirrors `feature::mel_to_stft`.
|
|
@@ -4388,6 +4883,9 @@ declare function melToStft(melPower: Float32Array, nMels: number, nFrames: numbe
|
|
|
4388
4883
|
*/
|
|
4389
4884
|
declare function melToAudio(request: MelToAudioRequest): Float32Array;
|
|
4390
4885
|
declare function melToAudio(melPower: Float32Array, nMels: number, nFrames: number, sampleRate?: number, nFft?: number, hopLength?: number, fmin?: number, fmax?: number, nIter?: number, htk?: boolean, options?: GuardedOptions$1): Float32Array;
|
|
4886
|
+
/** Reconstruct audio from an STFT magnitude matrix via Griffin-Lim. */
|
|
4887
|
+
declare function griffinLim(request: GriffinLimRequest): Float32Array;
|
|
4888
|
+
declare function griffinLim(magnitude: Float32Array, nBins: number, nFrames: number, sampleRate?: number, nFft?: number, hopLength?: number, nIter?: number, momentum?: number, options?: GuardedOptions$1): Float32Array;
|
|
4391
4889
|
/**
|
|
4392
4890
|
* Invert MFCC coefficients back to a Mel power spectrogram. Mirrors
|
|
4393
4891
|
* `feature::mfcc_to_mel`.
|
|
@@ -4399,7 +4897,7 @@ declare function melToAudio(melPower: Float32Array, nMels: number, nFrames: numb
|
|
|
4399
4897
|
* @returns Mel power spectrogram result
|
|
4400
4898
|
*/
|
|
4401
4899
|
declare function mfccToMel(request: MfccToMelRequest): MelPowerResult;
|
|
4402
|
-
declare function mfccToMel(mfccCoefficients: Float32Array, nMfcc: number, nFrames: number, nMels?: number, options?: GuardedOptions$1): MelPowerResult;
|
|
4900
|
+
declare function mfccToMel(mfccCoefficients: Float32Array, nMfcc: number, nFrames: number, nMels?: number, lifter?: number, options?: GuardedOptions$1): MelPowerResult;
|
|
4403
4901
|
/**
|
|
4404
4902
|
* Reconstruct audio directly from MFCC coefficients via Griffin-Lim. Mirrors
|
|
4405
4903
|
* `feature::mfcc_to_audio`.
|
|
@@ -4418,7 +4916,7 @@ declare function mfccToMel(mfccCoefficients: Float32Array, nMfcc: number, nFrame
|
|
|
4418
4916
|
* @returns Reconstructed audio samples (mono, float32)
|
|
4419
4917
|
*/
|
|
4420
4918
|
declare function mfccToAudio(request: MfccToAudioRequest): Float32Array;
|
|
4421
|
-
declare function mfccToAudio(mfccCoefficients: Float32Array, nMfcc: number, nFrames: number, nMels?: number, sampleRate?: number, nFft?: number, hopLength?: number, fmin?: number, fmax?: number, nIter?: number, htk?: boolean, options?: GuardedOptions$1): Float32Array;
|
|
4919
|
+
declare function mfccToAudio(mfccCoefficients: Float32Array, nMfcc: number, nFrames: number, nMels?: number, sampleRate?: number, nFft?: number, hopLength?: number, fmin?: number, fmax?: number, nIter?: number, htk?: boolean, lifter?: number, options?: GuardedOptions$1): Float32Array;
|
|
4422
4920
|
/**
|
|
4423
4921
|
* Compute STFT chromagram (librosa.feature.chroma_stft).
|
|
4424
4922
|
*
|
|
@@ -4494,7 +4992,10 @@ declare enum SonareEngineTelemetryError {
|
|
|
4494
4992
|
SmoothedParameterCapacity = 13,
|
|
4495
4993
|
CommandBacklogDeferred = 14,
|
|
4496
4994
|
ClipPageUnderrun = 15,
|
|
4497
|
-
InsertAutomationOverflow = 16
|
|
4995
|
+
InsertAutomationOverflow = 16,
|
|
4996
|
+
MidiClockOverflow = 17,
|
|
4997
|
+
MetronomeOverflow = 18,
|
|
4998
|
+
InvalidCommand = 19
|
|
4498
4999
|
}
|
|
4499
5000
|
interface SonareMeterRingBuffer {
|
|
4500
5001
|
sharedBuffer: SharedArrayBuffer;
|
|
@@ -4526,6 +5027,12 @@ interface SonareScopeRingBuffer {
|
|
|
4526
5027
|
bands: number;
|
|
4527
5028
|
maxPoints: number;
|
|
4528
5029
|
}
|
|
5030
|
+
interface SonareExternalMidiRingBuffer {
|
|
5031
|
+
sharedBuffer: SharedArrayBuffer;
|
|
5032
|
+
header: Int32Array;
|
|
5033
|
+
records: Uint32Array;
|
|
5034
|
+
capacity: number;
|
|
5035
|
+
}
|
|
4529
5036
|
interface SonareEngineCommandRecord {
|
|
4530
5037
|
type: SonareEngineCommandType | number;
|
|
4531
5038
|
targetId?: number;
|
|
@@ -4554,6 +5061,12 @@ interface SonareEngineTelemetryRingBuffer {
|
|
|
4554
5061
|
view: DataView;
|
|
4555
5062
|
capacity: number;
|
|
4556
5063
|
}
|
|
5064
|
+
interface SonareClipPageRequestRingBuffer {
|
|
5065
|
+
sharedBuffer: SharedArrayBuffer;
|
|
5066
|
+
header: Int32Array;
|
|
5067
|
+
records: Uint32Array;
|
|
5068
|
+
capacity: number;
|
|
5069
|
+
}
|
|
4557
5070
|
|
|
4558
5071
|
interface SonareRealtimeEngineWorkletProcessorOptions {
|
|
4559
5072
|
wasmBinary?: ArrayBuffer | Uint8Array;
|
|
@@ -4573,6 +5086,16 @@ interface SonareRealtimeEngineWorkletProcessorOptions {
|
|
|
4573
5086
|
scopeBands?: number;
|
|
4574
5087
|
scopeSharedBuffer?: SharedArrayBuffer;
|
|
4575
5088
|
scopeRingCapacity?: number;
|
|
5089
|
+
/**
|
|
5090
|
+
* Lock-free SPSC queue for clip-page cache misses. Supplying this is required
|
|
5091
|
+
* for realtime-safe OPFS streaming: it avoids both embind object creation and
|
|
5092
|
+
* postMessage structured cloning from AudioWorklet process().
|
|
5093
|
+
*/
|
|
5094
|
+
clipPageRequestSharedBuffer?: SharedArrayBuffer;
|
|
5095
|
+
clipPageRequestRingCapacity?: number;
|
|
5096
|
+
/** Lock-free worklet-to-main-thread MIDI-1 output ring. */
|
|
5097
|
+
externalMidiSharedBuffer?: SharedArrayBuffer;
|
|
5098
|
+
externalMidiRingCapacity?: number;
|
|
4576
5099
|
}
|
|
4577
5100
|
interface SonareRealtimeEngineNodeCapabilities {
|
|
4578
5101
|
mode: 'sab' | 'postMessage';
|
|
@@ -4580,6 +5103,10 @@ interface SonareRealtimeEngineNodeCapabilities {
|
|
|
4580
5103
|
sharedArrayBuffer: boolean;
|
|
4581
5104
|
atomics: boolean;
|
|
4582
5105
|
audioWorklet: boolean;
|
|
5106
|
+
/** True only when clip-page misses use the bounded SAB ring. */
|
|
5107
|
+
clipPageRequestsRealtimeSafe: boolean;
|
|
5108
|
+
/** True when external MIDI uses the SAB output ring rather than postMessage. */
|
|
5109
|
+
externalMidiRealtimeSafe: boolean;
|
|
4583
5110
|
engineAbiVersion?: number;
|
|
4584
5111
|
expectedEngineAbiVersion?: number;
|
|
4585
5112
|
abiCompatible?: boolean;
|
|
@@ -4605,6 +5132,12 @@ interface SonareWorkletExternalMidiEvent {
|
|
|
4605
5132
|
/** MIDI 1.0 status + data bytes (1..3 entries). */
|
|
4606
5133
|
bytes: number[];
|
|
4607
5134
|
}
|
|
5135
|
+
/** A control-plane sync message that the worklet rejected without crashing. */
|
|
5136
|
+
interface SonareEngineSyncErrorMessage {
|
|
5137
|
+
type: 'syncError';
|
|
5138
|
+
syncType: SonareEngineSyncMessage['type'];
|
|
5139
|
+
message: string;
|
|
5140
|
+
}
|
|
4608
5141
|
interface SonareEngineSyncClipsMessage {
|
|
4609
5142
|
type: 'syncClips';
|
|
4610
5143
|
clips: EngineClip[];
|
|
@@ -4618,7 +5151,8 @@ interface SonareEngineSyncClipsDeltaMessage {
|
|
|
4618
5151
|
interface SonareEngineSyncClipPageProviderMessage {
|
|
4619
5152
|
type: 'syncClipPageProvider';
|
|
4620
5153
|
clipId: number;
|
|
4621
|
-
clip
|
|
5154
|
+
/** Omitted when an OPFS stream is primed before its clip is scheduled. */
|
|
5155
|
+
clip?: EngineClip;
|
|
4622
5156
|
numChannels: number;
|
|
4623
5157
|
numSamples: number;
|
|
4624
5158
|
pageFrames: number;
|
|
@@ -4630,10 +5164,41 @@ interface SonareEngineSyncClipPageMessage {
|
|
|
4630
5164
|
pageIndex: number;
|
|
4631
5165
|
channels: Float32Array[];
|
|
4632
5166
|
}
|
|
5167
|
+
/** Evicts one page after the main-thread sliding window advances. */
|
|
5168
|
+
interface SonareEngineSyncClipPageClearMessage {
|
|
5169
|
+
type: 'syncClipPageClear';
|
|
5170
|
+
clipId: number;
|
|
5171
|
+
pageIndex: number;
|
|
5172
|
+
}
|
|
5173
|
+
/** Releases a provider whose clip was removed or whose stream was closed. */
|
|
5174
|
+
interface SonareEngineSyncClipPageDestroyMessage {
|
|
5175
|
+
type: 'syncClipPageDestroy';
|
|
5176
|
+
clipId: number;
|
|
5177
|
+
}
|
|
4633
5178
|
/** Makes a fully supplied paged clip visible to the audio engine. */
|
|
4634
5179
|
interface SonareEngineSyncClipPageCommitMessage {
|
|
4635
5180
|
type: 'syncClipPageCommit';
|
|
4636
5181
|
clipId: number;
|
|
5182
|
+
/**
|
|
5183
|
+
* Clip schedule to publish with a provider that was primed before its
|
|
5184
|
+
* schedule was known. The original pre-baked push path supplies it on the
|
|
5185
|
+
* provider message instead.
|
|
5186
|
+
*/
|
|
5187
|
+
clip?: EngineClip;
|
|
5188
|
+
}
|
|
5189
|
+
/**
|
|
5190
|
+
* A bounded batch of page misses emitted by the AudioWorklet. The main thread
|
|
5191
|
+
* resolves these from OPFS and responds with `syncClipPage`; a missing page is
|
|
5192
|
+
* silent until that response arrives.
|
|
5193
|
+
*/
|
|
5194
|
+
interface SonareEngineClipPageRequestMessage {
|
|
5195
|
+
type: 'clipPageRequest';
|
|
5196
|
+
requests: Array<{
|
|
5197
|
+
clipId: number;
|
|
5198
|
+
pageIndex: number;
|
|
5199
|
+
}>;
|
|
5200
|
+
/** Number of misses dropped because a bounded native or SAB request queue was full. */
|
|
5201
|
+
dropped?: number;
|
|
4637
5202
|
}
|
|
4638
5203
|
interface SonareEngineSyncMidiClipsMessage {
|
|
4639
5204
|
type: 'syncMidiClips';
|
|
@@ -4652,6 +5217,11 @@ interface SonareEngineSyncAutomationMessage {
|
|
|
4652
5217
|
paramId: number;
|
|
4653
5218
|
points: EngineAutomationPoint[];
|
|
4654
5219
|
}
|
|
5220
|
+
/** Replaces the live engine's registered custom-parameter set. */
|
|
5221
|
+
interface SonareEngineSyncParametersMessage {
|
|
5222
|
+
type: 'syncParameters';
|
|
5223
|
+
parameters: EngineParameterInfo[];
|
|
5224
|
+
}
|
|
4655
5225
|
interface SonareEngineSyncTempoMessage {
|
|
4656
5226
|
type: 'syncTempo';
|
|
4657
5227
|
bpm: number;
|
|
@@ -4782,6 +5352,7 @@ interface SonareEngineSyncSf2InstrumentMessage {
|
|
|
4782
5352
|
destinationId?: number;
|
|
4783
5353
|
gain?: number;
|
|
4784
5354
|
polyphony?: number;
|
|
5355
|
+
preferModelForModeledFamilies?: boolean;
|
|
4785
5356
|
};
|
|
4786
5357
|
}
|
|
4787
5358
|
interface SonareEngineSyncLoadSoundFontMessage {
|
|
@@ -4812,6 +5383,12 @@ interface SonareEngineSyncMidiCcMessage {
|
|
|
4812
5383
|
value: number;
|
|
4813
5384
|
renderFrame: number;
|
|
4814
5385
|
}
|
|
5386
|
+
interface SonareEngineSyncMidiUmpMessage {
|
|
5387
|
+
type: 'syncMidiUmp';
|
|
5388
|
+
destinationId: number;
|
|
5389
|
+
word0: number;
|
|
5390
|
+
renderFrame: number;
|
|
5391
|
+
}
|
|
4815
5392
|
interface SonareEngineSyncMidiSysexMessage {
|
|
4816
5393
|
type: 'syncMidiSysex';
|
|
4817
5394
|
destinationId: number;
|
|
@@ -4831,7 +5408,31 @@ interface SonareEngineSyncExternalMidiClockMessage {
|
|
|
4831
5408
|
type: 'syncExternalMidiClock';
|
|
4832
5409
|
enabled: boolean;
|
|
4833
5410
|
}
|
|
4834
|
-
|
|
5411
|
+
interface SonareEngineSyncMidiInputSourceMessage {
|
|
5412
|
+
type: 'syncMidiInputSource' | 'syncClearMidiInputSource';
|
|
5413
|
+
destinationId?: number;
|
|
5414
|
+
}
|
|
5415
|
+
interface SonareEngineSyncMidiCcBindingMessage {
|
|
5416
|
+
type: 'syncMidiCcBinding';
|
|
5417
|
+
channel: number;
|
|
5418
|
+
controller: number;
|
|
5419
|
+
paramId: number;
|
|
5420
|
+
minValue: number;
|
|
5421
|
+
maxValue: number;
|
|
5422
|
+
}
|
|
5423
|
+
interface SonareEngineSyncMidiInputEventMessage {
|
|
5424
|
+
type: 'syncMidiInputNoteOn' | 'syncMidiInputNoteOff' | 'syncMidiInputCc';
|
|
5425
|
+
group: number;
|
|
5426
|
+
channel: number;
|
|
5427
|
+
data0: number;
|
|
5428
|
+
data1: number;
|
|
5429
|
+
portTimeSamples: number;
|
|
5430
|
+
}
|
|
5431
|
+
/** Releases the realtime engine and all worklet-owned clip buffers. */
|
|
5432
|
+
interface SonareEngineDestroyMessage {
|
|
5433
|
+
type: 'destroy';
|
|
5434
|
+
}
|
|
5435
|
+
type SonareEngineSyncMessage = SonareEngineSyncClipsMessage | SonareEngineSyncClipsDeltaMessage | SonareEngineSyncClipPageProviderMessage | SonareEngineSyncClipPageMessage | SonareEngineSyncClipPageClearMessage | SonareEngineSyncClipPageCommitMessage | SonareEngineSyncClipPageDestroyMessage | SonareEngineSyncMidiClipsMessage | SonareEngineSyncMarkersMessage | SonareEngineSyncMetronomeMessage | SonareEngineSyncAutomationMessage | SonareEngineSyncParametersMessage | SonareEngineSyncTempoMessage | SonareEngineSyncMixerMessage | SonareEngineSyncCaptureMessage | SonareEngineSyncTrackStripEqBandMessage | SonareEngineSyncMasterStripEqBandMessage | SonareEngineSyncTrackStripInsertBypassedMessage | SonareEngineSyncMasterStripInsertBypassedMessage | SonareEngineSyncTrackStripInsertParamByNameMessage | SonareEngineSyncMasterStripInsertParamByNameMessage | SonareEngineSyncBusStripInsertParamByNameMessage | SonareEngineSyncTrackStripPanMessage | SonareEngineSyncTrackStripPanLawMessage | SonareEngineSyncTrackStripPanModeMessage | SonareEngineSyncTrackStripDualPanMessage | SonareEngineSyncTrackStripChannelDelaySamplesMessage | SonareEngineSyncBuiltinInstrumentMessage | SonareEngineSyncSynthInstrumentMessage | SonareEngineSyncSf2InstrumentMessage | SonareEngineSyncLoadSoundFontMessage | SonareEngineSyncMidiFxMessage | SonareEngineSyncMidiNoteMessage | SonareEngineSyncMidiCcMessage | SonareEngineSyncMidiUmpMessage | SonareEngineSyncMidiSysexMessage | SonareEngineSyncMidiPanicMessage | SonareEngineSyncMidiDestinationExternalMessage | SonareEngineSyncExternalMidiClockMessage | SonareEngineSyncMidiInputSourceMessage | SonareEngineSyncMidiCcBindingMessage | SonareEngineSyncMidiInputEventMessage | SonareEngineDestroyMessage;
|
|
4835
5436
|
|
|
4836
5437
|
declare class SonareRealtimeEngineNode {
|
|
4837
5438
|
readonly node: AudioWorkletNode;
|
|
@@ -4840,14 +5441,20 @@ declare class SonareRealtimeEngineNode {
|
|
|
4840
5441
|
readonly telemetryRing?: SonareEngineTelemetryRingBuffer;
|
|
4841
5442
|
readonly meterRing?: SonareMeterRingBuffer;
|
|
4842
5443
|
readonly scopeRing?: SonareScopeRingBuffer;
|
|
5444
|
+
readonly clipPageRequestRing?: SonareClipPageRequestRingBuffer;
|
|
5445
|
+
readonly externalMidiRing?: SonareExternalMidiRingBuffer;
|
|
4843
5446
|
readonly ready: Promise<void>;
|
|
4844
5447
|
private telemetryReadIndex;
|
|
4845
5448
|
private meterReadIndex;
|
|
4846
5449
|
private scopeReadIndex;
|
|
5450
|
+
private clipPageRequestDroppedRead;
|
|
5451
|
+
private ringPollTimer;
|
|
4847
5452
|
private telemetryListeners;
|
|
4848
5453
|
private meterListeners;
|
|
4849
5454
|
private scopeListeners;
|
|
4850
5455
|
private midiOutListeners;
|
|
5456
|
+
private clipPageRequestListeners;
|
|
5457
|
+
private syncErrorListeners;
|
|
4851
5458
|
private captureRequestId;
|
|
4852
5459
|
private readonly captureRequests;
|
|
4853
5460
|
private transportRequestId;
|
|
@@ -4856,6 +5463,8 @@ declare class SonareRealtimeEngineNode {
|
|
|
4856
5463
|
private rejectReady;
|
|
4857
5464
|
private destroyed;
|
|
4858
5465
|
private constructor();
|
|
5466
|
+
/** Subscribes to control-plane sync rejections reported by the worklet. */
|
|
5467
|
+
onSyncError(listener: (message: SonareEngineSyncErrorMessage) => void): () => void;
|
|
4859
5468
|
static create(context: BaseAudioContext, options?: SonareRealtimeEngineNodeOptions): Promise<SonareRealtimeEngineNode>;
|
|
4860
5469
|
play(sampleTime?: number): boolean;
|
|
4861
5470
|
stop(sampleTime?: number): boolean;
|
|
@@ -4869,6 +5478,14 @@ declare class SonareRealtimeEngineNode {
|
|
|
4869
5478
|
pollTelemetry(): SonareEngineTelemetryRecord[];
|
|
4870
5479
|
pollMeters(): SonareWorkletMeterSnapshot[];
|
|
4871
5480
|
pollScope(): SonareWorkletScopeSnapshot[];
|
|
5481
|
+
/** Drain lowered MIDI-1 records from the SAB ring on the main thread. */
|
|
5482
|
+
pollMidiOut(): SonareWorkletExternalMidiEvent[];
|
|
5483
|
+
/**
|
|
5484
|
+
* Drains bounded paged-clip misses from the SAB ring and forwards one batch
|
|
5485
|
+
* to subscribers. In postMessage mode the legacy handler remains available,
|
|
5486
|
+
* but that degraded path is not realtime-safe for OPFS streaming.
|
|
5487
|
+
*/
|
|
5488
|
+
pollClipPageRequests(): SonareEngineClipPageRequestMessage | undefined;
|
|
4872
5489
|
onTelemetry(callback: (telemetry: SonareEngineTelemetryRecord) => void): () => void;
|
|
4873
5490
|
onMeter(callback: (meter: SonareWorkletMeterSnapshot) => void): () => void;
|
|
4874
5491
|
onScope(callback: (scope: SonareWorkletScopeSnapshot) => void): () => void;
|
|
@@ -4878,10 +5495,18 @@ declare class SonareRealtimeEngineNode {
|
|
|
4878
5495
|
* Web MIDI output port. Returns an unsubscribe function.
|
|
4879
5496
|
*/
|
|
4880
5497
|
onMidiOut(callback: (events: SonareWorkletExternalMidiEvent[]) => void): () => void;
|
|
5498
|
+
/**
|
|
5499
|
+
* Subscribe to bounded batches of paged-clip misses from the worklet. The
|
|
5500
|
+
* callback runs on the main thread and may initiate asynchronous OPFS I/O.
|
|
5501
|
+
*/
|
|
5502
|
+
onClipPageRequests(callback: (message: SonareEngineClipPageRequestMessage) => void): () => void;
|
|
4881
5503
|
destroy(): void;
|
|
4882
5504
|
private emitTelemetry;
|
|
5505
|
+
private startRingPolling;
|
|
5506
|
+
private stopRingPollingIfUnused;
|
|
4883
5507
|
private emitMeter;
|
|
4884
5508
|
private emitMidiOut;
|
|
5509
|
+
private emitClipPageRequests;
|
|
4885
5510
|
private emitScope;
|
|
4886
5511
|
private sendCaptureRequest;
|
|
4887
5512
|
private sendTransportRequest;
|
|
@@ -4960,6 +5585,13 @@ declare function meteringPeakDb(request: MeteringSamplesRequest): number;
|
|
|
4960
5585
|
declare function meteringPeakDb(samples: Float32Array, sampleRate?: number, options?: ValidateOptions): number;
|
|
4961
5586
|
declare function meteringRmsDb(request: MeteringSamplesRequest): number;
|
|
4962
5587
|
declare function meteringRmsDb(samples: Float32Array, sampleRate?: number, options?: ValidateOptions): number;
|
|
5588
|
+
interface MeteringSilenceRatioRequest extends MeteringSamplesRequest {
|
|
5589
|
+
thresholdDb?: number;
|
|
5590
|
+
frameLength?: number;
|
|
5591
|
+
hopLength?: number;
|
|
5592
|
+
}
|
|
5593
|
+
declare function meteringSilenceRatio(request: MeteringSilenceRatioRequest): number;
|
|
5594
|
+
declare function meteringSilenceRatio(samples: Float32Array, sampleRate?: number, thresholdDb?: number, frameLength?: number, hopLength?: number, options?: ValidateOptions): number;
|
|
4963
5595
|
declare function meteringCrestFactorDb(request: MeteringSamplesRequest): number;
|
|
4964
5596
|
declare function meteringCrestFactorDb(samples: Float32Array, sampleRate?: number, options?: ValidateOptions): number;
|
|
4965
5597
|
declare function meteringDcOffset(request: MeteringSamplesRequest): number;
|
|
@@ -4979,7 +5611,7 @@ declare function meteringTruePeakDb(samples: Float32Array, sampleRate?: number,
|
|
|
4979
5611
|
declare function meteringDetectClipping(request: MeteringDetectClippingRequest): ClippingReport;
|
|
4980
5612
|
declare function meteringDetectClipping(samples: Float32Array, sampleRate?: number, options?: MeteringDetectClippingOptions): ClippingReport;
|
|
4981
5613
|
/**
|
|
4982
|
-
* Sliding-window dynamic range. Pass 0 for window/hop to use the library
|
|
5614
|
+
* Sliding-window dynamic range for mono audio. Pass 0 for window/hop to use the library
|
|
4983
5615
|
* default (window=3 s, hop=1 s). The percentiles use a NEGATIVE sentinel for
|
|
4984
5616
|
* "use the library default" (low=0.10, high=0.95) because 0 is a literal 0th
|
|
4985
5617
|
* percentile; omitted percentiles therefore default to -1.
|
|
@@ -5079,7 +5711,7 @@ interface WaveformPeaksReport {
|
|
|
5079
5711
|
bucketCount: number;
|
|
5080
5712
|
samplesPerBucket: number;
|
|
5081
5713
|
}
|
|
5082
|
-
/**
|
|
5714
|
+
/** Uncentered correlation (cosine similarity) in [-1, 1] between equal-length channels. */
|
|
5083
5715
|
declare function meteringStereoCorrelation(request: MeteringStereoRequest): number;
|
|
5084
5716
|
declare function meteringStereoCorrelation(left: Float32Array, right: Float32Array, sampleRate?: number, options?: ValidateOptions): number;
|
|
5085
5717
|
/**
|
|
@@ -5124,7 +5756,7 @@ declare function meteringPhaseScope(left: Float32Array, right: Float32Array, sam
|
|
|
5124
5756
|
declare function meteringPhaseScopeDecimated(request: MeteringStereoDecimatedRequest): PhaseScopeReport;
|
|
5125
5757
|
declare function meteringPhaseScopeDecimated(left: Float32Array, right: Float32Array, sampleRate?: number, maxPoints?: number, options?: ValidateOptions): PhaseScopeReport;
|
|
5126
5758
|
/**
|
|
5127
|
-
* Welch-averaged magnitude / power / dB spectrum over the WHOLE signal (split
|
|
5759
|
+
* Welch-averaged magnitude / power / dB spectrum over the WHOLE mono signal (split
|
|
5128
5760
|
* into Hann-windowed, 50%-overlapping `nFft`-length frames whose power spectra
|
|
5129
5761
|
* are averaged). For a true single-frame snapshot, use
|
|
5130
5762
|
* {@link meteringSpectrumFrame}.
|
|
@@ -5152,12 +5784,29 @@ interface SamplesRequest extends GuardedOptions {
|
|
|
5152
5784
|
samples: Float32Array;
|
|
5153
5785
|
sampleRate?: number;
|
|
5154
5786
|
}
|
|
5787
|
+
/** Peak-picking configuration for {@link detectOnsets}. */
|
|
5788
|
+
interface OnsetDetectOptions {
|
|
5789
|
+
nFft?: number;
|
|
5790
|
+
hopLength?: number;
|
|
5791
|
+
threshold?: number;
|
|
5792
|
+
preMax?: number;
|
|
5793
|
+
postMax?: number;
|
|
5794
|
+
preAvg?: number;
|
|
5795
|
+
postAvg?: number;
|
|
5796
|
+
delta?: number;
|
|
5797
|
+
wait?: number;
|
|
5798
|
+
backtrack?: boolean;
|
|
5799
|
+
backtrackRange?: number;
|
|
5800
|
+
}
|
|
5801
|
+
interface DetectOnsetsRequest extends SamplesRequest, OnsetDetectOptions {
|
|
5802
|
+
}
|
|
5155
5803
|
/** Canonical request form for key detection functions. */
|
|
5156
5804
|
interface DetectKeyRequest extends KeyDetectionOptions, SamplesRequest {
|
|
5157
5805
|
}
|
|
5158
5806
|
/** Canonical request form for analysis with synchronous progress reporting. */
|
|
5159
5807
|
interface AnalyzeWithProgressRequest extends SamplesRequest {
|
|
5160
|
-
onProgress
|
|
5808
|
+
onProgress?: ProgressCallback;
|
|
5809
|
+
cancel?: () => boolean;
|
|
5161
5810
|
}
|
|
5162
5811
|
/** Canonical request form for chord detection. */
|
|
5163
5812
|
interface DetectChordsRequest extends ChordDetectionOptions, SamplesRequest {
|
|
@@ -5219,8 +5868,8 @@ declare function detectKeyCandidates(samples: Float32Array, sampleRate?: number,
|
|
|
5219
5868
|
* @param sampleRate - Sample rate in Hz (default: 22050)
|
|
5220
5869
|
* @returns Array of onset times in seconds
|
|
5221
5870
|
*/
|
|
5222
|
-
declare function detectOnsets(request:
|
|
5223
|
-
declare function detectOnsets(samples: Float32Array, sampleRate?: number, options?: GuardedOptions): Float32Array;
|
|
5871
|
+
declare function detectOnsets(request: DetectOnsetsRequest): Float32Array;
|
|
5872
|
+
declare function detectOnsets(samples: Float32Array, sampleRate?: number, options?: OnsetDetectOptions & GuardedOptions): Float32Array;
|
|
5224
5873
|
/**
|
|
5225
5874
|
* Detect beat times from audio samples.
|
|
5226
5875
|
*
|
|
@@ -5273,8 +5922,26 @@ declare function chordFunctionalAnalysis(samples: Float32Array, keyRoot: PitchCl
|
|
|
5273
5922
|
* the UI responsive for long inputs, drive this from a Web Worker and use
|
|
5274
5923
|
* {@link analyzeWithProgress} to report progress.
|
|
5275
5924
|
*/
|
|
5276
|
-
|
|
5277
|
-
|
|
5925
|
+
interface MusicAnalyzeOptions {
|
|
5926
|
+
nFft?: number;
|
|
5927
|
+
hopLength?: number;
|
|
5928
|
+
bpmMin?: number;
|
|
5929
|
+
bpmMax?: number;
|
|
5930
|
+
startBpm?: number;
|
|
5931
|
+
useTriadsOnly?: boolean;
|
|
5932
|
+
useHpss?: boolean;
|
|
5933
|
+
chromaHighpassHz?: number;
|
|
5934
|
+
useBassWeighted?: boolean;
|
|
5935
|
+
chromaHopMultiplier?: number;
|
|
5936
|
+
useChordHmm?: boolean;
|
|
5937
|
+
useChordKeyContext?: boolean;
|
|
5938
|
+
chordHmmBeamWidth?: number;
|
|
5939
|
+
detectChordInversions?: boolean;
|
|
5940
|
+
}
|
|
5941
|
+
interface MusicAnalyzeRequest extends SamplesRequest, MusicAnalyzeOptions {
|
|
5942
|
+
}
|
|
5943
|
+
declare function analyze(request: MusicAnalyzeRequest): AnalysisResult;
|
|
5944
|
+
declare function analyze(samples: Float32Array, sampleRate?: number, options?: GuardedOptions & MusicAnalyzeOptions): AnalysisResult;
|
|
5278
5945
|
declare function analyzeImpulseResponse(request: AnalyzeImpulseResponseRequest): AcousticResult;
|
|
5279
5946
|
declare function analyzeImpulseResponse(samples: Float32Array, sampleRate?: number, nOctaveBands?: number): AcousticResult;
|
|
5280
5947
|
declare function detectAcoustic(request: DetectAcousticRequest): AcousticResult;
|
|
@@ -5754,7 +6421,10 @@ declare class Mixer {
|
|
|
5754
6421
|
* @param blockSize - Maximum block size per {@link processStereo} call (default: 512)
|
|
5755
6422
|
*/
|
|
5756
6423
|
static fromSceneJson(json: string, sampleRate?: number, blockSize?: number): Mixer;
|
|
5757
|
-
/**
|
|
6424
|
+
/**
|
|
6425
|
+
* Rebuild and compile the routing graph without resetting its absolute
|
|
6426
|
+
* automation sample position or queued strip automation.
|
|
6427
|
+
*/
|
|
5758
6428
|
compile(): void;
|
|
5759
6429
|
/**
|
|
5760
6430
|
* Non-fatal warnings captured when this mixer was built from scene JSON: one
|
|
@@ -5828,6 +6498,8 @@ declare class Mixer {
|
|
|
5828
6498
|
addVcaGroup(id: string, gainDb?: number, members?: string[]): void;
|
|
5829
6499
|
/** Set an existing VCA group's gain in dB. */
|
|
5830
6500
|
setVcaGroupGainDb(id: string, gainDb: number): void;
|
|
6501
|
+
/** Replace an existing VCA group's strip membership. */
|
|
6502
|
+
setVcaGroupMembers(id: string, members: string[]): void;
|
|
5831
6503
|
/** Remove a VCA group by id. */
|
|
5832
6504
|
removeVcaGroup(id: string): void;
|
|
5833
6505
|
/** Number of VCA groups in the mixer topology. */
|
|
@@ -5923,6 +6595,8 @@ declare class Mixer {
|
|
|
5923
6595
|
* the tap-less post-fader strip meter is read.
|
|
5924
6596
|
*/
|
|
5925
6597
|
stripMeter(stripIndex: number, tap?: MeterTap | number): MixMeterSnapshot;
|
|
6598
|
+
/** Read the post-insert meter for a compiled bus, including master. */
|
|
6599
|
+
busMeter(busId: string): MixMeterSnapshot;
|
|
5926
6600
|
/**
|
|
5927
6601
|
* Schedule sample-accurate fader automation on a strip.
|
|
5928
6602
|
*
|
|
@@ -6025,12 +6699,28 @@ interface RealtimeVoiceChangerPlanarBuffer {
|
|
|
6025
6699
|
}
|
|
6026
6700
|
declare class RealtimeVoiceChanger {
|
|
6027
6701
|
private changer;
|
|
6028
|
-
|
|
6702
|
+
/**
|
|
6703
|
+
* Creates a voice changer. Supplying `sampleRate` prepares it immediately,
|
|
6704
|
+
* matching the Node and Python constructors; omitting it preserves the
|
|
6705
|
+
* explicit {@link prepare} lifecycle for callers that configure later.
|
|
6706
|
+
*/
|
|
6707
|
+
constructor(config?: RealtimeVoiceChangerConfigInput | RealtimeVoiceChangerPodConfig, sampleRate?: number, maxBlockSize?: number, channels?: number);
|
|
6029
6708
|
prepare(sampleRate: number, maxBlockSize?: number, channels?: number): void;
|
|
6030
6709
|
reset(): void;
|
|
6031
6710
|
setConfig(config: RealtimeVoiceChangerConfigInput | RealtimeVoiceChangerPodConfig): void;
|
|
6711
|
+
/**
|
|
6712
|
+
* Apply a flat, pre-normalized config without JSON serialization. Intended
|
|
6713
|
+
* for AudioWorklet control messages whose sender prepared the POD on the
|
|
6714
|
+
* main thread.
|
|
6715
|
+
*/
|
|
6716
|
+
setPodConfig(config: RealtimeVoiceChangerPodConfig): void;
|
|
6032
6717
|
configJson(): string;
|
|
6033
6718
|
latencySamples(): number;
|
|
6719
|
+
/**
|
|
6720
|
+
* Monotonically increases whenever {@link prepare} can replace the native
|
|
6721
|
+
* scratch buffers. Cached WASM heap views must be reacquired after it changes.
|
|
6722
|
+
*/
|
|
6723
|
+
bufferGeneration(): number;
|
|
6034
6724
|
processMono(samples: Float32Array): Float32Array;
|
|
6035
6725
|
processMonoInto(samples: Float32Array, output: Float32Array): void;
|
|
6036
6726
|
processInterleaved(samples: Float32Array, channels: number): Float32Array;
|
|
@@ -6146,6 +6836,18 @@ declare class StreamingMasteringChain {
|
|
|
6146
6836
|
left: Float32Array;
|
|
6147
6837
|
right: Float32Array;
|
|
6148
6838
|
};
|
|
6839
|
+
/**
|
|
6840
|
+
* Emit delayed audio and finite processor tails after the final mono block.
|
|
6841
|
+
* Call until this returns an empty array. The initial `latencySamples()`
|
|
6842
|
+
* samples of the concatenated stream are delayed and should be discarded for
|
|
6843
|
+
* time-aligned output.
|
|
6844
|
+
*/
|
|
6845
|
+
flushMono(): Float32Array;
|
|
6846
|
+
/** Stereo counterpart of {@link flushMono}. */
|
|
6847
|
+
flushStereo(): {
|
|
6848
|
+
left: Float32Array;
|
|
6849
|
+
right: Float32Array;
|
|
6850
|
+
};
|
|
6149
6851
|
/** Reset all processor state without rebuilding. */
|
|
6150
6852
|
reset(): void;
|
|
6151
6853
|
/** Total reported latency in samples across all active processors. */
|
|
@@ -6271,6 +6973,14 @@ declare class StreamingRetune {
|
|
|
6271
6973
|
delete(): void;
|
|
6272
6974
|
}
|
|
6273
6975
|
|
|
6976
|
+
interface WebMidiEngine {
|
|
6977
|
+
bindMidiCc(channel: number, controller: number, paramId: number, options?: MidiCcBindOptions): void;
|
|
6978
|
+
setMidiInputSource(destinationId?: number): void;
|
|
6979
|
+
clearMidiInputSource(): void;
|
|
6980
|
+
pushMidiInputNoteOn(group: number, channel: number, note: number, velocity: number, time?: number): void;
|
|
6981
|
+
pushMidiInputNoteOff(group: number, channel: number, note: number, velocity?: number, time?: number): void;
|
|
6982
|
+
pushMidiInputCc(group: number, channel: number, controller: number, value: number, time?: number): void;
|
|
6983
|
+
}
|
|
6274
6984
|
type MidiInputState = 'connected' | 'disconnected';
|
|
6275
6985
|
interface MidiPortLike {
|
|
6276
6986
|
id: string;
|
|
@@ -6336,7 +7046,99 @@ interface WebMidiBinding {
|
|
|
6336
7046
|
close(): void;
|
|
6337
7047
|
}
|
|
6338
7048
|
declare function isWebMidiAvailable(): boolean;
|
|
6339
|
-
declare function bindWebMidi(engine:
|
|
7049
|
+
declare function bindWebMidi(engine: WebMidiEngine, options?: BindWebMidiOptions): Promise<WebMidiBinding>;
|
|
7050
|
+
|
|
7051
|
+
type WorkerRequest<T> = Omit<T, 'onProgress'>;
|
|
7052
|
+
/** Progress relayed from the Worker at the core's native progress boundaries. */
|
|
7053
|
+
interface OfflineWorkerProgress {
|
|
7054
|
+
progress: number;
|
|
7055
|
+
stage: string;
|
|
7056
|
+
}
|
|
7057
|
+
/** Per-call behaviour for a one-shot operation. */
|
|
7058
|
+
interface OfflineWorkerCallOptions {
|
|
7059
|
+
/**
|
|
7060
|
+
* Preserve the caller's input arrays by copying them before dispatch.
|
|
7061
|
+
*
|
|
7062
|
+
* The default is `false`: `Float32Array` buffers are transferred to the
|
|
7063
|
+
* Worker and become detached on the calling thread, avoiding a second copy.
|
|
7064
|
+
*/
|
|
7065
|
+
copy?: boolean;
|
|
7066
|
+
/** Receives native progress boundaries for analysis and mastering calls. */
|
|
7067
|
+
onProgress?: (update: OfflineWorkerProgress) => void;
|
|
7068
|
+
}
|
|
7069
|
+
/** Options used to create an {@link OfflineWorkerClient}. */
|
|
7070
|
+
interface OfflineWorkerClientOptions {
|
|
7071
|
+
/** Reuse a Worker owned by the host instead of creating one. */
|
|
7072
|
+
worker?: OfflineWorker;
|
|
7073
|
+
/** URL of the Worker entry; defaults to the adjacent published `worker.js`. */
|
|
7074
|
+
workerUrl?: string | URL;
|
|
7075
|
+
/** Test/host hook for creating a dedicated Worker. */
|
|
7076
|
+
workerFactory?: (url: URL) => OfflineWorker;
|
|
7077
|
+
/** Terminate a supplied Worker when {@link OfflineWorkerClient.dispose} runs. */
|
|
7078
|
+
terminateWorkerOnDispose?: boolean;
|
|
7079
|
+
}
|
|
7080
|
+
/** Browser Worker or Node `worker_threads.Worker` used by the client. */
|
|
7081
|
+
interface OfflineWorker {
|
|
7082
|
+
postMessage(message: unknown, transfer?: Transferable[]): void;
|
|
7083
|
+
terminate(): unknown;
|
|
7084
|
+
addEventListener?(type: string, listener: EventListener): void;
|
|
7085
|
+
removeEventListener?(type: string, listener: EventListener): void;
|
|
7086
|
+
on?(type: 'message' | 'error', listener: (...args: unknown[]) => void): unknown;
|
|
7087
|
+
off?(type: 'message' | 'error', listener: (...args: unknown[]) => void): unknown;
|
|
7088
|
+
}
|
|
7089
|
+
/**
|
|
7090
|
+
* A cancellable promise returned by an {@link OfflineWorkerClient} call.
|
|
7091
|
+
*
|
|
7092
|
+
* It is Promise-like, so `await client.analyze(...)` works. Call `cancel()` to
|
|
7093
|
+
* request cancellation at the next native progress boundary. In browsers this
|
|
7094
|
+
* uses a `SharedArrayBuffer` flag, which requires cross-origin isolation for
|
|
7095
|
+
* prompt cancellation while synchronous WASM is running. The worker forwards
|
|
7096
|
+
* that flag through the same native cancellation callback used by synchronous
|
|
7097
|
+
* one-shot requests.
|
|
7098
|
+
*/
|
|
7099
|
+
declare class OfflineWorkerTask<T> implements PromiseLike<T> {
|
|
7100
|
+
readonly result: Promise<T>;
|
|
7101
|
+
private readonly cancelRequest;
|
|
7102
|
+
constructor(result: Promise<T>, cancelRequest: () => void);
|
|
7103
|
+
cancel(): void;
|
|
7104
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
|
|
7105
|
+
catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
|
|
7106
|
+
finally(onfinally?: (() => void) | null): Promise<T>;
|
|
7107
|
+
}
|
|
7108
|
+
/**
|
|
7109
|
+
* Owns a dedicated Worker for value-based offline analysis and mastering.
|
|
7110
|
+
*
|
|
7111
|
+
* `Project`, `Mixer`, and realtime APIs are intentionally absent: their native
|
|
7112
|
+
* handles are local to one JavaScript realm and cannot be transferred safely.
|
|
7113
|
+
*/
|
|
7114
|
+
declare class OfflineWorkerClient {
|
|
7115
|
+
private readonly worker;
|
|
7116
|
+
private readonly ownsWorker;
|
|
7117
|
+
private readonly pending;
|
|
7118
|
+
private nextId;
|
|
7119
|
+
private closed;
|
|
7120
|
+
private usesEventTarget;
|
|
7121
|
+
constructor(options?: OfflineWorkerClientOptions);
|
|
7122
|
+
/** Dispatch full music analysis to the Worker. */
|
|
7123
|
+
analyze(request: WorkerRequest<MusicAnalyzeRequest>, options?: OfflineWorkerCallOptions): OfflineWorkerTask<ReturnType<typeof analyze>>;
|
|
7124
|
+
/** Dispatch BPM detection to the Worker. */
|
|
7125
|
+
detectBpm(request: SamplesRequest, options?: OfflineWorkerCallOptions): OfflineWorkerTask<number>;
|
|
7126
|
+
/** Dispatch key detection to the Worker. */
|
|
7127
|
+
detectKey(request: DetectKeyRequest, options?: OfflineWorkerCallOptions): OfflineWorkerTask<ReturnType<typeof detectKey>>;
|
|
7128
|
+
/** Dispatch chord detection to the Worker. */
|
|
7129
|
+
detectChords(request: DetectChordsRequest, options?: OfflineWorkerCallOptions): OfflineWorkerTask<ReturnType<typeof detectChords>>;
|
|
7130
|
+
/** Dispatch mono preset mastering to the Worker. */
|
|
7131
|
+
masterAudio(request: WorkerRequest<MasterAudioRequest>, options?: OfflineWorkerCallOptions): OfflineWorkerTask<ReturnType<typeof masterAudio>>;
|
|
7132
|
+
/** Dispatch stereo preset mastering to the Worker. */
|
|
7133
|
+
masterAudioStereo(request: WorkerRequest<MasterAudioStereoRequest>, options?: OfflineWorkerCallOptions): OfflineWorkerTask<ReturnType<typeof masterAudioStereo>>;
|
|
7134
|
+
/** Stop accepting calls, reject outstanding work, and release the Worker if owned. */
|
|
7135
|
+
dispose(): void;
|
|
7136
|
+
private call;
|
|
7137
|
+
private readonly onMessage;
|
|
7138
|
+
private readonly onError;
|
|
7139
|
+
private readonly onNodeMessage;
|
|
7140
|
+
private readonly onNodeError;
|
|
7141
|
+
}
|
|
6340
7142
|
|
|
6341
7143
|
/**
|
|
6342
7144
|
* sonare - Audio Analysis Library
|
|
@@ -6387,6 +7189,14 @@ declare function isInitialized(): boolean;
|
|
|
6387
7189
|
* Get the library version.
|
|
6388
7190
|
*/
|
|
6389
7191
|
declare function version(): string;
|
|
7192
|
+
/**
|
|
7193
|
+
* Return the capabilities of the loaded WASM build.
|
|
7194
|
+
*
|
|
7195
|
+
* This is synchronous and only describes the already-initialized module.
|
|
7196
|
+
*/
|
|
7197
|
+
declare function capabilities(): SonareCapabilities;
|
|
7198
|
+
/** Return the initialized module's processors, parameters, and presets. */
|
|
7199
|
+
declare function capabilityCatalog(): CapabilityCatalog;
|
|
6390
7200
|
/**
|
|
6391
7201
|
* Aggregate native ABI version: the per-subsystem ABI macros folded into one
|
|
6392
7202
|
* 32-bit value. It bumps whenever any flat C POD layout changes, so callers can
|
|
@@ -6397,14 +7207,14 @@ declare function engineAbiVersion(): number;
|
|
|
6397
7207
|
declare function voiceChangerAbiVersion(): number;
|
|
6398
7208
|
/**
|
|
6399
7209
|
* Map a voice-character preset ordinal (or canonical id) to its canonical id
|
|
6400
|
-
* string (e.g. `'bright-idol'`).
|
|
7210
|
+
* string (e.g. `'bright-idol'`). Invalid ordinals throw.
|
|
6401
7211
|
*/
|
|
6402
|
-
declare function voiceCharacterPresetId(preset: VoicePresetId | number): string
|
|
7212
|
+
declare function voiceCharacterPresetId(preset: VoicePresetId | number): string;
|
|
6403
7213
|
/**
|
|
6404
7214
|
* Return the canonical (normalized) flat POD config for a built-in voice
|
|
6405
7215
|
* preset, skipping the JSON round-trip. Accepts a canonical preset id or its
|
|
6406
|
-
* integer ordinal.
|
|
7216
|
+
* integer ordinal. Invalid ordinals throw.
|
|
6407
7217
|
*/
|
|
6408
|
-
declare function realtimeVoiceChangerPresetConfig(preset: VoicePresetId | number): RealtimeVoiceChangerPodConfig
|
|
7218
|
+
declare function realtimeVoiceChangerPresetConfig(preset: VoicePresetId | number): RealtimeVoiceChangerPodConfig;
|
|
6409
7219
|
|
|
6410
|
-
export { type AcousticOptions, type AcousticResult, type AnalysisResult, type AnalyzeBpmOptions, type AnalyzeBpmRequest, type AnalyzeDynamicsOptions, type AnalyzeDynamicsRequest, type AnalyzeImpulseResponseRequest, type AnalyzeMelodyRequest, type AnalyzeRhythmOptions, type AnalyzeRhythmRequest, type AnalyzeSectionsOptions, type AnalyzeSectionsRequest, type AnalyzeTimbreOptions, type AnalyzeTimbreRequest, type AnalyzeWithProgressRequest, type AnalyzerStats, Audio, type AutomationCurve, type BarChord, type Beat, type BindMicrophoneInputOptions, type BindWebMidiOptions, type BpmAnalysisResult, type BpmCandidate, type BrowserAudioDecodeOptions, type BuiltinSynthBinding, type BuiltinSynthConfig, type BuiltinSynthWaveform, type Chord, type ChordAnalysisResult, type ChordChange, type ChordDetectionOptions, type ChordFunctionalAnalysisRequest, ChordQuality, type ChromaResult, type ChromaSpectrogramRequest, type ClipPageRequest, type ClipPageStreamSource, ClipPageStreamer, type ClipPageStreamerEngine, type ClipPageStreamerOptions, type ClippingRegion, type ClippingReport, type CompressorDetector, type CompressorOptions, type CqtRequest, type CqtResult, type CqtToAudioRequest, type CyclicTempogramRequest, type DbConversionRequest, type DeclickOptions, type DeclipOptions, type DecomposeRequest, type DecomposeResult, type DecomposeWithInitRequest, type DecrackleMode, type DecrackleOptions, type DehumOptions, type DenoiseClassicalMode, type DenoiseClassicalNoiseEstimator, type DenoiseClassicalOptions, type DereverbClassicalOptions, type DetectAcousticRequest, type DetectChordsRequest, type DetectKeyRequest, type DynamicRangeReport, type Dynamics, type DynamicsAnalysisResult, type DynamicsResult, EXPECTED_ENGINE_ABI_VERSION, EXPECTED_PROJECT_ABI_VERSION, type Ebur128LoudnessRangeRequest, type EmphasisRequest, type EngineAutomationPoint, type EngineBounceOptions, type EngineBounceResult, type EngineBus, type EngineCapabilities, type EngineCaptureStatus, type EngineClip, type EngineFreezeOptions, type EngineFreezeResult, type EngineGraphSpec, type EngineMarker, type EngineMeterTelemetry, type EngineMeterTelemetryWide, type EngineMetronomeConfig, type EngineMidiClipSchedule, type EngineMidiEvent, type EngineParameterInfo, type EngineScopeTelemetry, type EngineTelemetry, type EngineTempoSegment, type EngineTimeSignatureSegment, type EngineTrackLane, type EngineTrackSend, type EngineTransportState, type EqBand, type EqBandPhase, type EqBandType, type EqCoeffMode, type EqMatchOptions, type EqSpectrumSnapshot, type EqStereoPlacement, ErrorCode, type EstimateRoomRequest, type EstimateTuningRequest, type ExternalMidiEvent, type FixFramesRequest, type FixLengthRequest, type FourierTempogramRequest, type FrameBuffer, type FrameSignalRequest, type GateOptions, type GoniometerPoint, type HarmonicRequest, type HpssRequest, type HpssResult, type HpssWithResidualRequest, type HpssWithResidualResult, type Key, type KeyCandidate, type KeyDetectionOptions, KeyProfile, type KeyProfileName, type LufsInterleavedRequest, type LufsRequest, type LufsResult, MarkerKind, type MasterAudioRequest, type MasterAudioStereoRequest, type MasteringChainConfig, type MasteringChainRequest, type MasteringChainResult, type MasteringChainStereoRequest, type MasteringChainStereoResult, type MasteringChannelPolicy, type MasteringDynamicsCompressorRequest, type MasteringDynamicsGateRequest, type MasteringDynamicsTransientShaperRequest, type MasteringInsertParamInfo, type MasteringOptions, type MasteringPairAnalyzeRequest, type MasteringPairProcessRequest, type MasteringPreset, type MasteringProcessRequest, type MasteringProcessStereoRequest, type MasteringProcessorCatalogEntry, type MasteringProcessorParams, type MasteringRepairDeclickRequest, type MasteringRepairDeclipRequest, type MasteringRepairDecrackleRequest, type MasteringRepairDehumRequest, type MasteringRepairDenoiseClassicalRequest, type MasteringRepairDereverbClassicalRequest, type MasteringRepairTrimSilenceRequest, type MasteringRequest, type MasteringResult, type MasteringSamplesParamsRequest, type MasteringStereoAnalyzeRequest, type MasteringStereoChainResult, type MasteringStereoResult, type MasteringStreamingPreviewRequest, type Matrix2dResult, type MelPowerResult, type MelSpectrogramRequest, type MelSpectrogramResult, type MelToAudioRequest, type MelToStftRequest, type MelodyOptions, type MelodyPoint, type MelodyResult, type MeterTap, type MeteringDetectClippingOptions, type MeteringDetectClippingRequest, type MeteringDynamicRangeOptions, type MeteringDynamicRangeRequest, type MeteringSamplesRequest, type MeteringSpectrumFrameRequest, type MeteringSpectrumRequest, type MeteringStereoDecimatedRequest, type MeteringStereoRequest, type MeteringTruePeakRequest, type MfccRequest, type MfccResult, type MfccToAudioRequest, type MfccToMelRequest, type MicrophoneInputBinding, type MidiCcBindOptions, type MidiCcLearnOptions, type MixMeterSnapshot, type MixOptions, type MixResult, type MixStereoRequest, Mixer, type MixerProcessResult, type MixerRealtimeBuffer, Mode, type NnFilterRequest, type NnlsChromaRequest, type NormalizeRequest, type NoteMoveRequest, type NoteStretchOptions, type NoteStretchRequest, type OnsetEnvelopeRequest, type OnsetStrengthMultiRequest, type OpfsClipPageProviderBinding, type OpfsClipPageProviderOptions, type OpfsClipStream, type OpfsClipStreamOptions, type PadCenterRequest, type PairAnalysis, type PairProcessor, type PanLaw, type PanMode, type PatternScore, type PcenRequest, type PeakPickRequest, type PercussiveRequest, type PhaseScopeReport, type PhaseVocoderRequest, PitchClass as Pitch, PitchClass, type PitchCorrectOptions, type PitchCorrectTimevaryingRequest, type PitchCorrectToMidiRequest, type PitchCorrectToMidiTimevaryingRequest, type PitchPyinRequest, type PitchResult, type PitchShiftRequest, type PitchTuningRequest, type PitchYinRequest, type PlpRequest, type PolyFeaturesRequest, type ProgressiveEstimate, Project, type ProjectAssistSidecar, type ProjectAutomationCurve, type ProjectAutomationLaneDesc, type ProjectAutomationPoint, type ProjectBounceOptions, type ProjectChordSymbol, type ProjectClipCompSegment, type ProjectClipDesc, type ProjectClipFade, type ProjectClipTake, type ProjectCompileResult, type ProjectFadeCurve, type ProjectKeySegment, type ProjectLoopMode, type ProjectLoopRecordingDesc, type ProjectLoopRecordingResult, type ProjectMarker, type ProjectMidiClipResult, type ProjectMidiEvent, type ProjectNotePairValidation, type ProjectTrackDesc, type ProjectTrackKind, type ProjectWarpAnchor, type ProjectWarpMapDesc, RealtimeEngine, RealtimeVoiceChanger, type RealtimeVoiceChangerConfigInput, type RealtimeVoiceChangerInterleavedBuffer, type RealtimeVoiceChangerMonoBuffer, type RealtimeVoiceChangerPlanarBuffer, type RealtimeVoiceChangerPodConfig, type RemixRequest, type ResampleRequest, type RhythmAnalysisResult, type RhythmFeatures, type RirResult, type RirSynthOptions, type RoomEstimateOptions, type RoomEstimateResult, type RoomGeometryOptions, type RoomMorphOptions, type RoomMorphRequest, SYNTH_BODY_TYPES, SYNTH_ENGINE_MODES, SYNTH_FILTER_MODELS, SYNTH_FILTER_OUTPUTS, SYNTH_MOD_DESTINATIONS, SYNTH_MOD_SOURCES, SYNTH_OSC_WAVEFORMS, type SamplesRequest, type Section, SectionType, type SendTiming, type Sf2InstrumentConfig, type Sf2ProgramStatus, type SilenceRequest, type SoloProcessor, SonareError, type SourceBackend, type SpectralContrastRequest, type SpectralEditMode, type SpectralEditOptions, type SpectralEditRequest, type SpectralEditWindow, type SpectralFrameRequest, type SpectralRegionOp, type SpectralRolloffRequest, type SpectrogramRequest, type SpectrumOptions, type SpectrumReport, type StageGainReduction, type StereoAnalysis, type StftPowerResult, type StftResult, StreamAnalyzer, type StreamConfig, type StreamConfigDefaults, type StreamFramesI16, type StreamFramesU8, type StreamQuantizeConfig, StreamingEqualizer, type StreamingEqualizerConfig, StreamingMasteringChain, type StreamingMasteringChainConfig, type StreamingPlatform, StreamingRetune, type StreamingRetuneConfig, type SynthBodyType, type SynthEngineMode, type SynthEnumTables, type SynthFilterModel, type SynthFilterOutput, type SynthModDestination, type SynthModRouting, type SynthModSource, type SynthOscWaveform, type SynthPatch, type TempogramMode, type TempogramRatioRequest, type TempogramRequest, type Timbre, type TimbreAnalysisResult, type TimbreFrame, type TimeSignature, type TimeStretchRequest, type TonnetzRequest, type TransientShaperOptions, type TrimRequest, type TrimSilenceMode, type TrimSilenceOptions, type ValidateOptions, type VectorNormalizeRequest, type VectorscopeReport, type VoiceChangeOptions, type VoiceChangeRealtimeOptions, type VoiceChangeRealtimeRequest, type VoiceChangeRequest, type VoicePresetId, type VqtRequest, type VqtToAudioRequest, type WaveformPeakPyramidOptions, type WaveformPeakPyramidRequest, type WaveformPeaksOptions, type WaveformPeaksReport, type WaveformPeaksRequest, type WebMidiBinding, type WebMidiCcBinding, type WebMidiInputInfo, type ZeroCrossingRateRequest, type ZeroCrossingsRequest, abiVersion, amplitudeToDb, analyze, analyzeBpm, analyzeDynamics, analyzeImpulseResponse, analyzeMelody, analyzeRhythm, analyzeSections, analyzeTimbre, analyzeWithProgress, attachOpfsClipStream, bassChroma, bindMicrophoneInput, bindWebMidi, chordFunctionalAnalysis, chroma, chromaCens, chromaCqt, cqt, cqtToAudio, createOpfsClipPageProvider, createOpfsClipPageWorker, cyclicTempogram, dbToAmplitude, dbToPower, decompose, decomposeWithInit, deemphasis, detectAcoustic, detectBeats, detectBpm, detectChords, detectDownbeats, detectKey, detectKeyCandidates, detectOnsets, ebur128LoudnessRange, engineAbiVersion, engineCapabilities, estimateRoom, estimateTuning, fixFrames, fixLength, fourierTempogram, frameSignal, framesToSamples, framesToTime, harmonic, hasFfmpegSupport, hpss, hpssWithResidual, hybridCqt, hzToMel, hzToMidi, hzToNote, init, isInitialized, isSonareError, isWebMidiAvailable, lufs, lufsInterleaved, masterAudio, masterAudioStereo, masterAudioStereoWithProgress, masterAudioWithProgress, mastering, masteringAssistantSuggest, masteringAudioProfile, masteringChain, masteringChainStereo, masteringChainStereoWithProgress, masteringChainWithProgress, masteringDynamicsCompressor, masteringDynamicsGate, masteringDynamicsTransientShaper, masteringInsertNames, masteringInsertParamInfo, masteringInsertParamNames, masteringPairAnalysisNames, masteringPairAnalyze, masteringPairProcess, masteringPairProcessorNames, masteringPresetNames, masteringProcess, masteringProcessStereo, masteringProcessorCatalog, masteringProcessorNames, masteringRepairDeclick, masteringRepairDeclip, masteringRepairDecrackle, masteringRepairDehum, masteringRepairDenoiseClassical, masteringRepairDereverbClassical, masteringRepairTrimSilence, masteringStereoAnalysisNames, masteringStereoAnalyze, masteringStreamingPreview, melSpectrogram, melToAudio, melToHz, melToStft, meteringCrestFactorDb, meteringDcOffset, meteringDetectClipping, meteringDynamicRange, meteringPeakDb, meteringPhaseScope, meteringPhaseScopeDecimated, meteringRmsDb, meteringSpectrum, meteringSpectrumFrame, meteringStereoCorrelation, meteringStereoWidth, meteringTruePeakDb, meteringVectorscope, meteringVectorscopeDecimated, mfcc, mfccToAudio, mfccToMel, midiToHz, mixStereo, mixingScenePresetJson, mixingScenePresetNames, momentaryLufs, nnFilter, nnlsChroma, normalize, noteMove, noteStretch, noteToHz, onsetEnvelope, onsetStrengthMulti, opfsClipPageWorkerSource, padCenter, pcen, peakPick, percussive, phaseVocoder, pitchCorrectTimevarying, pitchCorrectToMidi, pitchCorrectToMidiTimevarying, pitchPyin, pitchShift, pitchTuning, pitchYin, plp, polyFeatures, powerToDb, preemphasis, projectAbiVersion, pseudoCqt, realtimeVoiceChangerPresetConfig, realtimeVoiceChangerPresetJson, realtimeVoiceChangerPresetNames, remix, resample, rmsEnergy, roomMorph, samplesToFrames, scaleCorrectionSemitones, scalePitchClassEnabled, scaleQuantizeMidi, shortTermLufs, spectralBandwidth, spectralCentroid, spectralContrast, spectralEdit, spectralFlatness, spectralRolloff, splitSilence, stft, stftDb, streamAnalyzerConfigDefaults, synthEnumTables, synthPresetNames, synthPresetPatch, synthesizeRir, tempogram, tempogramRatio, timeStretch, timeToFrames, tonnetz, trim, trimSilence, validateRealtimeVoiceChangerPresetJson, vectorNormalize, version, voiceChange, voiceChangeRealtime, voiceChangerAbiVersion, voiceCharacterPresetId, vqt, vqtToAudio, waveformPeakPyramid, waveformPeaks, zeroCrossingRate, zeroCrossings };
|
|
7220
|
+
export { type AcousticOptions, type AcousticResult, type AnalysisResult, type AnalyzeBpmOptions, type AnalyzeBpmRequest, type AnalyzeDynamicsOptions, type AnalyzeDynamicsRequest, type AnalyzeImpulseResponseRequest, type AnalyzeMelodyRequest, type AnalyzeRhythmOptions, type AnalyzeRhythmRequest, type AnalyzeSectionsOptions, type AnalyzeSectionsRequest, type AnalyzeTimbreOptions, type AnalyzeTimbreRequest, type AnalyzeWithProgressRequest, type AnalyzerStats, Audio, type AutomationCurve, BUILTIN_SYNTH_WAVEFORMS, type BarChord, type Beat, type BindMicrophoneInputOptions, type BindWebMidiOptions, type BpmAnalysisResult, type BpmCandidate, type BpmHypothesis, type BrowserAudioDecodeOptions, type BuiltinSynthBinding, type BuiltinSynthConfig, type BuiltinSynthWaveform, type ChirpRequest, type Chord, type ChordAnalysisResult, type ChordChange, type ChordDetectionOptions, type ChordFunctionalAnalysisRequest, ChordQuality, type ChromaResult, type ChromaSpectrogramRequest, type ClicksRequest, ClipPageProvider, type ClipPageRequest, type ClipPageStreamSource, ClipPageStreamer, type ClipPageStreamerEngine, type ClipPageStreamerOptions, type ClipPageStreamerRequest, type ClippingRegion, type ClippingReport, type CompressorDetector, type CompressorOptions, type CqtRequest, type CqtResult, type CqtToAudioRequest, type CyclicTempogramRequest, type DbConversionRequest, type DeclickOptions, type DeclipOptions, type DecomposeRequest, type DecomposeResult, type DecomposeWithInitRequest, type DecrackleMode, type DecrackleOptions, type DehumOptions, type DenoiseClassicalMode, type DenoiseClassicalNoiseEstimator, type DenoiseClassicalOptions, type DereverbClassicalOptions, type DetectAcousticRequest, type DetectChordsRequest, type DetectKeyRequest, type DetectOnsetsRequest, type DynamicRangeReport, type Dynamics, type DynamicsAnalysisResult, type DynamicsResult, EXPECTED_ENGINE_ABI_VERSION, EXPECTED_PROJECT_ABI_VERSION, type Ebur128LoudnessRangeRequest, type EmphasisRequest, type EngineAutomationPoint, type EngineBounceOptions, type EngineBounceResult, type EngineBus, type EngineCapabilities, type EngineCaptureSource, type EngineCaptureStatus, type EngineClip, type EngineFreezeOptions, type EngineFreezeResult, type EngineGraphSpec, type EngineMarker, type EngineMeterTelemetry, type EngineMeterTelemetryWide, type EngineMetronomeConfig, type EngineMidiClipSchedule, type EngineMidiEvent, type EngineParameterInfo, type EngineScopeTelemetry, type EngineTelemetry, type EngineTempoSegment, type EngineTimeSignatureSegment, type EngineTrackLane, type EngineTrackSend, type EngineTransportState, type EqBand, type EqBandPhase, type EqBandType, type EqCoeffMode, type EqMatchOptions, type EqSpectrumSnapshot, type EqStereoPlacement, ErrorCode, type EstimateRoomRequest, type EstimateTuningRequest, type ExternalMidiEvent, type ExternalSeparatedStem, type ExternalSeparatedStemImportRequest, type ExternalSeparatedStemImportResult, type FixFramesRequest, type FixLengthRequest, type FourierTempogramRequest, type FrameBuffer, type FrameSignalRequest, type GateOptions, type GoniometerPoint, type GriffinLimRequest, type HarmonicRequest, type HpssRequest, type HpssResult, type HpssWithResidualRequest, type HpssWithResidualResult, type Key, type KeyCandidate, type KeyDetectionOptions, KeyProfile, type KeyProfileName, type LufsInterleavedRequest, type LufsRequest, type LufsResult, MarkerKind, type MasterAudioRequest, type MasterAudioStereoRequest, type MasteringChainConfig, type MasteringChainRequest, type MasteringChainResult, type MasteringChainStereoRequest, type MasteringChainStereoResult, type MasteringChannelPolicy, type MasteringDynamicsCompressorRequest, type MasteringDynamicsGateRequest, type MasteringDynamicsTransientShaperRequest, type MasteringInsertParamInfo, type MasteringLoudnessSummary, type MasteringOptions, type MasteringPairAnalyzeRequest, type MasteringPairProcessRequest, type MasteringPreset, type MasteringProcessRequest, type MasteringProcessStereoRequest, type MasteringProcessorCatalogEntry, type MasteringProcessorParams, type MasteringRealtimeCost, type MasteringRepairDeclickRequest, type MasteringRepairDeclipRequest, type MasteringRepairDecrackleRequest, type MasteringRepairDehumRequest, type MasteringRepairDenoiseClassicalRequest, type MasteringRepairDereverbClassicalRequest, type MasteringRepairTrimSilenceRequest, type MasteringReport, type MasteringRequest, type MasteringResult, type MasteringSamplesParamsRequest, type MasteringStereoAnalyzeRequest, type MasteringStereoChainResult, type MasteringStereoResult, type MasteringStreamingPreviewRequest, type Matrix2dResult, type MelDeltaRequest, type MelPowerResult, type MelSpectrogramRequest, type MelSpectrogramResult, type MelToAudioRequest, type MelToStftRequest, type MelodyOptions, type MelodyPoint, type MelodyResult, type MeterTap, type MeteringDetectClippingOptions, type MeteringDetectClippingRequest, type MeteringDynamicRangeOptions, type MeteringDynamicRangeRequest, type MeteringSamplesRequest, type MeteringSilenceRatioRequest, type MeteringSpectrumFrameRequest, type MeteringSpectrumRequest, type MeteringStereoDecimatedRequest, type MeteringStereoRequest, type MeteringTruePeakRequest, type MfccRequest, type MfccResult, type MfccToAudioRequest, type MfccToMelRequest, type MicrophoneInputBinding, type MidiCcBindOptions, type MidiCcLearnOptions, type MixMeterSnapshot, type MixOptions, type MixResult, type MixStereoRequest, Mixer, type MixerProcessResult, type MixerRealtimeBuffer, Mode, type MusicAnalyzeRequest, type NnFilterRequest, type NnlsChromaRequest, type NormalizeRequest, type NoteMoveRequest, type NoteSegment, type NoteSegmentsRequest, type NoteStretchOptions, type NoteStretchRequest, type OfflineWorker, type OfflineWorkerCallOptions, OfflineWorkerClient, type OfflineWorkerClientOptions, type OfflineWorkerProgress, OfflineWorkerTask, type OnsetBacktrackRequest, type OnsetEnvelopeRequest, type OnsetStrengthMultiRequest, type OpfsClipPageProviderBinding, type OpfsClipPageProviderOptions, type OpfsClipStream, type OpfsClipStreamOptions, type PadCenterRequest, type PairAnalysis, type PairProcessor, type PanLaw, type PanMode, type PatternScore, type PcenRequest, type PeakPickRequest, type PercussiveRequest, type PhaseScopeReport, type PhaseVocoderRequest, type PiptrackRequest, PitchClass as Pitch, PitchClass, type PitchCorrectOptions, type PitchCorrectTimevaryingRequest, type PitchCorrectToMidiRequest, type PitchCorrectToMidiTimevaryingRequest, type PitchPyinRequest, type PitchResult, type PitchShiftRequest, type PitchTuningRequest, type PitchYinRequest, type PlpRequest, type PolyFeaturesRequest, type ProgressiveEstimate, Project, type ProjectAssistSidecar, type ProjectAutomationCurve, type ProjectAutomationLaneDesc, type ProjectAutomationPoint, type ProjectBounceOptions, type ProjectChordSymbol, type ProjectClip, type ProjectClipCompSegment, type ProjectClipDesc, type ProjectClipFade, type ProjectClipTake, type ProjectCompileResult, type ProjectFadeCurve, type ProjectKeySegment, type ProjectLoopMode, type ProjectLoopRecordingDesc, type ProjectLoopRecordingResult, type ProjectMarker, type ProjectMidiClipResult, type ProjectMidiEvent, type ProjectNotePairValidation, type ProjectSource, type ProjectTrack, type ProjectTrackDesc, type ProjectTrackKind, type ProjectWarpAnchor, type ProjectWarpMapDesc, RealtimeEngine, RealtimeVoiceChanger, type RealtimeVoiceChangerConfigInput, type RealtimeVoiceChangerInterleavedBuffer, type RealtimeVoiceChangerMonoBuffer, type RealtimeVoiceChangerPlanarBuffer, type RealtimeVoiceChangerPodConfig, type ReassignedSpectrogramRequest, type RemixRequest, type ResampleRequest, type RhythmAnalysisResult, type RhythmFeatures, type RirResult, type RirSynthOptions, type RoomEstimateOptions, type RoomEstimateResult, type RoomGeometryOptions, type RoomMorphOptions, type RoomMorphRequest, SYNTH_BODY_TYPES, SYNTH_ENGINE_MODES, SYNTH_FILTER_MODELS, SYNTH_FILTER_OUTPUTS, SYNTH_MOD_DESTINATIONS, SYNTH_MOD_SOURCES, SYNTH_OSC_WAVEFORMS, type SamplesRequest, type Section, SectionType, type SegmentAgglomerativeRequest, type SegmentCrossSimilarityRequest, type SegmentLagToRecurrenceRequest, type SegmentMatrix, type SegmentPathEnhanceRequest, type SegmentRecurrenceMatrixRequest, type SegmentRecurrenceToLagRequest, type SegmentSubsegmentRequest, type SendTiming, type Sf2InstrumentConfig, type Sf2ProgramStatus, type SilenceRequest, type SoloProcessor, type SonareCapabilities, SonareError, type SourceBackend, type SpectralContrastRequest, type SpectralEditMode, type SpectralEditOptions, type SpectralEditRequest, type SpectralEditWindow, type SpectralFrameRequest, type SpectralRegionOp, type SpectralRolloffRequest, type SpectrogramRequest, type SpectrumOptions, type SpectrumReport, type StageGainReduction, type StereoAnalysis, type StftPowerResult, type StftResult, StreamAnalyzer, type StreamConfig, type StreamConfigDefaults, type StreamFramesI16, type StreamFramesU8, type StreamQuantizeConfig, StreamingEqualizer, type StreamingEqualizerConfig, StreamingMasteringChain, type StreamingMasteringChainConfig, type StreamingPlatform, StreamingRetune, type StreamingRetuneConfig, type SynthBodyType, type SynthEngineMode, type SynthEnumTables, type SynthFilterModel, type SynthFilterOutput, type SynthModDestination, type SynthModRouting, type SynthModSource, type SynthOscWaveform, type SynthPatch, type TempogramMode, type TempogramRatioRequest, type TempogramRequest, type Timbre, type TimbreAnalysisResult, type TimbreFrame, type TimeSignature, type TimeStretchRequest, type ToneRequest, type TonnetzRequest, type TransientShaperOptions, type TrimRequest, type TrimSilenceMode, type TrimSilenceOptions, type ValidateOptions, type VectorNormalizeRequest, type VectorscopeReport, type VoiceChangeOptions, type VoiceChangeRealtimeOptions, type VoiceChangeRealtimeRequest, type VoiceChangeRequest, type VoicePresetId, type VqtRequest, type VqtToAudioRequest, type WaveformPeakPyramidOptions, type WaveformPeakPyramidRequest, type WaveformPeaksOptions, type WaveformPeaksReport, type WaveformPeaksRequest, type WebMidiBinding, type WebMidiCcBinding, type WebMidiInputInfo, type WorkletOpfsClipStreamHost, type ZeroCrossingRateRequest, type ZeroCrossingsRequest, abiVersion, amplitudeToDb, analyze, analyzeBpm, analyzeDynamics, analyzeImpulseResponse, analyzeMelody, analyzeRhythm, analyzeSections, analyzeTimbre, analyzeWithProgress, attachOpfsClipStream, bassChroma, bindMicrophoneInput, bindWebMidi, capabilities, capabilityCatalog, chirp, chordFunctionalAnalysis, chroma, chromaCens, chromaCqt, clicks, cqt, cqtToAudio, createOpfsClipPageProvider, createOpfsClipPageWorker, cyclicTempogram, dbToAmplitude, dbToPower, decompose, decomposeWithInit, deemphasis, detectAcoustic, detectBeats, detectBpm, detectChords, detectDownbeats, detectKey, detectKeyCandidates, detectOnsets, ebur128LoudnessRange, engineAbiVersion, engineCapabilities, estimateRoom, estimateTuning, fixFrames, fixLength, fourierTempogram, frameSignal, framesToSamples, framesToTime, griffinLim, harmonic, hasFfmpegSupport, hpss, hpssWithResidual, hybridCqt, hzToMel, hzToMidi, hzToNote, init, isInitialized, isSonareError, isWebMidiAvailable, lufs, lufsInterleaved, masterAudio, masterAudioStereo, masterAudioStereoWithProgress, masterAudioWithProgress, mastering, masteringAssistantSuggest, masteringAudioProfile, masteringChain, masteringChainStereo, masteringChainStereoWithProgress, masteringChainWithProgress, masteringDynamicsCompressor, masteringDynamicsGate, masteringDynamicsTransientShaper, masteringInsertNames, masteringInsertParamInfo, masteringInsertParamNames, masteringPairAnalysisNames, masteringPairAnalyze, masteringPairProcess, masteringPairProcessorNames, masteringPresetNames, masteringProcess, masteringProcessStereo, masteringProcessorCatalog, masteringProcessorNames, masteringRepairDeclick, masteringRepairDeclip, masteringRepairDecrackle, masteringRepairDehum, masteringRepairDenoiseClassical, masteringRepairDereverbClassical, masteringRepairTrimSilence, masteringStereoAnalysisNames, masteringStereoAnalyze, masteringStreamingPreview, melDelta, melSpectrogram, melToAudio, melToHz, melToStft, meteringCrestFactorDb, meteringDcOffset, meteringDetectClipping, meteringDynamicRange, meteringPeakDb, meteringPhaseScope, meteringPhaseScopeDecimated, meteringRmsDb, meteringSilenceRatio, meteringSpectrum, meteringSpectrumFrame, meteringStereoCorrelation, meteringStereoWidth, meteringTruePeakDb, meteringVectorscope, meteringVectorscopeDecimated, mfcc, mfccToAudio, mfccToMel, midiToHz, mixStereo, mixingScenePresetJson, mixingScenePresetNames, momentaryLufs, nnFilter, nnlsChroma, normalize, noteMove, noteSegments, noteStretch, noteToHz, onsetBacktrack, onsetEnvelope, onsetStrengthMulti, opfsClipPageWorkerSource, padCenter, pcen, peakPick, percussive, phaseVocoder, piptrack, pitchCorrectTimevarying, pitchCorrectToMidi, pitchCorrectToMidiTimevarying, pitchPyin, pitchShift, pitchTuning, pitchYin, plp, polyFeatures, powerToDb, preemphasis, projectAbiVersion, pseudoCqt, realtimeVoiceChangerPresetConfig, realtimeVoiceChangerPresetJson, realtimeVoiceChangerPresetNames, reassignedSpectrogram, remix, resample, rmsEnergy, roomMorph, samplesToFrames, scaleCorrectionSemitones, scalePitchClassEnabled, scaleQuantizeMidi, segmentAgglomerative, segmentCrossSimilarity, segmentLagToRecurrence, segmentPathEnhance, segmentRecurrenceMatrix, segmentRecurrenceToLag, segmentSubsegment, shortTermLufs, spectralBandwidth, spectralCentroid, spectralContrast, spectralEdit, spectralFlatness, spectralFlux, spectralRolloff, splitSilence, stft, stftDb, streamAnalyzerConfigDefaults, synthEnumTables, synthPresetNames, synthPresetPatch, synthesizeRir, tempogram, tempogramRatio, timeStretch, timeToFrames, tone, tonnetz, trim, trimSilence, validateRealtimeVoiceChangerPresetJson, vectorNormalize, version, voiceChange, voiceChangeRealtime, voiceChangerAbiVersion, voiceCharacterPresetId, vqt, vqtToAudio, waveformPeakPyramid, waveformPeaks, zeroCrossingRate, zeroCrossings };
|