@libraz/libsonare 1.7.2 → 1.8.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/NOTICE +178 -0
- package/README.md +26 -203
- package/dist/_chain_config.d.ts +14 -0
- package/dist/_chain_config.d.ts.map +1 -0
- package/dist/_effects_common.d.ts +6 -0
- package/dist/_effects_common.d.ts.map +1 -0
- package/dist/_feature_validation.d.ts +8 -0
- package/dist/_feature_validation.d.ts.map +1 -0
- package/dist/_fft_options.d.ts +24 -0
- package/dist/_fft_options.d.ts.map +1 -0
- package/dist/align_take.d.ts +50 -0
- package/dist/align_take.d.ts.map +1 -0
- package/dist/analysis.d.ts +29 -5840
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +873 -722
- package/dist/analysis.js.map +1 -1
- package/dist/analysis_helpers.d.ts +9 -0
- package/dist/analysis_helpers.d.ts.map +1 -0
- package/dist/audio.d.ts +163 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/clip_page_streamer.d.ts +133 -0
- package/dist/clip_page_streamer.d.ts.map +1 -0
- package/dist/codes.d.ts +44 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/effects_mastering.d.ts +23 -0
- package/dist/effects_mastering.d.ts.map +1 -0
- package/dist/effects_note_ops.d.ts +477 -0
- package/dist/effects_note_ops.d.ts.map +1 -0
- package/dist/effects_percussive.d.ts +185 -0
- package/dist/effects_percussive.d.ts.map +1 -0
- package/dist/effects_separation.d.ts +65 -0
- package/dist/effects_separation.d.ts.map +1 -0
- package/dist/effects_spectral.d.ts +28 -0
- package/dist/effects_spectral.d.ts.map +1 -0
- package/dist/effects_timepitch.d.ts +129 -0
- package/dist/effects_timepitch.d.ts.map +1 -0
- package/dist/effects_voice_change.d.ts +53 -0
- package/dist/effects_voice_change.d.ts.map +1 -0
- package/dist/errors.d.ts +51 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/feature_core.d.ts +341 -0
- package/dist/feature_core.d.ts.map +1 -0
- package/dist/feature_decompose.d.ts +278 -0
- package/dist/feature_decompose.d.ts.map +1 -0
- package/dist/feature_inverse.d.ts +128 -0
- package/dist/feature_inverse.d.ts.map +1 -0
- package/dist/feature_loudness.d.ts +66 -0
- package/dist/feature_loudness.d.ts.map +1 -0
- package/dist/feature_music.d.ts +307 -0
- package/dist/feature_music.d.ts.map +1 -0
- package/dist/feature_pitch.d.ts +108 -0
- package/dist/feature_pitch.d.ts.map +1 -0
- package/dist/feature_resample.d.ts +16 -0
- package/dist/feature_resample.d.ts.map +1 -0
- package/dist/feature_spectral.d.ts +137 -0
- package/dist/feature_spectral.d.ts.map +1 -0
- package/dist/feature_spectrogram.d.ts +198 -0
- package/dist/feature_spectrogram.d.ts.map +1 -0
- package/dist/features.d.ts +10 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/hrtf/default.shrf +0 -0
- package/dist/index.d.ts +74 -7431
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3758 -1362
- package/dist/index.js.map +1 -1
- package/dist/instrument_types.d.ts +517 -0
- package/dist/instrument_types.d.ts.map +1 -0
- package/dist/live_audio.d.ts +35 -0
- package/dist/live_audio.d.ts.map +1 -0
- package/dist/mastering_chain.d.ts +213 -0
- package/dist/mastering_chain.d.ts.map +1 -0
- package/dist/mastering_core.d.ts +457 -0
- package/dist/mastering_core.d.ts.map +1 -0
- package/dist/mastering_dynamics.d.ts +80 -0
- package/dist/mastering_dynamics.d.ts.map +1 -0
- package/dist/metering.d.ts +287 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/mixer.d.ts +464 -0
- package/dist/mixer.d.ts.map +1 -0
- package/dist/mixing_assistant.d.ts +62 -0
- package/dist/mixing_assistant.d.ts.map +1 -0
- package/dist/mixing_oneshot.d.ts +40 -0
- package/dist/mixing_oneshot.d.ts.map +1 -0
- package/dist/module_state.d.ts +15 -0
- package/dist/module_state.d.ts.map +1 -0
- package/dist/opfs_clip_pages.d.ts +28 -0
- package/dist/opfs_clip_pages.d.ts.map +1 -0
- package/dist/playback_renderer.d.ts +128 -0
- package/dist/playback_renderer.d.ts.map +1 -0
- package/dist/polyphony.d.ts +202 -0
- package/dist/polyphony.d.ts.map +1 -0
- package/dist/project.d.ts +8 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project_class.d.ts +562 -0
- package/dist/project_class.d.ts.map +1 -0
- package/dist/project_internal.d.ts +194 -0
- package/dist/project_internal.d.ts.map +1 -0
- package/dist/project_synth.d.ts +74 -0
- package/dist/project_synth.d.ts.map +1 -0
- package/dist/project_types.d.ts +652 -0
- package/dist/project_types.d.ts.map +1 -0
- package/dist/public_types.d.ts +185 -0
- package/dist/public_types.d.ts.map +1 -0
- package/dist/public_types_acoustic.d.ts +215 -0
- package/dist/public_types_acoustic.d.ts.map +1 -0
- package/dist/public_types_mastering.d.ts +510 -0
- package/dist/public_types_mastering.d.ts.map +1 -0
- package/dist/public_types_mixing.d.ts +436 -0
- package/dist/public_types_mixing.d.ts.map +1 -0
- package/dist/public_types_music.d.ts +619 -0
- package/dist/public_types_music.d.ts.map +1 -0
- package/dist/public_types_playback.d.ts +164 -0
- package/dist/public_types_playback.d.ts.map +1 -0
- package/dist/public_types_realtime.d.ts +174 -0
- package/dist/public_types_realtime.d.ts.map +1 -0
- package/dist/public_types_repair.d.ts +424 -0
- package/dist/public_types_repair.d.ts.map +1 -0
- package/dist/public_types_spectral.d.ts +697 -0
- package/dist/public_types_spectral.d.ts.map +1 -0
- package/dist/quick_analysis.d.ts +445 -0
- package/dist/quick_analysis.d.ts.map +1 -0
- package/dist/realtime_engine.d.ts +850 -0
- package/dist/realtime_engine.d.ts.map +1 -0
- package/dist/realtime_voice_changer.d.ts +158 -0
- package/dist/realtime_voice_changer.d.ts.map +1 -0
- package/dist/repair_dereverb.d.ts +187 -0
- package/dist/repair_dereverb.d.ts.map +1 -0
- package/dist/repair_impulsive.d.ts +186 -0
- package/dist/repair_impulsive.d.ts.map +1 -0
- package/dist/repair_noise.d.ts +239 -0
- package/dist/repair_noise.d.ts.map +1 -0
- package/dist/repair_trim.d.ts +123 -0
- package/dist/repair_trim.d.ts.map +1 -0
- package/dist/sample_bank.d.ts +84 -0
- package/dist/sample_bank.d.ts.map +1 -0
- package/dist/scale.d.ts +10 -0
- package/dist/scale.d.ts.map +1 -0
- package/dist/schemas/mixer-scene.schema.json +393 -0
- package/dist/schemas/playback-renderer-config.schema.json +392 -0
- package/dist/sonare-analysis.d.ts +8 -0
- package/dist/sonare-analysis.js +2 -2
- package/dist/sonare-analysis.wasm +0 -0
- package/dist/sonare.d.ts +3909 -0
- package/dist/sonare.js +2 -2
- package/dist/sonare.wasm +0 -0
- package/dist/stream_analyzer.d.ts +163 -0
- package/dist/stream_analyzer.d.ts.map +1 -0
- package/dist/stream_types.d.ts +214 -0
- package/dist/stream_types.d.ts.map +1 -0
- package/dist/streaming_mixing.d.ts +6 -0
- package/dist/streaming_mixing.d.ts.map +1 -0
- package/dist/streaming_processors.d.ts +335 -0
- package/dist/streaming_processors.d.ts.map +1 -0
- package/dist/transcribe.d.ts +77 -0
- package/dist/transcribe.d.ts.map +1 -0
- package/dist/validation.d.ts +140 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/web_midi.d.ts +77 -0
- package/dist/web_midi.d.ts.map +1 -0
- package/dist/worker.d.ts +5 -48
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +94 -41
- package/dist/worker.js.map +1 -1
- package/dist/worker_client.d.ts +96 -0
- package/dist/worker_client.d.ts.map +1 -0
- package/dist/worker_protocol.d.ts +43 -0
- package/dist/worker_protocol.d.ts.map +1 -0
- package/dist/worklet/audio_types.d.ts +21 -0
- package/dist/worklet/audio_types.d.ts.map +1 -0
- package/dist/worklet/engine-automation.d.ts +29 -0
- package/dist/worklet/engine-automation.d.ts.map +1 -0
- package/dist/worklet/engine-capture-facade.d.ts +35 -0
- package/dist/worklet/engine-capture-facade.d.ts.map +1 -0
- package/dist/worklet/engine-clips.d.ts +23 -0
- package/dist/worklet/engine-clips.d.ts.map +1 -0
- package/dist/worklet/engine-markers.d.ts +40 -0
- package/dist/worklet/engine-markers.d.ts.map +1 -0
- package/dist/worklet/engine-mixer-facade.d.ts +128 -0
- package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
- package/dist/worklet/engine-node.d.ts +81 -0
- package/dist/worklet/engine-node.d.ts.map +1 -0
- package/dist/worklet/engine-offline.d.ts +81 -0
- package/dist/worklet/engine-offline.d.ts.map +1 -0
- package/dist/worklet/engine-options.d.ts +12 -0
- package/dist/worklet/engine-options.d.ts.map +1 -0
- package/dist/worklet/engine-parameter-facade.d.ts +106 -0
- package/dist/worklet/engine-parameter-facade.d.ts.map +1 -0
- package/dist/worklet/engine-processor.d.ts +68 -0
- package/dist/worklet/engine-processor.d.ts.map +1 -0
- package/dist/worklet/engine-register.d.ts +2 -0
- package/dist/worklet/engine-register.d.ts.map +1 -0
- package/dist/worklet/engine-strips.d.ts +73 -0
- package/dist/worklet/engine-strips.d.ts.map +1 -0
- package/dist/worklet/engine-sync.d.ts +37 -0
- package/dist/worklet/engine-sync.d.ts.map +1 -0
- package/dist/worklet/engine-tempo-facade.d.ts +48 -0
- package/dist/worklet/engine-tempo-facade.d.ts.map +1 -0
- package/dist/worklet/engine.d.ts +397 -0
- package/dist/worklet/engine.d.ts.map +1 -0
- package/dist/worklet/guards.d.ts +47 -0
- package/dist/worklet/guards.d.ts.map +1 -0
- package/dist/worklet/messages.d.ts +710 -0
- package/dist/worklet/messages.d.ts.map +1 -0
- package/dist/worklet/mixer-processor.d.ts +46 -0
- package/dist/worklet/mixer-processor.d.ts.map +1 -0
- package/dist/worklet/playback-processor.d.ts +62 -0
- package/dist/worklet/playback-processor.d.ts.map +1 -0
- package/dist/worklet/protocol.d.ts +323 -0
- package/dist/worklet/protocol.d.ts.map +1 -0
- package/dist/worklet/voice-changer-processor.d.ts +41 -0
- package/dist/worklet/voice-changer-processor.d.ts.map +1 -0
- package/dist/worklet.d.ts +16 -2515
- package/dist/worklet.d.ts.map +1 -0
- package/dist/worklet.js +2763 -501
- package/dist/worklet.js.map +1 -1
- package/package.json +23 -12
- package/src/_effects_common.ts +17 -0
- package/src/_feature_validation.ts +34 -0
- package/src/_fft_options.ts +39 -0
- package/src/align_take.ts +64 -0
- package/src/analysis.ts +56 -3
- package/src/analysis_helpers.ts +7 -0
- package/src/audio.ts +106 -3
- package/src/codes.ts +39 -2
- package/src/effects_mastering.ts +97 -22
- package/src/effects_note_ops.ts +635 -0
- package/src/effects_percussive.ts +217 -0
- package/src/effects_separation.ts +150 -0
- package/src/effects_spectral.ts +60 -0
- package/src/effects_timepitch.ts +377 -0
- package/src/errors.ts +23 -1
- package/src/feature_core.ts +127 -2
- package/src/feature_decompose.ts +633 -0
- package/src/feature_inverse.ts +454 -0
- package/src/feature_loudness.ts +125 -0
- package/src/feature_music.ts +107 -14
- package/src/feature_pitch.ts +96 -1
- package/src/feature_spectral.ts +16 -611
- package/src/feature_spectrogram.ts +63 -450
- package/src/features.ts +36 -22
- package/src/index.ts +282 -30
- package/src/instrument_types.ts +645 -0
- package/src/live_audio.ts +27 -1
- package/src/mastering_chain.ts +184 -0
- package/src/mastering_core.ts +346 -32
- package/src/mastering_dynamics.ts +22 -11
- package/src/metering.ts +67 -24
- package/src/mixer.ts +212 -3
- package/src/mixing_assistant.ts +138 -0
- package/src/mixing_oneshot.ts +10 -5
- package/src/module_state.ts +24 -2
- package/src/playback_renderer.ts +252 -0
- package/src/polyphony.ts +279 -0
- package/src/project.ts +61 -24
- package/src/project_class.ts +450 -27
- package/src/project_internal.ts +149 -42
- package/src/project_synth.ts +67 -1
- package/src/project_types.ts +268 -270
- package/src/public_types.ts +122 -3
- package/src/public_types_acoustic.ts +112 -3
- package/src/public_types_mastering.ts +254 -73
- package/src/public_types_mixing.ts +363 -1
- package/src/public_types_music.ts +312 -2
- package/src/public_types_playback.ts +195 -0
- package/src/public_types_realtime.ts +39 -7
- package/src/public_types_repair.ts +446 -0
- package/src/public_types_spectral.ts +487 -1
- package/src/quick_analysis.ts +203 -26
- package/src/realtime_engine.ts +711 -28
- package/src/realtime_voice_changer.ts +55 -1
- package/src/repair_dereverb.ts +299 -0
- package/src/repair_impulsive.ts +395 -0
- package/src/repair_noise.ts +425 -0
- package/src/repair_trim.ts +226 -0
- package/src/sample_bank.ts +113 -0
- package/src/sonare.js.d.ts +1122 -30
- package/src/stream_analyzer.ts +36 -4
- package/src/stream_types.ts +37 -0
- package/src/streaming_mixing.ts +1 -1
- package/src/streaming_processors.ts +194 -10
- package/src/transcribe.ts +89 -0
- package/src/validation.ts +285 -11
- package/src/web_midi.ts +1 -6
- package/src/worker.ts +18 -2
- package/src/worklet/audio_types.ts +37 -0
- package/src/worklet/engine-mixer-facade.ts +444 -10
- package/src/worklet/engine-node.ts +78 -26
- package/src/worklet/engine-offline.ts +14 -8
- package/src/worklet/engine-parameter-facade.ts +21 -0
- package/src/worklet/engine-processor.ts +272 -83
- package/src/worklet/engine-register.ts +32 -18
- package/src/worklet/engine-strips.ts +280 -9
- package/src/worklet/engine-sync.ts +14 -6
- package/src/worklet/engine.ts +365 -31
- package/src/worklet/guards.ts +140 -44
- package/src/worklet/messages.ts +227 -2
- package/src/worklet/mixer-processor.ts +109 -47
- package/src/worklet/playback-processor.ts +300 -0
- package/src/worklet/protocol.ts +53 -3
- package/src/worklet/voice-changer-processor.ts +17 -11
- package/src/worklet.ts +17 -0
- package/src/effects_transform.ts +0 -718
- package/src/mastering_repair.ts +0 -273
package/src/sonare.js.d.ts
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Hand-written type declarations describing the Emscripten/embind WASM module.
|
|
3
|
+
*
|
|
4
|
+
* This file is NOT generated — nothing in the build writes it. A new embind
|
|
5
|
+
* registration reaches TypeScript only when someone declares it here, in the
|
|
6
|
+
* same change as the binding, so a missing declaration is a lockstep omission
|
|
7
|
+
* rather than a stale artifact waiting on a rebuild.
|
|
3
8
|
*/
|
|
4
9
|
|
|
10
|
+
import type { SplitSilenceCommonWithReportResult } from './feature_core';
|
|
11
|
+
import type { StripMeteringOptions } from './mixer';
|
|
5
12
|
import type {
|
|
13
|
+
NoteEditInput,
|
|
14
|
+
NoteObject,
|
|
15
|
+
NoteObjectInput,
|
|
16
|
+
NoteSetEntry,
|
|
17
|
+
NoteTarget,
|
|
18
|
+
NoteTargetAssignResult,
|
|
19
|
+
NoteTargetUnmatchedPolicy,
|
|
20
|
+
PercussiveEvent,
|
|
21
|
+
PercussiveEventInput,
|
|
22
|
+
PitchDecompositionResult,
|
|
6
23
|
ProgressCallback,
|
|
7
24
|
SonareCapabilities,
|
|
8
25
|
SpectralRegionOp,
|
|
@@ -74,9 +91,30 @@ export interface WasmRealtimeVoiceChangerPodConfig {
|
|
|
74
91
|
|
|
75
92
|
export interface WasmBeatResult {
|
|
76
93
|
time: number;
|
|
94
|
+
/**
|
|
95
|
+
* Onset-envelope value sampled at the beat's frame — a single raw frame, not
|
|
96
|
+
* a normalized or relative salience. Use
|
|
97
|
+
* `WasmBeatObservationsResult.onsetStrength` for accent scoring.
|
|
98
|
+
*/
|
|
77
99
|
strength: number;
|
|
78
100
|
}
|
|
79
101
|
|
|
102
|
+
/** Beat-level evidence behind the downbeat and meter decisions. */
|
|
103
|
+
export interface WasmBeatObservationsResult {
|
|
104
|
+
onsetStrength: number[];
|
|
105
|
+
lowFrequencyEnergy: number[];
|
|
106
|
+
chordChange: number[];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface WasmMeterEstimateResult {
|
|
110
|
+
timeSignature: WasmTimeSignatureResult;
|
|
111
|
+
downbeatPhase: number;
|
|
112
|
+
searched: boolean;
|
|
113
|
+
grouping: number[];
|
|
114
|
+
candidateScores: number[];
|
|
115
|
+
candidates: WasmTimeSignatureResult[];
|
|
116
|
+
}
|
|
117
|
+
|
|
80
118
|
export interface WasmChordResult {
|
|
81
119
|
root: number;
|
|
82
120
|
bass: number;
|
|
@@ -87,6 +125,10 @@ export interface WasmChordResult {
|
|
|
87
125
|
name: string;
|
|
88
126
|
}
|
|
89
127
|
|
|
128
|
+
export interface WasmAnalysisChordResult extends WasmChordResult {
|
|
129
|
+
romanNumeral: string;
|
|
130
|
+
}
|
|
131
|
+
|
|
90
132
|
export interface WasmSectionResult {
|
|
91
133
|
type: number;
|
|
92
134
|
start: number;
|
|
@@ -143,7 +185,11 @@ export interface WasmAnalysisResult {
|
|
|
143
185
|
timeSignature: WasmTimeSignatureResult;
|
|
144
186
|
timeSignatureCandidates: WasmTimeSignatureResult[];
|
|
145
187
|
beats: WasmBeatResult[];
|
|
146
|
-
|
|
188
|
+
downbeatIndices: number[];
|
|
189
|
+
downbeatPhase: number;
|
|
190
|
+
beatObservations: WasmBeatObservationsResult;
|
|
191
|
+
beatLocalBpm: number[];
|
|
192
|
+
chords: WasmAnalysisChordResult[];
|
|
147
193
|
sections: WasmSectionResult[];
|
|
148
194
|
timbre: WasmTimbreResult;
|
|
149
195
|
dynamics: WasmDynamicsResult;
|
|
@@ -270,6 +316,9 @@ export interface WasmRoomGeometryOptions {
|
|
|
270
316
|
ismOrder?: number;
|
|
271
317
|
seed?: number;
|
|
272
318
|
maxSeconds?: number;
|
|
319
|
+
airAbsorptionEnabled?: boolean;
|
|
320
|
+
airTemperatureC?: number;
|
|
321
|
+
airHumidityPercent?: number;
|
|
273
322
|
}
|
|
274
323
|
|
|
275
324
|
export interface WasmRirSynthOptions extends WasmRoomGeometryOptions {
|
|
@@ -279,10 +328,24 @@ export interface WasmRirSynthOptions extends WasmRoomGeometryOptions {
|
|
|
279
328
|
crossfadeMs?: number;
|
|
280
329
|
}
|
|
281
330
|
|
|
331
|
+
export interface WasmRirDiagnostic {
|
|
332
|
+
code: string;
|
|
333
|
+
message: string;
|
|
334
|
+
severity: 'info' | 'warning' | 'error';
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
export interface WasmRoomMorphResult {
|
|
338
|
+
audio: Float32Array;
|
|
339
|
+
sampleRate: number;
|
|
340
|
+
diagnostics: WasmRirDiagnostic[];
|
|
341
|
+
}
|
|
342
|
+
|
|
282
343
|
export interface WasmRirResult {
|
|
283
344
|
rir: Float32Array;
|
|
284
345
|
sampleRate: number;
|
|
285
346
|
hasError: boolean;
|
|
347
|
+
errorMessage: string;
|
|
348
|
+
diagnostics: WasmRirDiagnostic[];
|
|
286
349
|
}
|
|
287
350
|
|
|
288
351
|
export interface WasmRoomEstimateOptions {
|
|
@@ -307,6 +370,199 @@ export interface WasmRoomEstimateResult {
|
|
|
307
370
|
rt60Bands: Float32Array;
|
|
308
371
|
}
|
|
309
372
|
|
|
373
|
+
/** Every field of a dereverb config, as `masteringRepairDereverbConfigForRoom` returns it. */
|
|
374
|
+
export interface WasmDereverbClassicalConfig {
|
|
375
|
+
threshold: number;
|
|
376
|
+
attenuation: number;
|
|
377
|
+
nFft: number;
|
|
378
|
+
hopLength: number;
|
|
379
|
+
t60Sec: number;
|
|
380
|
+
lateDelayMs: number;
|
|
381
|
+
overSubtraction: number;
|
|
382
|
+
spectralFloor: number;
|
|
383
|
+
wpeEnabled: boolean;
|
|
384
|
+
wpeIterations: number;
|
|
385
|
+
wpeTaps: number;
|
|
386
|
+
wpeStrength: number;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/** What a declick analysis found in one channel, as `masteringRepairDeclickStereo` returns it. Runs, not samples. */
|
|
390
|
+
export interface WasmClickDetection {
|
|
391
|
+
count: number;
|
|
392
|
+
rejected: number;
|
|
393
|
+
longestRunSamples: number;
|
|
394
|
+
perSecond: number;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/** What a declick pass found in one channel of a stereo declick and what it did to it. */
|
|
398
|
+
export interface WasmDeclickReport {
|
|
399
|
+
detected: WasmClickDetection;
|
|
400
|
+
repairedRuns: number;
|
|
401
|
+
repairedSamples: number;
|
|
402
|
+
linkedRuns: number;
|
|
403
|
+
lpcModelUsed: boolean;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
export interface WasmDeclickStereoResult {
|
|
407
|
+
left: Float32Array;
|
|
408
|
+
right: Float32Array;
|
|
409
|
+
leftReport: WasmDeclickReport;
|
|
410
|
+
rightReport: WasmDeclickReport;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/** What a declip analysis found in one channel, as `masteringRepairDeclipStereo` returns it. */
|
|
414
|
+
export interface WasmClipDetection {
|
|
415
|
+
sampleCount: number;
|
|
416
|
+
sampleFraction: number;
|
|
417
|
+
runCount: number;
|
|
418
|
+
longestRunSamples: number;
|
|
419
|
+
flatRunCount: number;
|
|
420
|
+
longestFlatRunSamples: number;
|
|
421
|
+
flatSampleCount: number;
|
|
422
|
+
flatLevel: number;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/** What a declip pass found in one channel of a stereo declip and what it did to it. */
|
|
426
|
+
export interface WasmDeclipReport {
|
|
427
|
+
detected: WasmClipDetection;
|
|
428
|
+
lpcReconstructedRuns: number;
|
|
429
|
+
interpolatedRuns: number;
|
|
430
|
+
repairedSamples: number;
|
|
431
|
+
linkedRuns: number;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
export interface WasmDeclipStereoResult {
|
|
435
|
+
left: Float32Array;
|
|
436
|
+
right: Float32Array;
|
|
437
|
+
leftReport: WasmDeclipReport;
|
|
438
|
+
rightReport: WasmDeclipReport;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/** What a decrackle analysis found in one channel, as `masteringRepairDecrackleStereo` returns it. */
|
|
442
|
+
export interface WasmCrackleDetection {
|
|
443
|
+
sampleCount: number;
|
|
444
|
+
sampleFraction: number;
|
|
445
|
+
perSecond: number;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/** What a decrackle pass found in one channel of a stereo decrackle and what it did to it. */
|
|
449
|
+
export interface WasmDecrackleReport {
|
|
450
|
+
detected: WasmCrackleDetection;
|
|
451
|
+
replacedSamples: number;
|
|
452
|
+
detailCoefficients: number;
|
|
453
|
+
shrunkCoefficients: number;
|
|
454
|
+
noiseSigma: number;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
export interface WasmDecrackleStereoResult {
|
|
458
|
+
left: Float32Array;
|
|
459
|
+
right: Float32Array;
|
|
460
|
+
leftReport: WasmDecrackleReport;
|
|
461
|
+
rightReport: WasmDecrackleReport;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/** What a dehum analysis found in one channel, as `masteringRepairDehumStereo` returns it. */
|
|
465
|
+
export interface WasmHumDetection {
|
|
466
|
+
fundamentalHz: number;
|
|
467
|
+
fundamentalProminence: number;
|
|
468
|
+
harmonics: number;
|
|
469
|
+
harmonicDbfs: Float32Array;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/** What a dehum pass found in one channel of a stereo dehum and what it did to it. */
|
|
473
|
+
export interface WasmDehumReport {
|
|
474
|
+
detected: WasmHumDetection;
|
|
475
|
+
notchedHarmonics: number;
|
|
476
|
+
appliedFundamentalHz: number;
|
|
477
|
+
fundamentalDriftHz: number;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
export interface WasmDehumStereoResult {
|
|
481
|
+
left: Float32Array;
|
|
482
|
+
right: Float32Array;
|
|
483
|
+
leftReport: WasmDehumReport;
|
|
484
|
+
rightReport: WasmDehumReport;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/** What a denoise analysis found, as `masteringRepairDenoiseClassicalStereo` returns it. */
|
|
488
|
+
export interface WasmNoiseDetection {
|
|
489
|
+
floorDbfs: number;
|
|
490
|
+
bandFloorDbfs: Float32Array;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/** What a stereo denoise pass found and what it removed. */
|
|
494
|
+
export interface WasmDenoiseReport {
|
|
495
|
+
detected: WasmNoiseDetection;
|
|
496
|
+
meanReductionDb: number;
|
|
497
|
+
maxReductionDb: number;
|
|
498
|
+
floorLimitedFraction: number;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/** One `report`, not a per-channel pair: the gain mask is one array applied to both channels. */
|
|
502
|
+
export interface WasmDenoiseStereoResult {
|
|
503
|
+
left: Float32Array;
|
|
504
|
+
right: Float32Array;
|
|
505
|
+
report: WasmDenoiseReport;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/** The N-channel form: one mask over the set, and one report whose `detected` is the set's. */
|
|
509
|
+
export interface WasmDenoiseLinkedResult {
|
|
510
|
+
channels: Float32Array[];
|
|
511
|
+
report: WasmDenoiseReport;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/** What a dereverb analysis found, as `masteringRepairDereverbClassicalStereo` returns it. */
|
|
515
|
+
export interface WasmReverbDetection {
|
|
516
|
+
lateDecayRatioDb: number;
|
|
517
|
+
latePredictability: number;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
/** What a stereo dereverb pass found and what it removed. */
|
|
521
|
+
export interface WasmDereverbReport {
|
|
522
|
+
detected: WasmReverbDetection;
|
|
523
|
+
meanReductionDb: number;
|
|
524
|
+
suppressedFraction: number;
|
|
525
|
+
wpePredictorNorm: number;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/** One `report`, not a per-channel pair: the mask and the WPE predictor set are each one
|
|
529
|
+
* object applied to both channels. */
|
|
530
|
+
export interface WasmDereverbStereoResult {
|
|
531
|
+
left: Float32Array;
|
|
532
|
+
right: Float32Array;
|
|
533
|
+
report: WasmDereverbReport;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
/** The N-channel form: one mask and one WPE predictor set over the whole channel set. */
|
|
537
|
+
export interface WasmDereverbLinkedResult {
|
|
538
|
+
channels: Float32Array[];
|
|
539
|
+
report: WasmDereverbReport;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/** One half-open input-buffer range, as a trim pass reports it. */
|
|
543
|
+
export interface WasmTrimRange {
|
|
544
|
+
first: number;
|
|
545
|
+
lastExclusive: number;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
/** What a trim pass kept and what it dropped. */
|
|
549
|
+
export interface WasmTrimReport {
|
|
550
|
+
range: WasmTrimRange;
|
|
551
|
+
removedHeadSamples: number;
|
|
552
|
+
removedTailSamples: number;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/** Arrays SHORTER than the input, and empty when neither channel carries signal. `report.range`
|
|
556
|
+
* is the union applied to both channels; the two per-channel ranges are what it was formed
|
|
557
|
+
* from. */
|
|
558
|
+
export interface WasmTrimSilenceStereoResult {
|
|
559
|
+
left: Float32Array;
|
|
560
|
+
right: Float32Array;
|
|
561
|
+
report: WasmTrimReport;
|
|
562
|
+
leftRange: WasmTrimRange;
|
|
563
|
+
rightRange: WasmTrimRange;
|
|
564
|
+
}
|
|
565
|
+
|
|
310
566
|
export interface WasmRoomMorphOptions extends WasmRoomGeometryOptions {
|
|
311
567
|
wet?: number;
|
|
312
568
|
sourceTailSuppression?: number;
|
|
@@ -464,6 +720,48 @@ export interface WasmMelodyPoint {
|
|
|
464
720
|
confidence: number;
|
|
465
721
|
}
|
|
466
722
|
|
|
723
|
+
/**
|
|
724
|
+
* Boundary options as the embind wrapper reads them. Every field is optional
|
|
725
|
+
* because the wrapper seeds the bag from `BoundaryConfig`, so an omitted one
|
|
726
|
+
* takes the core's own default.
|
|
727
|
+
*
|
|
728
|
+
* Declaring them required is what obliged the facade to spell all ten defaults
|
|
729
|
+
* before the call, which made those literals the effective defaults on npm and
|
|
730
|
+
* put the core's out of reach. That shape did buy one thing — a field name
|
|
731
|
+
* drifting from the embind reader failed to compile instead of falling back in
|
|
732
|
+
* silence — and the typed-options test carries it instead: it sends a
|
|
733
|
+
* wrong-typed value for each of the ten keys and requires the module to refuse,
|
|
734
|
+
* which stops happening the moment the reader stops reading one of them.
|
|
735
|
+
*/
|
|
736
|
+
export interface WasmBoundaryOptions {
|
|
737
|
+
nFft?: number;
|
|
738
|
+
hopLength?: number;
|
|
739
|
+
kernelSize?: number;
|
|
740
|
+
threshold?: number;
|
|
741
|
+
absoluteThreshold?: number;
|
|
742
|
+
nMfcc?: number;
|
|
743
|
+
nChroma?: number;
|
|
744
|
+
peakDistance?: number;
|
|
745
|
+
useMfcc?: boolean;
|
|
746
|
+
useChroma?: boolean;
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
export interface WasmBoundary {
|
|
750
|
+
time: number;
|
|
751
|
+
frame: number;
|
|
752
|
+
strength: number;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
export interface WasmBoundaryResult {
|
|
756
|
+
boundaries: WasmBoundary[];
|
|
757
|
+
noveltyCurve: Float32Array;
|
|
758
|
+
noveltyPeak: number;
|
|
759
|
+
sampleRate: number;
|
|
760
|
+
hopLength: number;
|
|
761
|
+
nFrames: number;
|
|
762
|
+
frameStride: number;
|
|
763
|
+
}
|
|
764
|
+
|
|
467
765
|
export interface WasmMelodyResult {
|
|
468
766
|
points: WasmMelodyPoint[];
|
|
469
767
|
pitchRangeOctaves: number;
|
|
@@ -490,6 +788,17 @@ export interface WasmLufsResult {
|
|
|
490
788
|
loudnessRange: number;
|
|
491
789
|
}
|
|
492
790
|
|
|
791
|
+
/**
|
|
792
|
+
* The two per-block loudness series a multi-channel measurement builds, in
|
|
793
|
+
* LUFS. A signal shorter than a window yields an empty series for it.
|
|
794
|
+
*/
|
|
795
|
+
export interface WasmLufsSeriesResult {
|
|
796
|
+
/** 400 ms momentary series. */
|
|
797
|
+
momentary: Float32Array;
|
|
798
|
+
/** 3 s short-term series. */
|
|
799
|
+
shortTerm: Float32Array;
|
|
800
|
+
}
|
|
801
|
+
|
|
493
802
|
export interface WasmMasteringResult {
|
|
494
803
|
samples: Float32Array;
|
|
495
804
|
sampleRate: number;
|
|
@@ -498,6 +807,26 @@ export interface WasmMasteringResult {
|
|
|
498
807
|
appliedGainDb: number;
|
|
499
808
|
loudnessTargetLimited?: boolean;
|
|
500
809
|
latencySamples?: number;
|
|
810
|
+
/**
|
|
811
|
+
* Samples the named processor replaced with a finite in-domain one,
|
|
812
|
+
* keeping the output finite and in range. A non-finite sample supplied by
|
|
813
|
+
* the caller is rejected before the processor runs, so a replacement is
|
|
814
|
+
* always of a value the processor itself produced.
|
|
815
|
+
*
|
|
816
|
+
* Whether this can be non-zero depends on which processor was named: one
|
|
817
|
+
* that does not substitute reports zero because it has nothing to replace
|
|
818
|
+
* with, not because nothing needed replacing.
|
|
819
|
+
*/
|
|
820
|
+
nonFiniteSubstitutionCount: number;
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
export interface WasmLoudnessMatchResult {
|
|
824
|
+
samples: Float32Array;
|
|
825
|
+
sampleRate: number;
|
|
826
|
+
referenceLufs: number;
|
|
827
|
+
sourceLufs: number;
|
|
828
|
+
appliedGainDb: number;
|
|
829
|
+
matchedTruePeakDbtp: number;
|
|
501
830
|
}
|
|
502
831
|
|
|
503
832
|
export interface WasmStageGainReduction {
|
|
@@ -527,6 +856,19 @@ export interface WasmMasteringChainResult extends WasmMasteringResult {
|
|
|
527
856
|
outputTruePeakDbtp: number;
|
|
528
857
|
outputLra: number;
|
|
529
858
|
loudnessTargetLimited: boolean;
|
|
859
|
+
/**
|
|
860
|
+
* Samples a stage replaced with a finite in-domain one, keeping the
|
|
861
|
+
* output finite and in range. A non-finite sample supplied by the caller
|
|
862
|
+
* is rejected before any stage runs, so a replacement is always of a
|
|
863
|
+
* value a stage itself produced.
|
|
864
|
+
*
|
|
865
|
+
* Only the true-peak limiters replace anything, so with the maximizer's
|
|
866
|
+
* limiter and the loudness stage both disabled a zero here means no
|
|
867
|
+
* stage was able to replace anything rather than that nothing needed
|
|
868
|
+
* replacing. Overrides the inherited {@link WasmMasteringResult} doc,
|
|
869
|
+
* which describes a single named processor rather than a chain.
|
|
870
|
+
*/
|
|
871
|
+
nonFiniteSubstitutionCount: number;
|
|
530
872
|
stageGainReductions: WasmStageGainReduction[];
|
|
531
873
|
report: WasmMasteringReport;
|
|
532
874
|
}
|
|
@@ -542,6 +884,8 @@ export interface WasmMasteringStereoChainResult {
|
|
|
542
884
|
outputTruePeakDbtp: number;
|
|
543
885
|
outputLra: number;
|
|
544
886
|
loudnessTargetLimited: boolean;
|
|
887
|
+
/** See {@link WasmMasteringChainResult} for field semantics. Aggregated over both channels. */
|
|
888
|
+
nonFiniteSubstitutionCount: number;
|
|
545
889
|
stageGainReductions: WasmStageGainReduction[];
|
|
546
890
|
report: WasmMasteringReport;
|
|
547
891
|
}
|
|
@@ -554,6 +898,9 @@ export interface WasmMasteringStereoResult {
|
|
|
554
898
|
outputLufs: number;
|
|
555
899
|
appliedGainDb: number;
|
|
556
900
|
latencySamples: number;
|
|
901
|
+
loudnessTargetLimited: boolean;
|
|
902
|
+
/** Aggregated over both channels. */
|
|
903
|
+
nonFiniteSubstitutionCount: number;
|
|
557
904
|
}
|
|
558
905
|
|
|
559
906
|
export interface WasmMixMeterSnapshot {
|
|
@@ -570,13 +917,24 @@ export interface WasmMixMeterSnapshot {
|
|
|
570
917
|
shortTermLufs: number;
|
|
571
918
|
integratedLufs: number;
|
|
572
919
|
gainReductionDb: number;
|
|
920
|
+
/**
|
|
921
|
+
* Left-channel inter-sample (true) peak in dB, from the ITU-R BS.1770-4
|
|
922
|
+
* polyphase reconstruction at 4x. A streaming measurement: the centered
|
|
923
|
+
* reconstruction stencil needs a few future samples a realtime path does not
|
|
924
|
+
* have, so each block's last samples read marginally low (about 0.1 dB across
|
|
925
|
+
* 64..8192-sample blocks on a near-Nyquist tone, always under-reading). Use
|
|
926
|
+
* `meteringTruePeakDb` over the whole signal for an exact dBTP number.
|
|
927
|
+
*/
|
|
573
928
|
truePeakDbL: number;
|
|
929
|
+
/** Right-channel inter-sample (true) peak in dB. See {@link truePeakDbL}. */
|
|
574
930
|
truePeakDbR: number;
|
|
931
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDbL}. */
|
|
575
932
|
maxTruePeakDb: number;
|
|
576
933
|
seq: number;
|
|
577
934
|
channelCount: number;
|
|
578
935
|
peakDb: number[];
|
|
579
936
|
rmsDb: number[];
|
|
937
|
+
/** Per-plane inter-sample peak in dB; [0]/[1] mirror {@link truePeakDbL}/R. */
|
|
580
938
|
truePeakDb: number[];
|
|
581
939
|
}
|
|
582
940
|
|
|
@@ -598,7 +956,7 @@ export interface WasmEngineClip {
|
|
|
598
956
|
gain?: number;
|
|
599
957
|
fadeInSamples?: number;
|
|
600
958
|
fadeOutSamples?: number;
|
|
601
|
-
warpMode?: 'off' | 'repitch' | 'tempo-sync' | 0 | 1 | 2;
|
|
959
|
+
warpMode?: 'off' | 'repitch' | 'tempo-sync' | 'time-stretch' | 0 | 1 | 2 | 3;
|
|
602
960
|
warpAnchors?: Array<{ warpSample: number; sourceSample: number }>;
|
|
603
961
|
pageProvider?: number | { readonly id: number };
|
|
604
962
|
}
|
|
@@ -628,6 +986,13 @@ export interface WasmEngineBus {
|
|
|
628
986
|
busId: number;
|
|
629
987
|
gainDb?: number;
|
|
630
988
|
channelLayout?: number;
|
|
989
|
+
/**
|
|
990
|
+
* Bus this bus's output sums into instead of the master mix; 0 or absent
|
|
991
|
+
* keeps it on the master mix.
|
|
992
|
+
*/
|
|
993
|
+
outputBusId?: number;
|
|
994
|
+
/** Sends to other buses, in the same shape as a track lane's sends. */
|
|
995
|
+
sends?: WasmEngineTrackSend[];
|
|
631
996
|
}
|
|
632
997
|
|
|
633
998
|
export interface WasmClipPageRequest {
|
|
@@ -639,12 +1004,18 @@ export interface WasmClipPageRequest {
|
|
|
639
1004
|
export interface WasmEngineParameterInfo {
|
|
640
1005
|
id: number;
|
|
641
1006
|
name: string;
|
|
642
|
-
unit
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
1007
|
+
/** Display unit; omit for an empty string. */
|
|
1008
|
+
unit?: string;
|
|
1009
|
+
/** Lower end of the parameter range. Default `0`. */
|
|
1010
|
+
minValue?: number;
|
|
1011
|
+
/** Upper end of the parameter range. Default `1`. */
|
|
1012
|
+
maxValue?: number;
|
|
1013
|
+
/** Value the parameter starts at. Default `0`. */
|
|
1014
|
+
defaultValue?: number;
|
|
1015
|
+
/** Whether the parameter is safe to change from the realtime thread. Default `true`. */
|
|
1016
|
+
rtSafe?: boolean;
|
|
1017
|
+
/** Curve used by automation points that omit `curveToNext`. Default `1` (exponential). */
|
|
1018
|
+
defaultCurve?: number;
|
|
648
1019
|
}
|
|
649
1020
|
|
|
650
1021
|
export interface WasmEngineAutomationPoint {
|
|
@@ -727,6 +1098,13 @@ export interface WasmEngineGraphConnection {
|
|
|
727
1098
|
sourcePort: number;
|
|
728
1099
|
destNode: string;
|
|
729
1100
|
destPort: number;
|
|
1101
|
+
/**
|
|
1102
|
+
* Mixing intent (`0` = replace, `1` = add).
|
|
1103
|
+
*
|
|
1104
|
+
* NOTE: not currently honored — the compiled graph always sums edges into a
|
|
1105
|
+
* shared destination port in an order-independent way (the first edge into a
|
|
1106
|
+
* port overwrites, every later edge adds), regardless of this value.
|
|
1107
|
+
*/
|
|
730
1108
|
mix?: number;
|
|
731
1109
|
}
|
|
732
1110
|
|
|
@@ -755,6 +1133,12 @@ export interface WasmEngineTelemetry {
|
|
|
755
1133
|
}
|
|
756
1134
|
|
|
757
1135
|
export interface WasmEngineMeterTelemetry {
|
|
1136
|
+
/**
|
|
1137
|
+
* Telemetry tap target id: `0` master mix, `laneIndex + 1` (1..32) for track
|
|
1138
|
+
* lanes, `33 + busIndex` (33..40) for buses, and `0xFFFF` for the
|
|
1139
|
+
* input-monitor capture tap. Handle `0xFFFF` explicitly -- a naive
|
|
1140
|
+
* `targetId - 1` index into a 32-entry lane array runs past its end.
|
|
1141
|
+
*/
|
|
758
1142
|
targetId: number;
|
|
759
1143
|
renderFrame: number;
|
|
760
1144
|
seq: number;
|
|
@@ -762,8 +1146,18 @@ export interface WasmEngineMeterTelemetry {
|
|
|
762
1146
|
peakDbR: number;
|
|
763
1147
|
rmsDbL: number;
|
|
764
1148
|
rmsDbR: number;
|
|
1149
|
+
/**
|
|
1150
|
+
* Left-channel inter-sample (true) peak in dB, from the ITU-R BS.1770-4
|
|
1151
|
+
* polyphase reconstruction at 4x. A streaming measurement: the centered
|
|
1152
|
+
* reconstruction stencil needs a few future samples a realtime path does not
|
|
1153
|
+
* have, so each block's last samples read marginally low (about 0.1 dB across
|
|
1154
|
+
* 64..8192-sample blocks on a near-Nyquist tone, always under-reading). Use
|
|
1155
|
+
* `meteringTruePeakDb` over the whole signal for an exact dBTP number.
|
|
1156
|
+
*/
|
|
765
1157
|
truePeakDbL: number;
|
|
1158
|
+
/** Right-channel inter-sample (true) peak in dB. See {@link truePeakDbL}. */
|
|
766
1159
|
truePeakDbR: number;
|
|
1160
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDbL}. */
|
|
767
1161
|
maxTruePeakDb: number;
|
|
768
1162
|
correlation: number;
|
|
769
1163
|
monoCompatWidth: number;
|
|
@@ -775,13 +1169,29 @@ export interface WasmEngineMeterTelemetry {
|
|
|
775
1169
|
}
|
|
776
1170
|
|
|
777
1171
|
export interface WasmEngineMeterTelemetryWide {
|
|
1172
|
+
/**
|
|
1173
|
+
* Telemetry tap target id: `0` master mix, `laneIndex + 1` (1..32) for track
|
|
1174
|
+
* lanes, `33 + busIndex` (33..40) for buses, and `0xFFFF` for the
|
|
1175
|
+
* input-monitor capture tap. Handle `0xFFFF` explicitly -- a naive
|
|
1176
|
+
* `targetId - 1` index into a 32-entry lane array runs past its end.
|
|
1177
|
+
*/
|
|
778
1178
|
targetId: number;
|
|
779
1179
|
renderFrame: number;
|
|
780
1180
|
seq: number;
|
|
781
1181
|
channelCount: number;
|
|
782
1182
|
peakDb: number[];
|
|
783
1183
|
rmsDb: number[];
|
|
1184
|
+
/**
|
|
1185
|
+
* Per-plane inter-sample (true) peak in dB (length `channelCount`), from the
|
|
1186
|
+
* ITU-R BS.1770-4 polyphase reconstruction at 4x. A streaming measurement: the
|
|
1187
|
+
* centered reconstruction stencil needs a few future samples a realtime path
|
|
1188
|
+
* does not have, so each block's last samples read marginally low (about
|
|
1189
|
+
* 0.1 dB across 64..8192-sample blocks on a near-Nyquist tone, always
|
|
1190
|
+
* under-reading). Use `meteringTruePeakDb` over the whole signal for an exact
|
|
1191
|
+
* dBTP number.
|
|
1192
|
+
*/
|
|
784
1193
|
truePeakDb: number[];
|
|
1194
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDb}. */
|
|
785
1195
|
maxTruePeakDb: number;
|
|
786
1196
|
correlation: number;
|
|
787
1197
|
monoCompatWidth: number;
|
|
@@ -793,6 +1203,12 @@ export interface WasmEngineMeterTelemetryWide {
|
|
|
793
1203
|
}
|
|
794
1204
|
|
|
795
1205
|
export interface WasmEngineScopeTelemetry {
|
|
1206
|
+
/**
|
|
1207
|
+
* Telemetry tap target id: `0` master mix, `laneIndex + 1` (1..32) for track
|
|
1208
|
+
* lanes, `33 + busIndex` (33..40) for buses, and `0xFFFF` for the
|
|
1209
|
+
* input-monitor capture tap. Handle `0xFFFF` explicitly -- a naive
|
|
1210
|
+
* `targetId - 1` index into a 32-entry lane array runs past its end.
|
|
1211
|
+
*/
|
|
796
1212
|
targetId: number;
|
|
797
1213
|
renderFrame: number;
|
|
798
1214
|
seq: number;
|
|
@@ -838,12 +1254,37 @@ export interface WasmEngineTransportState {
|
|
|
838
1254
|
}
|
|
839
1255
|
|
|
840
1256
|
export interface WasmEngineBounceOptions {
|
|
1257
|
+
/**
|
|
1258
|
+
* Length of the bounce in frames. The whole result is held in memory, so the
|
|
1259
|
+
* span is capped by a 1 GiB peak budget over the full-size float buffers a
|
|
1260
|
+
* bounce holds at once, and exceeding it throws an `InvalidParameter`
|
|
1261
|
+
* `SonareError`.
|
|
1262
|
+
*
|
|
1263
|
+
* The cap is a **frame** count: inversely proportional to `numChannels`, and
|
|
1264
|
+
* independent of the sample rate. Stereo refuses past 44,739,242 frames, or
|
|
1265
|
+
* past 33,554,432 frames when `dither` is set, which adds one more copy; 5.1
|
|
1266
|
+
* refuses past a third of each. Read as a **duration** those two stereo counts
|
|
1267
|
+
* are 15 min 32 s and 11 min 39 s at 48 kHz, and half that at 96 kHz. When
|
|
1268
|
+
* `sourceSampleRate` and `targetSampleRate` differ both the source and the
|
|
1269
|
+
* resampled length are checked, so the longer of the two is what binds.
|
|
1270
|
+
*
|
|
1271
|
+
* Render longer material in chunks via `renderOffline({ finalize: false })`.
|
|
1272
|
+
* The cap is a fixed budget, not a probe of the module's heap, which on wasm32
|
|
1273
|
+
* can run out below it.
|
|
1274
|
+
*/
|
|
841
1275
|
totalFrames: number;
|
|
842
1276
|
blockSize?: number;
|
|
843
1277
|
numChannels?: number;
|
|
844
1278
|
targetSampleRate?: number;
|
|
845
1279
|
sourceSampleRate?: number;
|
|
846
1280
|
normalizeLufs?: boolean;
|
|
1281
|
+
/**
|
|
1282
|
+
* Target integrated loudness when `normalizeLufs` is set. Omitting it, passing
|
|
1283
|
+
* `0`, and passing a non-finite value all mean the library default of
|
|
1284
|
+
* -14 LUFS: the non-finite case resolves rather than being reported, matching
|
|
1285
|
+
* the C ABI, because the loudness stage derives a per-sample gain from this
|
|
1286
|
+
* and checks nothing itself.
|
|
1287
|
+
*/
|
|
847
1288
|
targetLufs?: number;
|
|
848
1289
|
dither?: 0 | 1 | 2 | 3;
|
|
849
1290
|
ditherBits?: number;
|
|
@@ -914,18 +1355,20 @@ export interface WasmRealtimeEngine {
|
|
|
914
1355
|
commandCapacity: number,
|
|
915
1356
|
telemetryCapacity: number,
|
|
916
1357
|
) => void;
|
|
917
|
-
setParameter: (paramId: number, value: number, renderFrame
|
|
918
|
-
setParameterSmoothed: (paramId: number, value: number, renderFrame
|
|
1358
|
+
setParameter: (paramId: number, value: number, renderFrame?: number) => void;
|
|
1359
|
+
setParameterSmoothed: (paramId: number, value: number, renderFrame?: number) => void;
|
|
919
1360
|
setParamSmoothingMs: (smoothingMs: number) => void;
|
|
920
|
-
setSoloMute: (laneIndex: number, solo: boolean, mute: boolean, renderFrame
|
|
921
|
-
setTrackMonitorMode: (laneIndex: number, mode: number, renderFrame
|
|
1361
|
+
setSoloMute: (laneIndex: number, solo: boolean, mute: boolean, renderFrame?: number) => void;
|
|
1362
|
+
setTrackMonitorMode: (laneIndex: number, mode: number, renderFrame?: number) => void;
|
|
922
1363
|
getTransportState: () => WasmEngineTransportState;
|
|
923
|
-
play: (renderFrame
|
|
924
|
-
stop: (renderFrame
|
|
925
|
-
seekSample: (timelineSample: number, renderFrame
|
|
1364
|
+
play: (renderFrame?: number) => void;
|
|
1365
|
+
stop: (renderFrame?: number) => void;
|
|
1366
|
+
seekSample: (timelineSample: number, renderFrame?: number) => void;
|
|
926
1367
|
settleParameters: () => void;
|
|
1368
|
+
settleInsertParameters: () => void;
|
|
927
1369
|
flushControlCommands: () => void;
|
|
928
|
-
|
|
1370
|
+
applyCommandsDueNowPreservingFuture: () => void;
|
|
1371
|
+
seekPpq: (ppq: number, renderFrame?: number) => void;
|
|
929
1372
|
setTempo: (bpm: number) => void;
|
|
930
1373
|
setTempoSegments: (segments: WasmEngineTempoSegment[]) => void;
|
|
931
1374
|
setTimeSignature: (numerator: number, denominator: number) => void;
|
|
@@ -934,15 +1377,15 @@ export interface WasmRealtimeEngine {
|
|
|
934
1377
|
setLoop: (startPpq: number, endPpq: number, enabled: boolean) => void;
|
|
935
1378
|
addParameter: (info: WasmEngineParameterInfo) => void;
|
|
936
1379
|
parameterCount: () => number;
|
|
937
|
-
parameterInfoByIndex: (index: number) => WasmEngineParameterInfo
|
|
938
|
-
parameterInfo: (id: number) => WasmEngineParameterInfo
|
|
1380
|
+
parameterInfoByIndex: (index: number) => Required<WasmEngineParameterInfo>;
|
|
1381
|
+
parameterInfo: (id: number) => Required<WasmEngineParameterInfo>;
|
|
939
1382
|
setAutomationLane: (paramId: number, points: WasmEngineAutomationPoint[]) => void;
|
|
940
1383
|
automationLaneCount: () => number;
|
|
941
1384
|
setMarkers: (markers: WasmEngineMarker[]) => void;
|
|
942
1385
|
markerCount: () => number;
|
|
943
1386
|
markerByIndex: (index: number) => WasmEngineMarker;
|
|
944
1387
|
marker: (id: number) => WasmEngineMarker;
|
|
945
|
-
seekMarker: (id: number, renderFrame
|
|
1388
|
+
seekMarker: (id: number, renderFrame?: number) => void;
|
|
946
1389
|
setLoopFromMarkers: (startMarkerId: number, endMarkerId: number) => void;
|
|
947
1390
|
setMetronome: (config: WasmEngineMetronomeConfig) => void;
|
|
948
1391
|
metronome: () => Required<WasmEngineMetronomeConfig>;
|
|
@@ -956,9 +1399,17 @@ export interface WasmRealtimeEngine {
|
|
|
956
1399
|
setTrackLanes: (lanes: Array<number | WasmEngineTrackLane>) => void;
|
|
957
1400
|
setLaneSidechain: (trackId: number, insertIndex: number, sourceTrackId: number) => void;
|
|
958
1401
|
setTrackBuses: (buses: WasmEngineBus[]) => void;
|
|
1402
|
+
setBusSidechain: (
|
|
1403
|
+
busId: number,
|
|
1404
|
+
insertIndex: number,
|
|
1405
|
+
sourceKind: number,
|
|
1406
|
+
sourceId: number,
|
|
1407
|
+
) => void;
|
|
1408
|
+
setMasterSidechain: (insertIndex: number, sourceKind: number, sourceId: number) => void;
|
|
959
1409
|
setBusStripJson: (busId: number, sceneJson: string) => void;
|
|
960
1410
|
setTrackStripJson: (trackId: number, sceneJson: string) => void;
|
|
961
1411
|
setTrackStripEqBandJson: (trackId: number, bandIndex: number, bandJson: string) => void;
|
|
1412
|
+
setBusStripEqBandJson: (busId: number, bandIndex: number, bandJson: string) => void;
|
|
962
1413
|
setTrackStripInsertBypassed: (
|
|
963
1414
|
trackId: number,
|
|
964
1415
|
insertIndex: number,
|
|
@@ -978,13 +1429,50 @@ export interface WasmRealtimeEngine {
|
|
|
978
1429
|
paramName: string,
|
|
979
1430
|
value: number,
|
|
980
1431
|
) => void;
|
|
1432
|
+
applyTrackStripInsertParamByNameNow: (
|
|
1433
|
+
trackId: number,
|
|
1434
|
+
insertIndex: number,
|
|
1435
|
+
paramName: string,
|
|
1436
|
+
value: number,
|
|
1437
|
+
) => boolean;
|
|
1438
|
+
restoreTrackStripInsertParamByName: (
|
|
1439
|
+
trackId: number,
|
|
1440
|
+
insertIndex: number,
|
|
1441
|
+
paramName: string,
|
|
1442
|
+
value: number,
|
|
1443
|
+
) => void;
|
|
981
1444
|
setMasterStripInsertParamByName: (insertIndex: number, paramName: string, value: number) => void;
|
|
1445
|
+
applyMasterStripInsertParamByNameNow: (
|
|
1446
|
+
insertIndex: number,
|
|
1447
|
+
paramName: string,
|
|
1448
|
+
value: number,
|
|
1449
|
+
) => boolean;
|
|
1450
|
+
restoreMasterStripInsertParamByName: (
|
|
1451
|
+
insertIndex: number,
|
|
1452
|
+
paramName: string,
|
|
1453
|
+
value: number,
|
|
1454
|
+
) => void;
|
|
982
1455
|
setBusStripInsertParamByName: (
|
|
983
1456
|
busId: number,
|
|
984
1457
|
insertIndex: number,
|
|
985
1458
|
paramName: string,
|
|
986
1459
|
value: number,
|
|
987
1460
|
) => void;
|
|
1461
|
+
applyBusStripInsertParamByNameNow: (
|
|
1462
|
+
busId: number,
|
|
1463
|
+
insertIndex: number,
|
|
1464
|
+
paramName: string,
|
|
1465
|
+
value: number,
|
|
1466
|
+
) => boolean;
|
|
1467
|
+
restoreBusStripInsertParamByName: (
|
|
1468
|
+
busId: number,
|
|
1469
|
+
insertIndex: number,
|
|
1470
|
+
paramName: string,
|
|
1471
|
+
value: number,
|
|
1472
|
+
) => void;
|
|
1473
|
+
clearTrackInsertParameterBases: (trackId: number) => void;
|
|
1474
|
+
clearBusInsertParameterBases: (busId: number) => void;
|
|
1475
|
+
clearMasterInsertParameterBases: () => void;
|
|
988
1476
|
setBusStripInsertBypassed: (
|
|
989
1477
|
busId: number,
|
|
990
1478
|
insertIndex: number,
|
|
@@ -998,10 +1486,15 @@ export interface WasmRealtimeEngine {
|
|
|
998
1486
|
) => number;
|
|
999
1487
|
resolveMasterInsertAutomationId: (insertIndex: number, paramName: string) => number;
|
|
1000
1488
|
resolveBusInsertAutomationId: (busId: number, insertIndex: number, paramName: string) => number;
|
|
1489
|
+
resolveInstrumentAutomationId: (destinationId: number, paramName: string) => number;
|
|
1001
1490
|
setTrackStripPan: (trackId: number, pan: number) => void;
|
|
1002
1491
|
setTrackStripPanLaw: (trackId: number, panLaw: number) => void;
|
|
1003
1492
|
setTrackStripPanMode: (trackId: number, panMode: number) => void;
|
|
1004
1493
|
setTrackStripDualPan: (trackId: number, leftPan: number, rightPan: number) => void;
|
|
1494
|
+
setBusStripPan: (busId: number, pan: number) => void;
|
|
1495
|
+
setBusStripPanLaw: (busId: number, panLaw: number) => void;
|
|
1496
|
+
setBusStripPanMode: (busId: number, panMode: number) => void;
|
|
1497
|
+
setBusStripDualPan: (busId: number, leftPan: number, rightPan: number) => void;
|
|
1005
1498
|
setTrackStripChannelDelaySamples: (trackId: number, delaySamples: number) => void;
|
|
1006
1499
|
createClipPageProvider: (numChannels: number, numSamples: number, pageFrames: number) => number;
|
|
1007
1500
|
supplyClipPage: (providerId: number, pageIndex: number, channels: Float32Array[]) => void;
|
|
@@ -1012,6 +1505,11 @@ export interface WasmRealtimeEngine {
|
|
|
1012
1505
|
clipPageRequestScratchClipId: () => number;
|
|
1013
1506
|
clipPageRequestScratchSample: () => number;
|
|
1014
1507
|
clipPageRequestOverflowCount: () => number;
|
|
1508
|
+
warpStretchOverflowCount: () => number;
|
|
1509
|
+
setWarpVoiceCapacity: (voices: number) => void;
|
|
1510
|
+
warpVoiceCapacity: () => number;
|
|
1511
|
+
setClipPagePrefetchFrames: (frames: number) => void;
|
|
1512
|
+
clipPagePrefetchFrames: () => number;
|
|
1015
1513
|
setCaptureBuffer: (numChannels: number, capacityFrames: number) => void;
|
|
1016
1514
|
armCapture: (armed: boolean) => void;
|
|
1017
1515
|
setCapturePunch: (startSample: number, endSample: number, enabled: boolean) => void;
|
|
@@ -1038,6 +1536,34 @@ export interface WasmRealtimeEngine {
|
|
|
1038
1536
|
bindMidiCcBinding: (binding: import('./project_types').ProjectMidiCcBinding) => void;
|
|
1039
1537
|
clearMidiCcBindings: () => void;
|
|
1040
1538
|
midiCcBindingCount: () => number;
|
|
1539
|
+
setControllerProfile: (destinationId: number, presetName: string) => void;
|
|
1540
|
+
bindController: (
|
|
1541
|
+
destinationId: number,
|
|
1542
|
+
binding: import('./instrument_types').ControllerBinding,
|
|
1543
|
+
) => void;
|
|
1544
|
+
clearControllerBindings: (destinationId: number) => void;
|
|
1545
|
+
controllerBindingCount: (destinationId: number) => number;
|
|
1546
|
+
setControllerVelocityMeaningful: (destinationId: number, meaningful: boolean) => void;
|
|
1547
|
+
controllerVelocityMeaningful: (destinationId: number) => boolean;
|
|
1548
|
+
setControllerNoteTracking: (
|
|
1549
|
+
destinationId: number,
|
|
1550
|
+
dimension: import('./instrument_types').MpeDimension | number,
|
|
1551
|
+
tracking: import('./instrument_types').NoteTracking | number,
|
|
1552
|
+
) => void;
|
|
1553
|
+
controllerNoteTracking: (
|
|
1554
|
+
destinationId: number,
|
|
1555
|
+
dimension: import('./instrument_types').MpeDimension | number,
|
|
1556
|
+
) => import('./instrument_types').NoteTracking | number;
|
|
1557
|
+
setArticulation: (
|
|
1558
|
+
destinationId: number,
|
|
1559
|
+
channel: number,
|
|
1560
|
+
articulation: import('./instrument_types').Articulation | number,
|
|
1561
|
+
) => void;
|
|
1562
|
+
articulation: (
|
|
1563
|
+
destinationId: number,
|
|
1564
|
+
channel: number,
|
|
1565
|
+
) => import('./instrument_types').Articulation | number;
|
|
1566
|
+
legatoFallbackCount: (destinationId: number) => number;
|
|
1041
1567
|
setMidiFx: (destinationId: number, configJson: string) => void;
|
|
1042
1568
|
clearMidiFx: (destinationId: number) => void;
|
|
1043
1569
|
setMidiInputSource: (destinationId: number) => void;
|
|
@@ -1064,13 +1590,32 @@ export interface WasmRealtimeEngine {
|
|
|
1064
1590
|
value: number,
|
|
1065
1591
|
portTimeSamples: number,
|
|
1066
1592
|
) => void;
|
|
1593
|
+
pushMidiInputPitchBend: (
|
|
1594
|
+
group: number,
|
|
1595
|
+
channel: number,
|
|
1596
|
+
bend14: number,
|
|
1597
|
+
portTimeSamples: number,
|
|
1598
|
+
) => void;
|
|
1599
|
+
pushMidiInputChannelPressure: (
|
|
1600
|
+
group: number,
|
|
1601
|
+
channel: number,
|
|
1602
|
+
pressure: number,
|
|
1603
|
+
portTimeSamples: number,
|
|
1604
|
+
) => void;
|
|
1605
|
+
pushMidiInputPolyPressure: (
|
|
1606
|
+
group: number,
|
|
1607
|
+
channel: number,
|
|
1608
|
+
note: number,
|
|
1609
|
+
pressure: number,
|
|
1610
|
+
portTimeSamples: number,
|
|
1611
|
+
) => void;
|
|
1067
1612
|
pushMidiNoteOn: (
|
|
1068
1613
|
destinationId: number,
|
|
1069
1614
|
group: number,
|
|
1070
1615
|
channel: number,
|
|
1071
1616
|
note: number,
|
|
1072
1617
|
velocity: number,
|
|
1073
|
-
renderFrame
|
|
1618
|
+
renderFrame?: number,
|
|
1074
1619
|
) => void;
|
|
1075
1620
|
pushMidiNoteOff: (
|
|
1076
1621
|
destinationId: number,
|
|
@@ -1078,7 +1623,7 @@ export interface WasmRealtimeEngine {
|
|
|
1078
1623
|
channel: number,
|
|
1079
1624
|
note: number,
|
|
1080
1625
|
velocity: number,
|
|
1081
|
-
renderFrame
|
|
1626
|
+
renderFrame?: number,
|
|
1082
1627
|
) => void;
|
|
1083
1628
|
pushMidiCc: (
|
|
1084
1629
|
destinationId: number,
|
|
@@ -1086,11 +1631,38 @@ export interface WasmRealtimeEngine {
|
|
|
1086
1631
|
channel: number,
|
|
1087
1632
|
controller: number,
|
|
1088
1633
|
value: number,
|
|
1089
|
-
renderFrame
|
|
1634
|
+
renderFrame?: number,
|
|
1090
1635
|
) => void;
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1636
|
+
pushMidiPitchBend: (
|
|
1637
|
+
destinationId: number,
|
|
1638
|
+
group: number,
|
|
1639
|
+
channel: number,
|
|
1640
|
+
bend14: number,
|
|
1641
|
+
renderFrame?: number,
|
|
1642
|
+
) => void;
|
|
1643
|
+
pushMidiChannelPressure: (
|
|
1644
|
+
destinationId: number,
|
|
1645
|
+
group: number,
|
|
1646
|
+
channel: number,
|
|
1647
|
+
pressure: number,
|
|
1648
|
+
renderFrame?: number,
|
|
1649
|
+
) => void;
|
|
1650
|
+
pushMidiPolyPressure: (
|
|
1651
|
+
destinationId: number,
|
|
1652
|
+
group: number,
|
|
1653
|
+
channel: number,
|
|
1654
|
+
note: number,
|
|
1655
|
+
pressure: number,
|
|
1656
|
+
renderFrame?: number,
|
|
1657
|
+
) => void;
|
|
1658
|
+
pushMidiUmp: (
|
|
1659
|
+
destinationId: number,
|
|
1660
|
+
words: Uint32Array | readonly number[],
|
|
1661
|
+
renderFrame?: number,
|
|
1662
|
+
) => void;
|
|
1663
|
+
pushMidiInputUmp: (words: Uint32Array | readonly number[], portTimeSamples: number) => void;
|
|
1664
|
+
pushMidiSysex: (destinationId: number, data: Uint8Array, renderFrame?: number) => void;
|
|
1665
|
+
pushMidiPanic: (renderFrame?: number) => void;
|
|
1094
1666
|
setMidiDestinationExternal: (destinationId: number, external: boolean) => void;
|
|
1095
1667
|
setExternalMidiClockEnabled: (enabled: boolean) => void;
|
|
1096
1668
|
externalMidiDroppedCount: () => number;
|
|
@@ -1118,7 +1690,8 @@ export interface WasmRealtimeEngine {
|
|
|
1118
1690
|
getMonitorChannelBuffer: (channel: number, numFrames: number) => Float32Array;
|
|
1119
1691
|
processPreparedWithMonitor: (numFrames: number) => void;
|
|
1120
1692
|
processWithMonitor: (channels: Float32Array[]) => WasmEngineProcessWithMonitorResult;
|
|
1121
|
-
renderOffline: (channels: Float32Array[], blockSize: number) => Float32Array[];
|
|
1693
|
+
renderOffline: (channels: Float32Array[], blockSize: number, finalize: boolean) => Float32Array[];
|
|
1694
|
+
finishOfflineRender: () => void;
|
|
1122
1695
|
bounceOffline: (options: WasmEngineBounceOptions) => WasmEngineBounceResult;
|
|
1123
1696
|
freezeOffline: (options: WasmEngineFreezeOptions) => WasmEngineFreezeResult;
|
|
1124
1697
|
drainTelemetry: (maxRecords: number) => WasmEngineTelemetry[];
|
|
@@ -1161,6 +1734,11 @@ export interface WasmSynthEnumTables {
|
|
|
1161
1734
|
bodyTypes: string[];
|
|
1162
1735
|
modSources: string[];
|
|
1163
1736
|
modDestinations: string[];
|
|
1737
|
+
controllerInputs: string[];
|
|
1738
|
+
controllerAxes: string[];
|
|
1739
|
+
articulations: string[];
|
|
1740
|
+
mpeDimensions: string[];
|
|
1741
|
+
noteTrackings: string[];
|
|
1164
1742
|
}
|
|
1165
1743
|
|
|
1166
1744
|
export interface SonareModule {
|
|
@@ -1213,6 +1791,7 @@ export interface SonareModule {
|
|
|
1213
1791
|
keyMode: number,
|
|
1214
1792
|
detectInversions: boolean,
|
|
1215
1793
|
chromaMethod: number,
|
|
1794
|
+
tuning: number,
|
|
1216
1795
|
) => WasmChordAnalysisResult;
|
|
1217
1796
|
chordFunctionalAnalysis: (
|
|
1218
1797
|
samples: Float32Array,
|
|
@@ -1231,10 +1810,76 @@ export interface SonareModule {
|
|
|
1231
1810
|
useKeyContext: boolean,
|
|
1232
1811
|
detectInversions: boolean,
|
|
1233
1812
|
chromaMethod: number,
|
|
1813
|
+
tuning: number,
|
|
1234
1814
|
) => string[];
|
|
1235
1815
|
analyze: (samples: Float32Array, sampleRate: number, options: object) => WasmAnalysisResult;
|
|
1816
|
+
estimateMeter: (
|
|
1817
|
+
beatTimes: ArrayLike<number>,
|
|
1818
|
+
beatStrengths: ArrayLike<number>,
|
|
1819
|
+
options: object,
|
|
1820
|
+
) => WasmMeterEstimateResult;
|
|
1236
1821
|
_synthEnumTables: () => WasmSynthEnumTables;
|
|
1237
1822
|
_synthPatchRoundTrip: (patch: unknown) => unknown;
|
|
1823
|
+
// Arrangement surface. Present only in a build with arrangement support, like
|
|
1824
|
+
// the mixing and voice-changer entries elsewhere in this interface; callers
|
|
1825
|
+
// probe for it at runtime (see projectModule() in project_internal.ts) rather
|
|
1826
|
+
// than through the type. `unknown` marks the shapes the facade owns — this
|
|
1827
|
+
// file describes the raw module and does not depend on the facade's types.
|
|
1828
|
+
projectAbiVersion: () => number;
|
|
1829
|
+
synthPresetNames: () => string[];
|
|
1830
|
+
synthPresetPatch: (name: string) => unknown;
|
|
1831
|
+
synthGsDrumKitName: (program: number) => string | null;
|
|
1832
|
+
synthGsDrumKitIsVoicedApart: (program: number) => number;
|
|
1833
|
+
synthGsVariationIsVoicedApart: (bank: number, program: number) => number;
|
|
1834
|
+
controllerProfileNames: () => string[];
|
|
1835
|
+
midiGmInstrumentName: (program: number) => string | null;
|
|
1836
|
+
midiGmProgramForName: (name: string) => number;
|
|
1837
|
+
midiGmFamilyName: (family: number) => string | null;
|
|
1838
|
+
midiGmFamilyFirstProgram: (family: number) => number;
|
|
1839
|
+
midiGm2InstrumentName: (bankLsb: number, program: number) => string | null;
|
|
1840
|
+
midiGmDrumName: (note: number) => string | null;
|
|
1841
|
+
midiGmDrumNoteForName: (name: string) => number;
|
|
1842
|
+
midiGm2DrumSetName: (bankLsb: number) => string | null;
|
|
1843
|
+
midiGm2DrumName: (bankLsb: number, note: number) => string | null;
|
|
1844
|
+
midiCcName: (controller: number) => string | null;
|
|
1845
|
+
midiCcIndexForName: (name: string) => number;
|
|
1846
|
+
midiPerNoteControllerName: (index: number) => string | null;
|
|
1847
|
+
midiBankProgram: (
|
|
1848
|
+
ppq: number,
|
|
1849
|
+
group: number,
|
|
1850
|
+
channel: number,
|
|
1851
|
+
bankMsb: number,
|
|
1852
|
+
bankLsb: number,
|
|
1853
|
+
program: number,
|
|
1854
|
+
) => unknown;
|
|
1855
|
+
midiRouteEvents: (events: readonly unknown[], config: unknown) => unknown;
|
|
1856
|
+
midiCcLearn: (
|
|
1857
|
+
events: readonly unknown[],
|
|
1858
|
+
paramId: number,
|
|
1859
|
+
minValue: number,
|
|
1860
|
+
maxValue: number,
|
|
1861
|
+
minMovement: number,
|
|
1862
|
+
) => unknown;
|
|
1863
|
+
midiCcToBreakpoint: (bindings: readonly unknown[], event: unknown) => unknown;
|
|
1864
|
+
midiParamToCc: (
|
|
1865
|
+
bindings: readonly unknown[],
|
|
1866
|
+
paramId: number,
|
|
1867
|
+
unitValue: number,
|
|
1868
|
+
group: number,
|
|
1869
|
+
ppq: number,
|
|
1870
|
+
) => unknown;
|
|
1871
|
+
transcribe: (
|
|
1872
|
+
samples: Float32Array,
|
|
1873
|
+
sampleRate: number,
|
|
1874
|
+
tempoBpm: number | undefined,
|
|
1875
|
+
config: unknown,
|
|
1876
|
+
) => unknown;
|
|
1877
|
+
alignTakeToReference: (
|
|
1878
|
+
reference: Float32Array,
|
|
1879
|
+
take: Float32Array,
|
|
1880
|
+
sampleRate: number,
|
|
1881
|
+
config: unknown,
|
|
1882
|
+
) => unknown;
|
|
1238
1883
|
_analysisResultSchemaPaths: () => string[];
|
|
1239
1884
|
_analysisResultSchemaFixture: () => WasmAnalysisResult;
|
|
1240
1885
|
analyzeImpulseResponse: (
|
|
@@ -1268,10 +1913,11 @@ export interface SonareModule {
|
|
|
1268
1913
|
samples: Float32Array,
|
|
1269
1914
|
sampleRate: number,
|
|
1270
1915
|
options: WasmRoomMorphOptions,
|
|
1271
|
-
) =>
|
|
1916
|
+
) => WasmRoomMorphResult;
|
|
1272
1917
|
analyzeWithProgress: (
|
|
1273
1918
|
samples: Float32Array,
|
|
1274
1919
|
sampleRate: number,
|
|
1920
|
+
options: object,
|
|
1275
1921
|
progressCallback: ProgressCallback | null,
|
|
1276
1922
|
cancelCallback: (() => boolean) | null,
|
|
1277
1923
|
) => WasmAnalysisResult;
|
|
@@ -1547,6 +2193,48 @@ export interface SonareModule {
|
|
|
1547
2193
|
sampleRate: number,
|
|
1548
2194
|
alignZeros: boolean,
|
|
1549
2195
|
) => Float32Array;
|
|
2196
|
+
decomposeStems: (
|
|
2197
|
+
samples: Float32Array,
|
|
2198
|
+
sampleRate: number,
|
|
2199
|
+
options: {
|
|
2200
|
+
nComponents?: number;
|
|
2201
|
+
nFft?: number;
|
|
2202
|
+
hopLength?: number;
|
|
2203
|
+
nIter?: number;
|
|
2204
|
+
beta?: number;
|
|
2205
|
+
init?: string;
|
|
2206
|
+
maskPower?: number;
|
|
2207
|
+
},
|
|
2208
|
+
) => {
|
|
2209
|
+
components: Float32Array[];
|
|
2210
|
+
w: Float32Array;
|
|
2211
|
+
h: Float32Array;
|
|
2212
|
+
sampleRate: number;
|
|
2213
|
+
};
|
|
2214
|
+
decomposeStemsLinked: (
|
|
2215
|
+
channels: Float32Array[],
|
|
2216
|
+
sampleRate: number,
|
|
2217
|
+
options: {
|
|
2218
|
+
nComponents?: number;
|
|
2219
|
+
nFft?: number;
|
|
2220
|
+
hopLength?: number;
|
|
2221
|
+
nIter?: number;
|
|
2222
|
+
beta?: number;
|
|
2223
|
+
init?: string;
|
|
2224
|
+
maskPower?: number;
|
|
2225
|
+
},
|
|
2226
|
+
) => {
|
|
2227
|
+
components: Float32Array[][];
|
|
2228
|
+
w: Float32Array;
|
|
2229
|
+
h: Float32Array;
|
|
2230
|
+
sampleRate: number;
|
|
2231
|
+
};
|
|
2232
|
+
remixAlignedIntervals: (
|
|
2233
|
+
samples: Float32Array,
|
|
2234
|
+
intervals: Int32Array,
|
|
2235
|
+
sampleRate: number,
|
|
2236
|
+
alignZeros: boolean,
|
|
2237
|
+
) => Int32Array;
|
|
1550
2238
|
phaseVocoder: (
|
|
1551
2239
|
samples: Float32Array,
|
|
1552
2240
|
sampleRate: number,
|
|
@@ -1620,6 +2308,114 @@ export interface SonareModule {
|
|
|
1620
2308
|
offsetSample: number,
|
|
1621
2309
|
targetOnsetSample: number,
|
|
1622
2310
|
) => Float32Array;
|
|
2311
|
+
extractNotes: (
|
|
2312
|
+
samples: Float32Array,
|
|
2313
|
+
sampleRate: number,
|
|
2314
|
+
f0Hz: Float32Array,
|
|
2315
|
+
voicedProb: Float32Array | undefined,
|
|
2316
|
+
voiced: Float32Array | undefined,
|
|
2317
|
+
frameRate: number,
|
|
2318
|
+
options: {
|
|
2319
|
+
segmentationThresholdCents?: number;
|
|
2320
|
+
minNoteMs?: number;
|
|
2321
|
+
referenceHz?: number;
|
|
2322
|
+
voicedThreshold?: number;
|
|
2323
|
+
},
|
|
2324
|
+
) => NoteObject[];
|
|
2325
|
+
renderNotes: (
|
|
2326
|
+
samples: Float32Array,
|
|
2327
|
+
sampleRate: number,
|
|
2328
|
+
notes: readonly NoteObjectInput[],
|
|
2329
|
+
options: {
|
|
2330
|
+
fadeMs?: number;
|
|
2331
|
+
f0Hz?: Float32Array;
|
|
2332
|
+
frameRate?: number;
|
|
2333
|
+
vibratoCutoffHz?: number;
|
|
2334
|
+
},
|
|
2335
|
+
) => Float32Array;
|
|
2336
|
+
decomposeNotePitch: (
|
|
2337
|
+
f0Hz: Float32Array,
|
|
2338
|
+
frameRate: number,
|
|
2339
|
+
medianHz: number,
|
|
2340
|
+
vibratoCutoffHz: number,
|
|
2341
|
+
) => PitchDecompositionResult;
|
|
2342
|
+
splitNote: (
|
|
2343
|
+
samples: Float32Array,
|
|
2344
|
+
sampleRate: number,
|
|
2345
|
+
f0Hz: Float32Array,
|
|
2346
|
+
voicedProb: Float32Array | undefined,
|
|
2347
|
+
voiced: Float32Array | undefined,
|
|
2348
|
+
frameRate: number,
|
|
2349
|
+
notes: readonly NoteSetEntry[],
|
|
2350
|
+
index: number,
|
|
2351
|
+
frame: number,
|
|
2352
|
+
options: {
|
|
2353
|
+
segmentationThresholdCents?: number;
|
|
2354
|
+
minNoteMs?: number;
|
|
2355
|
+
referenceHz?: number;
|
|
2356
|
+
voicedThreshold?: number;
|
|
2357
|
+
},
|
|
2358
|
+
) => NoteObject[];
|
|
2359
|
+
mergeNotes: (
|
|
2360
|
+
samples: Float32Array,
|
|
2361
|
+
sampleRate: number,
|
|
2362
|
+
f0Hz: Float32Array,
|
|
2363
|
+
voicedProb: Float32Array | undefined,
|
|
2364
|
+
voiced: Float32Array | undefined,
|
|
2365
|
+
frameRate: number,
|
|
2366
|
+
notes: readonly NoteSetEntry[],
|
|
2367
|
+
first: number,
|
|
2368
|
+
last: number,
|
|
2369
|
+
options: {
|
|
2370
|
+
segmentationThresholdCents?: number;
|
|
2371
|
+
minNoteMs?: number;
|
|
2372
|
+
referenceHz?: number;
|
|
2373
|
+
voicedThreshold?: number;
|
|
2374
|
+
},
|
|
2375
|
+
) => NoteObject[];
|
|
2376
|
+
assignNoteTargets: (
|
|
2377
|
+
notes: readonly NoteObject[],
|
|
2378
|
+
sampleRate: number,
|
|
2379
|
+
targets: readonly NoteTarget[],
|
|
2380
|
+
options: {
|
|
2381
|
+
unmatchedPolicy?: NoteTargetUnmatchedPolicy;
|
|
2382
|
+
minOverlapRatio?: number;
|
|
2383
|
+
maxCorrectionSemitones?: number;
|
|
2384
|
+
},
|
|
2385
|
+
) => NoteTargetAssignResult;
|
|
2386
|
+
/** Absent from a build without arrangement support, which is what links the MIDI reader. */
|
|
2387
|
+
noteTargetsFromSmf?: (data: Uint8Array, trackIndex: number) => NoteTarget[];
|
|
2388
|
+
createPolyphonicAnalysis: (
|
|
2389
|
+
samples: Float32Array,
|
|
2390
|
+
sampleRate: number,
|
|
2391
|
+
config: Record<string, unknown>,
|
|
2392
|
+
) => WasmPolyphonicAnalysis;
|
|
2393
|
+
extractPercussiveEvents: (
|
|
2394
|
+
samples: Float32Array | readonly number[],
|
|
2395
|
+
sampleRate: number,
|
|
2396
|
+
options: {
|
|
2397
|
+
nFft?: number;
|
|
2398
|
+
hopLength?: number;
|
|
2399
|
+
hpssKernelHarmonic?: number;
|
|
2400
|
+
hpssKernelPercussive?: number;
|
|
2401
|
+
onsetWait?: number;
|
|
2402
|
+
onsetDelta?: number;
|
|
2403
|
+
maxEventMs?: number;
|
|
2404
|
+
minPercussiveRatio?: number;
|
|
2405
|
+
},
|
|
2406
|
+
) => PercussiveEvent[];
|
|
2407
|
+
renderPercussiveEvents: (
|
|
2408
|
+
samples: Float32Array | readonly number[],
|
|
2409
|
+
sampleRate: number,
|
|
2410
|
+
events: readonly PercussiveEventInput[],
|
|
2411
|
+
options: {
|
|
2412
|
+
nFft?: number;
|
|
2413
|
+
hopLength?: number;
|
|
2414
|
+
hpssKernelHarmonic?: number;
|
|
2415
|
+
hpssKernelPercussive?: number;
|
|
2416
|
+
fadeMs?: number;
|
|
2417
|
+
},
|
|
2418
|
+
) => Float32Array;
|
|
1623
2419
|
voiceChange: (
|
|
1624
2420
|
samples: Float32Array,
|
|
1625
2421
|
sampleRate: number,
|
|
@@ -1639,6 +2435,13 @@ export interface SonareModule {
|
|
|
1639
2435
|
targetDb: number,
|
|
1640
2436
|
mode: string,
|
|
1641
2437
|
) => Float32Array;
|
|
2438
|
+
normalizeStereo: (
|
|
2439
|
+
left: Float32Array,
|
|
2440
|
+
right: Float32Array,
|
|
2441
|
+
sampleRate: number,
|
|
2442
|
+
targetDb: number,
|
|
2443
|
+
mode: string,
|
|
2444
|
+
) => { left: Float32Array; right: Float32Array; appliedGainDb: number };
|
|
1642
2445
|
mastering: (
|
|
1643
2446
|
samples: Float32Array,
|
|
1644
2447
|
sampleRate: number,
|
|
@@ -1652,6 +2455,17 @@ export interface SonareModule {
|
|
|
1652
2455
|
masteringPairProcessorNames: () => string[];
|
|
1653
2456
|
masteringPairAnalysisNames: () => string[];
|
|
1654
2457
|
masteringStereoAnalysisNames: () => string[];
|
|
2458
|
+
masteringInsertNames: () => string[];
|
|
2459
|
+
masteringInsertParamNames: (name: string) => string[];
|
|
2460
|
+
// These return JSON the facade parses; the raw module has no object shape here.
|
|
2461
|
+
masteringInsertParamInfo: (name: string) => string;
|
|
2462
|
+
masteringProcessorCatalog: () => string;
|
|
2463
|
+
masteringAmpPresetCatalog: () => string;
|
|
2464
|
+
masteringInsertTiming: (
|
|
2465
|
+
name: string,
|
|
2466
|
+
paramsJson: string,
|
|
2467
|
+
sampleRate: number,
|
|
2468
|
+
) => { latencySamples: number; tailSamples: number };
|
|
1655
2469
|
masteringProcess: (
|
|
1656
2470
|
processorName: string,
|
|
1657
2471
|
samples: Float32Array,
|
|
@@ -1679,6 +2493,11 @@ export interface SonareModule {
|
|
|
1679
2493
|
sampleRate: number,
|
|
1680
2494
|
params: Record<string, number | boolean>,
|
|
1681
2495
|
) => string;
|
|
2496
|
+
masteringAbMatchLoudness: (
|
|
2497
|
+
source: Float32Array,
|
|
2498
|
+
reference: Float32Array,
|
|
2499
|
+
sampleRate: number,
|
|
2500
|
+
) => WasmLoudnessMatchResult;
|
|
1682
2501
|
masteringStereoAnalyze: (
|
|
1683
2502
|
analysisName: string,
|
|
1684
2503
|
left: Float32Array,
|
|
@@ -1689,8 +2508,13 @@ export interface SonareModule {
|
|
|
1689
2508
|
masteringAssistantSuggest: (
|
|
1690
2509
|
samples: Float32Array,
|
|
1691
2510
|
sampleRate: number,
|
|
1692
|
-
params: Record<string, number | boolean>,
|
|
2511
|
+
params: Record<string, number | boolean | string>,
|
|
1693
2512
|
) => string;
|
|
2513
|
+
masteringAssistantSuggestChain: (
|
|
2514
|
+
samples: Float32Array,
|
|
2515
|
+
sampleRate: number,
|
|
2516
|
+
params: Record<string, number | boolean | string>,
|
|
2517
|
+
) => Record<string, number | boolean>;
|
|
1694
2518
|
masteringAudioProfile: (
|
|
1695
2519
|
samples: Float32Array,
|
|
1696
2520
|
sampleRate: number,
|
|
@@ -1705,8 +2529,14 @@ export interface SonareModule {
|
|
|
1705
2529
|
left: Float32Array,
|
|
1706
2530
|
right: Float32Array,
|
|
1707
2531
|
sampleRate: number,
|
|
1708
|
-
params: Record<string, number | boolean>,
|
|
2532
|
+
params: Record<string, number | boolean | string>,
|
|
1709
2533
|
) => string;
|
|
2534
|
+
masteringAssistantSuggestChainStereo: (
|
|
2535
|
+
left: Float32Array,
|
|
2536
|
+
right: Float32Array,
|
|
2537
|
+
sampleRate: number,
|
|
2538
|
+
params: Record<string, number | boolean | string>,
|
|
2539
|
+
) => Record<string, number | boolean>;
|
|
1710
2540
|
masteringAudioProfileStereo: (
|
|
1711
2541
|
left: Float32Array,
|
|
1712
2542
|
right: Float32Array,
|
|
@@ -1724,36 +2554,134 @@ export interface SonareModule {
|
|
|
1724
2554
|
sampleRate: number,
|
|
1725
2555
|
options: object,
|
|
1726
2556
|
) => Float32Array;
|
|
2557
|
+
masteringRepairDeclickStereo: (
|
|
2558
|
+
left: Float32Array,
|
|
2559
|
+
right: Float32Array,
|
|
2560
|
+
sampleRate: number,
|
|
2561
|
+
options: object,
|
|
2562
|
+
) => WasmDeclickStereoResult;
|
|
1727
2563
|
masteringRepairDenoiseClassical: (
|
|
1728
2564
|
samples: Float32Array,
|
|
1729
2565
|
sampleRate: number,
|
|
1730
2566
|
options: object,
|
|
1731
2567
|
) => Float32Array;
|
|
2568
|
+
masteringRepairDenoiseClassicalStereo: (
|
|
2569
|
+
left: Float32Array,
|
|
2570
|
+
right: Float32Array,
|
|
2571
|
+
sampleRate: number,
|
|
2572
|
+
options: object,
|
|
2573
|
+
) => WasmDenoiseStereoResult;
|
|
2574
|
+
masteringRepairDenoiseClassicalLinked: (
|
|
2575
|
+
channels: Float32Array[],
|
|
2576
|
+
sampleRate: number,
|
|
2577
|
+
options: object,
|
|
2578
|
+
) => WasmDenoiseLinkedResult;
|
|
1732
2579
|
masteringRepairDeclip: (
|
|
1733
2580
|
samples: Float32Array,
|
|
1734
2581
|
sampleRate: number,
|
|
1735
2582
|
options: object,
|
|
1736
2583
|
) => Float32Array;
|
|
2584
|
+
masteringRepairDeclipStereo: (
|
|
2585
|
+
left: Float32Array,
|
|
2586
|
+
right: Float32Array,
|
|
2587
|
+
sampleRate: number,
|
|
2588
|
+
options: object,
|
|
2589
|
+
) => WasmDeclipStereoResult;
|
|
1737
2590
|
masteringRepairDecrackle: (
|
|
1738
2591
|
samples: Float32Array,
|
|
1739
2592
|
sampleRate: number,
|
|
1740
2593
|
options: object,
|
|
1741
2594
|
) => Float32Array;
|
|
2595
|
+
masteringRepairDecrackleStereo: (
|
|
2596
|
+
left: Float32Array,
|
|
2597
|
+
right: Float32Array,
|
|
2598
|
+
sampleRate: number,
|
|
2599
|
+
options: object,
|
|
2600
|
+
) => WasmDecrackleStereoResult;
|
|
1742
2601
|
masteringRepairDehum: (
|
|
1743
2602
|
samples: Float32Array,
|
|
1744
2603
|
sampleRate: number,
|
|
1745
2604
|
options: object,
|
|
1746
2605
|
) => Float32Array;
|
|
2606
|
+
masteringRepairDehumStereo: (
|
|
2607
|
+
left: Float32Array,
|
|
2608
|
+
right: Float32Array,
|
|
2609
|
+
sampleRate: number,
|
|
2610
|
+
options: object,
|
|
2611
|
+
) => WasmDehumStereoResult;
|
|
1747
2612
|
masteringRepairDereverbClassical: (
|
|
1748
2613
|
samples: Float32Array,
|
|
1749
2614
|
sampleRate: number,
|
|
1750
2615
|
options: object,
|
|
1751
2616
|
) => Float32Array;
|
|
2617
|
+
masteringRepairDereverbClassicalStereo: (
|
|
2618
|
+
left: Float32Array,
|
|
2619
|
+
right: Float32Array,
|
|
2620
|
+
sampleRate: number,
|
|
2621
|
+
options: object,
|
|
2622
|
+
) => WasmDereverbStereoResult;
|
|
2623
|
+
masteringRepairDereverbClassicalLinked: (
|
|
2624
|
+
channels: Float32Array[],
|
|
2625
|
+
sampleRate: number,
|
|
2626
|
+
options: object,
|
|
2627
|
+
) => WasmDereverbLinkedResult;
|
|
2628
|
+
masteringRepairDereverbConfigForRoom: (
|
|
2629
|
+
estimate: WasmRoomEstimateResult,
|
|
2630
|
+
options: object,
|
|
2631
|
+
) => WasmDereverbClassicalConfig;
|
|
1752
2632
|
masteringRepairTrimSilence: (
|
|
1753
2633
|
samples: Float32Array,
|
|
1754
2634
|
sampleRate: number,
|
|
1755
2635
|
options: object,
|
|
1756
2636
|
) => Float32Array;
|
|
2637
|
+
masteringRepairTrimSilenceStereo: (
|
|
2638
|
+
left: Float32Array,
|
|
2639
|
+
right: Float32Array,
|
|
2640
|
+
sampleRate: number,
|
|
2641
|
+
options: object,
|
|
2642
|
+
) => WasmTrimSilenceStereoResult;
|
|
2643
|
+
masteringRepairDetectClicks: (
|
|
2644
|
+
samples: Float32Array,
|
|
2645
|
+
sampleRate: number,
|
|
2646
|
+
options: object,
|
|
2647
|
+
) => WasmClickDetection;
|
|
2648
|
+
masteringRepairDetectNoiseFloor: (
|
|
2649
|
+
samples: Float32Array,
|
|
2650
|
+
sampleRate: number,
|
|
2651
|
+
options: object,
|
|
2652
|
+
) => WasmNoiseDetection;
|
|
2653
|
+
masteringRepairNoiseBandBins: (nFft: number, sampleRate: number) => Int32Array;
|
|
2654
|
+
masteringRepairDetectClipping: (
|
|
2655
|
+
samples: Float32Array,
|
|
2656
|
+
sampleRate: number,
|
|
2657
|
+
options: object,
|
|
2658
|
+
) => WasmClipDetection;
|
|
2659
|
+
masteringRepairDetectCrackle: (
|
|
2660
|
+
samples: Float32Array,
|
|
2661
|
+
sampleRate: number,
|
|
2662
|
+
options: object,
|
|
2663
|
+
) => WasmCrackleDetection;
|
|
2664
|
+
masteringRepairDetectHum: (
|
|
2665
|
+
samples: Float32Array,
|
|
2666
|
+
sampleRate: number,
|
|
2667
|
+
options: object,
|
|
2668
|
+
) => WasmHumDetection;
|
|
2669
|
+
masteringRepairDetectReverb: (
|
|
2670
|
+
samples: Float32Array,
|
|
2671
|
+
sampleRate: number,
|
|
2672
|
+
options: object,
|
|
2673
|
+
) => WasmReverbDetection;
|
|
2674
|
+
masteringRepairDetectTrimRange: (
|
|
2675
|
+
samples: Float32Array,
|
|
2676
|
+
sampleRate: number,
|
|
2677
|
+
options: object,
|
|
2678
|
+
) => WasmTrimRange;
|
|
2679
|
+
masteringRepairDetectTrimRangeStereo: (
|
|
2680
|
+
left: Float32Array,
|
|
2681
|
+
right: Float32Array,
|
|
2682
|
+
sampleRate: number,
|
|
2683
|
+
options: object,
|
|
2684
|
+
) => WasmTrimRange;
|
|
1757
2685
|
masteringDynamicsCompressor: (
|
|
1758
2686
|
samples: Float32Array,
|
|
1759
2687
|
sampleRate: number,
|
|
@@ -1796,6 +2724,8 @@ export interface SonareModule {
|
|
|
1796
2724
|
cancelCallback: (() => boolean) | null,
|
|
1797
2725
|
) => WasmMasteringStereoChainResult;
|
|
1798
2726
|
masteringPresetNames: () => string[];
|
|
2727
|
+
masteringPresetParams: (preset: string) => Record<string, number | boolean>;
|
|
2728
|
+
masteringPlatformNames: () => string[];
|
|
1799
2729
|
masterAudio: (
|
|
1800
2730
|
presetName: string,
|
|
1801
2731
|
samples: Float32Array,
|
|
@@ -1834,6 +2764,24 @@ export interface SonareModule {
|
|
|
1834
2764
|
sampleRate: number,
|
|
1835
2765
|
options: Record<string, unknown>,
|
|
1836
2766
|
) => WasmMixResult;
|
|
2767
|
+
mixingAssistantSuggest: (
|
|
2768
|
+
leftChannels: Float32Array[],
|
|
2769
|
+
rightChannels: (Float32Array | null)[] | null,
|
|
2770
|
+
trackIds: string[],
|
|
2771
|
+
trackNames: (string | null)[] | null,
|
|
2772
|
+
sampleRate: number,
|
|
2773
|
+
params: Record<string, number | boolean>,
|
|
2774
|
+
) => string;
|
|
2775
|
+
mixingAssistantSuggestSceneJson: (
|
|
2776
|
+
leftChannels: Float32Array[],
|
|
2777
|
+
rightChannels: (Float32Array | null)[] | null,
|
|
2778
|
+
trackIds: string[],
|
|
2779
|
+
trackNames: (string | null)[] | null,
|
|
2780
|
+
sampleRate: number,
|
|
2781
|
+
params: Record<string, number | boolean>,
|
|
2782
|
+
) => string;
|
|
2783
|
+
mixingAssistantSourceClassNames: () => string[];
|
|
2784
|
+
mixingAssistantSourceClassFromName: (name: string) => number;
|
|
1837
2785
|
trim: (samples: Float32Array, sampleRate: number, thresholdDb: number) => Float32Array;
|
|
1838
2786
|
trimEx: (
|
|
1839
2787
|
samples: Float32Array,
|
|
@@ -2145,6 +3093,7 @@ export interface SonareModule {
|
|
|
2145
3093
|
segmentationThresholdCents?: number;
|
|
2146
3094
|
minNoteMs?: number;
|
|
2147
3095
|
referenceHz?: number;
|
|
3096
|
+
voicedThreshold?: number;
|
|
2148
3097
|
},
|
|
2149
3098
|
) => WasmNoteSegment[];
|
|
2150
3099
|
|
|
@@ -2177,6 +3126,18 @@ export interface SonareModule {
|
|
|
2177
3126
|
frameLength: number,
|
|
2178
3127
|
hopLength: number,
|
|
2179
3128
|
) => Int32Array;
|
|
3129
|
+
splitSilenceCommon: (
|
|
3130
|
+
signals: Float32Array[],
|
|
3131
|
+
topDb: number,
|
|
3132
|
+
frameLength: number,
|
|
3133
|
+
hopLength: number,
|
|
3134
|
+
) => Int32Array;
|
|
3135
|
+
splitSilenceCommonWithReport: (
|
|
3136
|
+
signals: Float32Array[],
|
|
3137
|
+
topDb: number,
|
|
3138
|
+
frameLength: number,
|
|
3139
|
+
hopLength: number,
|
|
3140
|
+
) => SplitSilenceCommonWithReportResult;
|
|
2180
3141
|
frameSignal: (samples: Float32Array, frameLength: number, hopLength: number) => WasmFrameResult;
|
|
2181
3142
|
tone: (
|
|
2182
3143
|
frequency: number,
|
|
@@ -2341,6 +3302,11 @@ export interface SonareModule {
|
|
|
2341
3302
|
hopLength: number,
|
|
2342
3303
|
minSectionSec: number,
|
|
2343
3304
|
) => WasmSectionResult[];
|
|
3305
|
+
detectBoundaries: (
|
|
3306
|
+
samples: Float32Array,
|
|
3307
|
+
sampleRate: number,
|
|
3308
|
+
options: WasmBoundaryOptions,
|
|
3309
|
+
) => WasmBoundaryResult;
|
|
2344
3310
|
analyzeMelody: (
|
|
2345
3311
|
samples: Float32Array,
|
|
2346
3312
|
sampleRate: number,
|
|
@@ -2386,6 +3352,11 @@ export interface SonareModule {
|
|
|
2386
3352
|
momentaryLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
2387
3353
|
shortTermLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
2388
3354
|
lufsInterleaved: (samples: Float32Array, channels: number, sampleRate: number) => WasmLufsResult;
|
|
3355
|
+
lufsSeriesInterleaved: (
|
|
3356
|
+
samples: Float32Array,
|
|
3357
|
+
channels: number,
|
|
3358
|
+
sampleRate: number,
|
|
3359
|
+
) => WasmLufsSeriesResult;
|
|
2389
3360
|
ebur128LoudnessRange: (samples: Float32Array, sampleRate: number) => number;
|
|
2390
3361
|
|
|
2391
3362
|
// Core - Resample
|
|
@@ -2428,6 +3399,14 @@ export interface SonareModule {
|
|
|
2428
3399
|
Major9: { value: 14 };
|
|
2429
3400
|
Dominant9: { value: 15 };
|
|
2430
3401
|
Sus2Add4: { value: 16 };
|
|
3402
|
+
Major6: { value: 17 };
|
|
3403
|
+
Minor6: { value: 18 };
|
|
3404
|
+
MinorMajor7: { value: 19 };
|
|
3405
|
+
Dominant7Sus4: { value: 20 };
|
|
3406
|
+
Dominant11: { value: 21 };
|
|
3407
|
+
Dominant13: { value: 22 };
|
|
3408
|
+
Dominant7Flat9: { value: 23 };
|
|
3409
|
+
Dominant7Sharp9: { value: 24 };
|
|
2431
3410
|
};
|
|
2432
3411
|
SectionType: {
|
|
2433
3412
|
Intro: { value: 0 };
|
|
@@ -2492,6 +3471,23 @@ export interface SonareModule {
|
|
|
2492
3471
|
error?: string;
|
|
2493
3472
|
};
|
|
2494
3473
|
|
|
3474
|
+
// Playback - renderer, HRTF set and program loudness meter
|
|
3475
|
+
createHrtfSet: (bytes: Uint8Array) => WasmHrtfSet;
|
|
3476
|
+
createPlaybackRenderer: (
|
|
3477
|
+
configJson: string,
|
|
3478
|
+
hrtf: WasmHrtfSet | null,
|
|
3479
|
+
sampleRate: number,
|
|
3480
|
+
maxBlockSize: number,
|
|
3481
|
+
) => WasmPlaybackRenderer;
|
|
3482
|
+
createPlaybackLoudnessMeter: (channels: number, sampleRate: number) => WasmPlaybackLoudnessMeter;
|
|
3483
|
+
renderPlayback: (
|
|
3484
|
+
samples: Float32Array,
|
|
3485
|
+
channels: number,
|
|
3486
|
+
sampleRate: number,
|
|
3487
|
+
configJson: string,
|
|
3488
|
+
hrtf: WasmHrtfSet | null,
|
|
3489
|
+
) => { samples: Float32Array; channels: number };
|
|
3490
|
+
|
|
2495
3491
|
// Mixing - scene-based Mixer
|
|
2496
3492
|
createMixerFromSceneJson: (json: string, sampleRate: number, blockSize: number) => WasmMixer;
|
|
2497
3493
|
|
|
@@ -2499,6 +3495,28 @@ export interface SonareModule {
|
|
|
2499
3495
|
// surfaces a C++ throw as the raw pointer number) into a structured error.
|
|
2500
3496
|
// Consumed by the module-error wrapper in module_state.ts.
|
|
2501
3497
|
sonareExceptionInfo: (ptr: number) => { code: number; codeName: string; message: string };
|
|
3498
|
+
|
|
3499
|
+
// Drops the reference emscripten's __cxa_throw took on the exception object
|
|
3500
|
+
// before rethrowing its pointer into JS. Nothing else ever drops it, so the
|
|
3501
|
+
// module-error wrapper releases every pointer it surfaces.
|
|
3502
|
+
sonareReleaseException: (ptr: number) => void;
|
|
3503
|
+
}
|
|
3504
|
+
|
|
3505
|
+
// The polyphonic editing analysis. `noteCount` and `frameCount` are embind
|
|
3506
|
+
// properties rather than methods; everything else is a call.
|
|
3507
|
+
export interface WasmPolyphonicAnalysis {
|
|
3508
|
+
readonly noteCount: number;
|
|
3509
|
+
readonly frameCount: number;
|
|
3510
|
+
notes: () => NoteObject[];
|
|
3511
|
+
setNoteEdit: (note: number, edit: NoteEditInput) => void;
|
|
3512
|
+
polyphony: () => Int32Array;
|
|
3513
|
+
noteF0: (note: number) => Float32Array;
|
|
3514
|
+
noteAmplitude: (note: number) => Float32Array;
|
|
3515
|
+
noteSalience: (note: number) => Float32Array;
|
|
3516
|
+
noteInharmonicity: () => Float32Array;
|
|
3517
|
+
noteEnvelope: (note: number) => Float32Array;
|
|
3518
|
+
render: (options: Record<string, unknown>) => Float32Array;
|
|
3519
|
+
delete: () => void;
|
|
2502
3520
|
}
|
|
2503
3521
|
|
|
2504
3522
|
export interface WasmStreamingMasteringChain {
|
|
@@ -2513,6 +3531,10 @@ export interface WasmStreamingMasteringChain {
|
|
|
2513
3531
|
reset: () => void;
|
|
2514
3532
|
latencySamples: () => number;
|
|
2515
3533
|
stageNames: () => string[];
|
|
3534
|
+
/** Cumulative since prepare(), which rebuilds the stages and so clears it. */
|
|
3535
|
+
nonFiniteSubstitutionCount: () => number;
|
|
3536
|
+
/** Not the same measurement as nonFiniteSubstitutionCount; see the facade. */
|
|
3537
|
+
nonFiniteDiscardCount: () => number;
|
|
2516
3538
|
delete: () => void;
|
|
2517
3539
|
}
|
|
2518
3540
|
|
|
@@ -2540,11 +3562,13 @@ export interface WasmStreamingEqualizer {
|
|
|
2540
3562
|
clearSidechain: () => void;
|
|
2541
3563
|
lastAutoGainDb: () => number;
|
|
2542
3564
|
latencySamples: () => number;
|
|
3565
|
+
nonFiniteDiscardCount: () => number;
|
|
2543
3566
|
processMono: (samples: Float32Array) => Float32Array;
|
|
2544
3567
|
processStereo: (
|
|
2545
3568
|
left: Float32Array,
|
|
2546
3569
|
right: Float32Array,
|
|
2547
3570
|
) => { left: Float32Array; right: Float32Array };
|
|
3571
|
+
magnitudeResponse: (placement: number, frequenciesHz: Float32Array) => Float32Array;
|
|
2548
3572
|
spectrum: () => WasmEqSpectrumSnapshot;
|
|
2549
3573
|
match: (source: Float32Array, reference: Float32Array, options: Record<string, unknown>) => void;
|
|
2550
3574
|
delete: () => void;
|
|
@@ -2556,6 +3580,7 @@ export interface WasmStreamingRetune {
|
|
|
2556
3580
|
setConfig: (config: Record<string, unknown>) => void;
|
|
2557
3581
|
config: () => { semitones: number; mix: number; grainSize: number };
|
|
2558
3582
|
grainSize: () => number;
|
|
3583
|
+
latencySamples: () => number;
|
|
2559
3584
|
processMono: (samples: Float32Array) => Float32Array;
|
|
2560
3585
|
delete: () => void;
|
|
2561
3586
|
}
|
|
@@ -2567,6 +3592,7 @@ export interface WasmRealtimeVoiceChanger {
|
|
|
2567
3592
|
setPodConfig: (config: WasmRealtimeVoiceChangerPodConfig) => void;
|
|
2568
3593
|
configJson: () => string;
|
|
2569
3594
|
latencySamples: () => number;
|
|
3595
|
+
nonFiniteDiscardCount: () => number;
|
|
2570
3596
|
bufferGeneration: () => number;
|
|
2571
3597
|
processMono: (samples: Float32Array) => Float32Array;
|
|
2572
3598
|
processMonoInto: (samples: Float32Array, output: Float32Array) => void;
|
|
@@ -2587,6 +3613,58 @@ export interface WasmRealtimeVoiceChanger {
|
|
|
2587
3613
|
delete: () => void;
|
|
2588
3614
|
}
|
|
2589
3615
|
|
|
3616
|
+
export interface WasmHrtfSet {
|
|
3617
|
+
delete: () => void;
|
|
3618
|
+
}
|
|
3619
|
+
|
|
3620
|
+
export interface WasmPlaybackRenderer {
|
|
3621
|
+
processPlanar: (planes: Float32Array[]) => Float32Array[];
|
|
3622
|
+
processInterleaved: (samples: Float32Array, inChannels: number) => Float32Array;
|
|
3623
|
+
setConfig: (configJson: string) => void;
|
|
3624
|
+
configJson: () => string;
|
|
3625
|
+
setHeadOrientation: (yawDeg: number, pitchDeg: number, rollDeg: number) => void;
|
|
3626
|
+
reset: () => void;
|
|
3627
|
+
latencySamples: () => number;
|
|
3628
|
+
inputChannels: () => number;
|
|
3629
|
+
outputChannels: () => number;
|
|
3630
|
+
diagnosticsJson: () => string;
|
|
3631
|
+
nonFiniteDiscardCount: () => number;
|
|
3632
|
+
// AudioWorklet path: heap views allocated once at construction (they detach
|
|
3633
|
+
// on memory growth and are then re-acquired), and a SonareError code instead
|
|
3634
|
+
// of a throw for a rejected block.
|
|
3635
|
+
inputPlane: (channel: number) => Float32Array;
|
|
3636
|
+
outputPlane: (channel: number) => Float32Array;
|
|
3637
|
+
processPrepared: (inChannels: number, frames: number) => number;
|
|
3638
|
+
processPreparedSilence: (frames: number) => number;
|
|
3639
|
+
delete: () => void;
|
|
3640
|
+
}
|
|
3641
|
+
|
|
3642
|
+
export interface WasmPlaybackLoudnessMeter {
|
|
3643
|
+
pushInterleaved: (samples: Float32Array) => void;
|
|
3644
|
+
integratedLufs: () => number;
|
|
3645
|
+
delete: () => void;
|
|
3646
|
+
}
|
|
3647
|
+
|
|
3648
|
+
/** One block's worth of meter readings, all dB fields floored at -120. */
|
|
3649
|
+
export interface WasmMixerMeterSnapshot {
|
|
3650
|
+
peakDbL: number;
|
|
3651
|
+
peakDbR: number;
|
|
3652
|
+
rmsDbL: number;
|
|
3653
|
+
rmsDbR: number;
|
|
3654
|
+
correlation: number;
|
|
3655
|
+
/**
|
|
3656
|
+
* Left-channel inter-sample (true) peak in dB, from the ITU-R BS.1770-4
|
|
3657
|
+
* polyphase reconstruction at 4x. A streaming measurement: the centered
|
|
3658
|
+
* reconstruction stencil needs a few future samples a realtime path does not
|
|
3659
|
+
* have, so each block's last samples read marginally low (about 0.1 dB across
|
|
3660
|
+
* 64..8192-sample blocks on a near-Nyquist tone, always under-reading). Use
|
|
3661
|
+
* `meteringTruePeakDb` over the whole signal for an exact dBTP number.
|
|
3662
|
+
*/
|
|
3663
|
+
truePeakDbL: number;
|
|
3664
|
+
/** Right-channel inter-sample (true) peak in dB. See {@link truePeakDbL}. */
|
|
3665
|
+
truePeakDbR: number;
|
|
3666
|
+
}
|
|
3667
|
+
|
|
2590
3668
|
export interface WasmMixer {
|
|
2591
3669
|
compile: () => void;
|
|
2592
3670
|
processStereo: (
|
|
@@ -2604,6 +3682,10 @@ export interface WasmMixer {
|
|
|
2604
3682
|
outputLeftView: () => Float32Array;
|
|
2605
3683
|
outputRightView: () => Float32Array;
|
|
2606
3684
|
processPreparedStereo: (numSamples: number) => void;
|
|
3685
|
+
configureMeter: (enabled: boolean, truePeakOversample: number) => void;
|
|
3686
|
+
meterSnapshot: () => WasmMixerMeterSnapshot;
|
|
3687
|
+
latchMeterSnapshot: () => boolean;
|
|
3688
|
+
meterScratchValue: (field: number) => number;
|
|
2607
3689
|
stripCount: () => number;
|
|
2608
3690
|
sceneWarnings: () => string[];
|
|
2609
3691
|
scheduleInsertAutomation: (
|
|
@@ -2619,6 +3701,7 @@ export interface WasmMixer {
|
|
|
2619
3701
|
setFaderDb: (stripIndex: number, db: number) => void;
|
|
2620
3702
|
setPan: (stripIndex: number, pan: number, panMode: number) => void;
|
|
2621
3703
|
setWidth: (stripIndex: number, width: number) => void;
|
|
3704
|
+
settle: (stripIndex: number) => void;
|
|
2622
3705
|
setMuted: (stripIndex: number, muted: boolean) => void;
|
|
2623
3706
|
setSoloed: (stripIndex: number, soloed: boolean) => void;
|
|
2624
3707
|
setSoloSafe: (stripIndex: number, soloSafe: boolean) => void;
|
|
@@ -2640,6 +3723,8 @@ export interface WasmMixer {
|
|
|
2640
3723
|
meterTap: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
|
|
2641
3724
|
stripMeter: (stripIndex: number) => WasmMixMeterSnapshot;
|
|
2642
3725
|
busMeter: (busId: string) => WasmMixMeterSnapshot;
|
|
3726
|
+
stripNonFiniteDiscardCount: (stripIndex: number) => number;
|
|
3727
|
+
busNonFiniteDiscardCount: (busId: string) => number;
|
|
2643
3728
|
scheduleFaderAutomation: (
|
|
2644
3729
|
stripIndex: number,
|
|
2645
3730
|
samplePos: number,
|
|
@@ -2666,6 +3751,7 @@ export interface WasmMixer {
|
|
|
2666
3751
|
curve: number,
|
|
2667
3752
|
) => void;
|
|
2668
3753
|
readGoniometerLatest: (stripIndex: number, maxPoints: number) => WasmGoniometerPoint[];
|
|
3754
|
+
addStrip: (id: string, metering: StripMeteringOptions) => void;
|
|
2669
3755
|
addBus: (id: string, role: string) => void;
|
|
2670
3756
|
removeBus: (id: string) => void;
|
|
2671
3757
|
busCount: () => number;
|
|
@@ -2744,6 +3830,7 @@ export interface WasmAnalyzerStats {
|
|
|
2744
3830
|
droppedOutputFrames: number;
|
|
2745
3831
|
droppedChordProgressionEntries: number;
|
|
2746
3832
|
droppedBarProgressionEntries: number;
|
|
3833
|
+
nonFiniteDiscardBlocks: number;
|
|
2747
3834
|
estimate: WasmProgressiveEstimate;
|
|
2748
3835
|
}
|
|
2749
3836
|
|
|
@@ -2794,8 +3881,11 @@ export interface WasmStreamFramesI16 {
|
|
|
2794
3881
|
}
|
|
2795
3882
|
|
|
2796
3883
|
export interface WasmStreamAnalyzer {
|
|
3884
|
+
/** Throws (invalid state) when the stream was already finalized; reset first. */
|
|
2797
3885
|
process: (samples: Float32Array) => void;
|
|
3886
|
+
/** Rejects a gap, a seek, a mode switch, and a chunk fed after finalize. */
|
|
2798
3887
|
processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
|
|
3888
|
+
/** Idempotent on success; a failed call leaves the stream un-finalized. */
|
|
2799
3889
|
finalize: () => void;
|
|
2800
3890
|
availableFrames: () => number;
|
|
2801
3891
|
readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
|
|
@@ -2807,7 +3897,9 @@ export interface WasmStreamAnalyzer {
|
|
|
2807
3897
|
currentTime: () => number;
|
|
2808
3898
|
sampleRate: () => number;
|
|
2809
3899
|
setExpectedDuration: (durationSeconds: number) => void;
|
|
3900
|
+
/** Throws outside 0.01..100; the request is refused, never clamped. */
|
|
2810
3901
|
setNormalizationGain: (gain: number) => void;
|
|
3902
|
+
/** Throws outside 220..880 Hz; the request is refused, never clamped. */
|
|
2811
3903
|
setTuningRefHz: (refHz: number) => void;
|
|
2812
3904
|
delete: () => void;
|
|
2813
3905
|
}
|