@libraz/libsonare 1.7.2 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +7 -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 +874 -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 +502 -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 +134 -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 +4173 -1621
- 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 +483 -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 +654 -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 +528 -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 +165 -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 +893 -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 +3945 -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 +340 -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 +164 -0
- package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
- package/dist/worklet/engine-node.d.ts +83 -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 +72 -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 +75 -0
- package/dist/worklet/engine-strips.d.ts.map +1 -0
- package/dist/worklet/engine-sync.d.ts +39 -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 +418 -0
- package/dist/worklet/engine.d.ts.map +1 -0
- package/dist/worklet/guards.d.ts +53 -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 +331 -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 +3200 -541
- package/dist/worklet.js.map +1 -1
- package/package.json +23 -12
- package/src/_effects_common.ts +47 -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 +101 -22
- package/src/effects_note_ops.ts +683 -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 +388 -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 +288 -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 +441 -32
- package/src/mastering_dynamics.ts +22 -11
- package/src/metering.ts +67 -24
- package/src/mixer.ts +251 -22
- 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 +271 -271
- package/src/public_types.ts +122 -3
- package/src/public_types_acoustic.ts +112 -3
- package/src/public_types_mastering.ts +275 -73
- package/src/public_types_mixing.ts +363 -1
- package/src/public_types_music.ts +312 -2
- package/src/public_types_playback.ts +196 -0
- package/src/public_types_realtime.ts +39 -7
- package/src/public_types_repair.ts +446 -0
- package/src/public_types_spectral.ts +491 -5
- package/src/quick_analysis.ts +203 -26
- package/src/realtime_engine.ts +773 -34
- 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 +1158 -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 +202 -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 +800 -32
- package/src/worklet/engine-node.ts +99 -29
- package/src/worklet/engine-offline.ts +14 -8
- package/src/worklet/engine-parameter-facade.ts +21 -0
- package/src/worklet/engine-processor.ts +332 -93
- package/src/worklet/engine-register.ts +32 -18
- package/src/worklet/engine-strips.ts +275 -9
- package/src/worklet/engine-sync.ts +20 -7
- package/src/worklet/engine.ts +394 -48
- package/src/worklet/guards.ts +195 -44
- package/src/worklet/messages.ts +229 -2
- package/src/worklet/mixer-processor.ts +117 -48
- package/src/worklet/playback-processor.ts +300 -0
- package/src/worklet/protocol.ts +82 -11
- 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,31 @@ 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;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
export interface WasmLoudnessMatchStereoResult extends Omit<WasmLoudnessMatchResult, 'samples'> {
|
|
833
|
+
left: Float32Array;
|
|
834
|
+
right: Float32Array;
|
|
501
835
|
}
|
|
502
836
|
|
|
503
837
|
export interface WasmStageGainReduction {
|
|
@@ -527,6 +861,19 @@ export interface WasmMasteringChainResult extends WasmMasteringResult {
|
|
|
527
861
|
outputTruePeakDbtp: number;
|
|
528
862
|
outputLra: number;
|
|
529
863
|
loudnessTargetLimited: boolean;
|
|
864
|
+
/**
|
|
865
|
+
* Samples a stage replaced with a finite in-domain one, keeping the
|
|
866
|
+
* output finite and in range. A non-finite sample supplied by the caller
|
|
867
|
+
* is rejected before any stage runs, so a replacement is always of a
|
|
868
|
+
* value a stage itself produced.
|
|
869
|
+
*
|
|
870
|
+
* Only the true-peak limiters replace anything, so with the maximizer's
|
|
871
|
+
* limiter and the loudness stage both disabled a zero here means no
|
|
872
|
+
* stage was able to replace anything rather than that nothing needed
|
|
873
|
+
* replacing. Overrides the inherited {@link WasmMasteringResult} doc,
|
|
874
|
+
* which describes a single named processor rather than a chain.
|
|
875
|
+
*/
|
|
876
|
+
nonFiniteSubstitutionCount: number;
|
|
530
877
|
stageGainReductions: WasmStageGainReduction[];
|
|
531
878
|
report: WasmMasteringReport;
|
|
532
879
|
}
|
|
@@ -542,6 +889,8 @@ export interface WasmMasteringStereoChainResult {
|
|
|
542
889
|
outputTruePeakDbtp: number;
|
|
543
890
|
outputLra: number;
|
|
544
891
|
loudnessTargetLimited: boolean;
|
|
892
|
+
/** See {@link WasmMasteringChainResult} for field semantics. Aggregated over both channels. */
|
|
893
|
+
nonFiniteSubstitutionCount: number;
|
|
545
894
|
stageGainReductions: WasmStageGainReduction[];
|
|
546
895
|
report: WasmMasteringReport;
|
|
547
896
|
}
|
|
@@ -554,6 +903,9 @@ export interface WasmMasteringStereoResult {
|
|
|
554
903
|
outputLufs: number;
|
|
555
904
|
appliedGainDb: number;
|
|
556
905
|
latencySamples: number;
|
|
906
|
+
loudnessTargetLimited: boolean;
|
|
907
|
+
/** Aggregated over both channels. */
|
|
908
|
+
nonFiniteSubstitutionCount: number;
|
|
557
909
|
}
|
|
558
910
|
|
|
559
911
|
export interface WasmMixMeterSnapshot {
|
|
@@ -570,13 +922,24 @@ export interface WasmMixMeterSnapshot {
|
|
|
570
922
|
shortTermLufs: number;
|
|
571
923
|
integratedLufs: number;
|
|
572
924
|
gainReductionDb: number;
|
|
925
|
+
/**
|
|
926
|
+
* Left-channel inter-sample (true) peak in dB, from the ITU-R BS.1770-4
|
|
927
|
+
* polyphase reconstruction at 4x. A streaming measurement: the centered
|
|
928
|
+
* reconstruction stencil needs a few future samples a realtime path does not
|
|
929
|
+
* have, so each block's last samples read marginally low (about 0.1 dB across
|
|
930
|
+
* 64..8192-sample blocks on a near-Nyquist tone, always under-reading). Use
|
|
931
|
+
* `meteringTruePeakDb` over the whole signal for an exact dBTP number.
|
|
932
|
+
*/
|
|
573
933
|
truePeakDbL: number;
|
|
934
|
+
/** Right-channel inter-sample (true) peak in dB. See {@link truePeakDbL}. */
|
|
574
935
|
truePeakDbR: number;
|
|
936
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDbL}. */
|
|
575
937
|
maxTruePeakDb: number;
|
|
576
938
|
seq: number;
|
|
577
939
|
channelCount: number;
|
|
578
940
|
peakDb: number[];
|
|
579
941
|
rmsDb: number[];
|
|
942
|
+
/** Per-plane inter-sample peak in dB; [0]/[1] mirror {@link truePeakDbL}/R. */
|
|
580
943
|
truePeakDb: number[];
|
|
581
944
|
}
|
|
582
945
|
|
|
@@ -598,7 +961,7 @@ export interface WasmEngineClip {
|
|
|
598
961
|
gain?: number;
|
|
599
962
|
fadeInSamples?: number;
|
|
600
963
|
fadeOutSamples?: number;
|
|
601
|
-
warpMode?: 'off' | 'repitch' | 'tempo-sync' | 0 | 1 | 2;
|
|
964
|
+
warpMode?: 'off' | 'repitch' | 'tempo-sync' | 'time-stretch' | 0 | 1 | 2 | 3;
|
|
602
965
|
warpAnchors?: Array<{ warpSample: number; sourceSample: number }>;
|
|
603
966
|
pageProvider?: number | { readonly id: number };
|
|
604
967
|
}
|
|
@@ -607,6 +970,8 @@ export interface WasmEngineTrackSend {
|
|
|
607
970
|
busId: number;
|
|
608
971
|
levelDb?: number;
|
|
609
972
|
enabled?: boolean;
|
|
973
|
+
/** Native send tap: 0 post-fader (default), 1 pre-fader. */
|
|
974
|
+
sendTiming?: number;
|
|
610
975
|
}
|
|
611
976
|
|
|
612
977
|
export interface WasmEngineTrackLane {
|
|
@@ -628,6 +993,13 @@ export interface WasmEngineBus {
|
|
|
628
993
|
busId: number;
|
|
629
994
|
gainDb?: number;
|
|
630
995
|
channelLayout?: number;
|
|
996
|
+
/**
|
|
997
|
+
* Bus this bus's output sums into instead of the master mix; 0 or absent
|
|
998
|
+
* keeps it on the master mix.
|
|
999
|
+
*/
|
|
1000
|
+
outputBusId?: number;
|
|
1001
|
+
/** Sends to other buses, in the same shape as a track lane's sends. */
|
|
1002
|
+
sends?: WasmEngineTrackSend[];
|
|
631
1003
|
}
|
|
632
1004
|
|
|
633
1005
|
export interface WasmClipPageRequest {
|
|
@@ -639,12 +1011,18 @@ export interface WasmClipPageRequest {
|
|
|
639
1011
|
export interface WasmEngineParameterInfo {
|
|
640
1012
|
id: number;
|
|
641
1013
|
name: string;
|
|
642
|
-
unit
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
1014
|
+
/** Display unit; omit for an empty string. */
|
|
1015
|
+
unit?: string;
|
|
1016
|
+
/** Lower end of the parameter range. Default `0`. */
|
|
1017
|
+
minValue?: number;
|
|
1018
|
+
/** Upper end of the parameter range. Default `1`. */
|
|
1019
|
+
maxValue?: number;
|
|
1020
|
+
/** Value the parameter starts at. Default `0`. */
|
|
1021
|
+
defaultValue?: number;
|
|
1022
|
+
/** Whether the parameter is safe to change from the realtime thread. Default `true`. */
|
|
1023
|
+
rtSafe?: boolean;
|
|
1024
|
+
/** Curve used by automation points that omit `curveToNext`. Default `1` (exponential). */
|
|
1025
|
+
defaultCurve?: number;
|
|
648
1026
|
}
|
|
649
1027
|
|
|
650
1028
|
export interface WasmEngineAutomationPoint {
|
|
@@ -727,6 +1105,13 @@ export interface WasmEngineGraphConnection {
|
|
|
727
1105
|
sourcePort: number;
|
|
728
1106
|
destNode: string;
|
|
729
1107
|
destPort: number;
|
|
1108
|
+
/**
|
|
1109
|
+
* Mixing intent (`0` = replace, `1` = add).
|
|
1110
|
+
*
|
|
1111
|
+
* NOTE: not currently honored — the compiled graph always sums edges into a
|
|
1112
|
+
* shared destination port in an order-independent way (the first edge into a
|
|
1113
|
+
* port overwrites, every later edge adds), regardless of this value.
|
|
1114
|
+
*/
|
|
730
1115
|
mix?: number;
|
|
731
1116
|
}
|
|
732
1117
|
|
|
@@ -755,6 +1140,12 @@ export interface WasmEngineTelemetry {
|
|
|
755
1140
|
}
|
|
756
1141
|
|
|
757
1142
|
export interface WasmEngineMeterTelemetry {
|
|
1143
|
+
/**
|
|
1144
|
+
* Telemetry tap target id: `0` master mix, `laneIndex + 1` (1..32) for track
|
|
1145
|
+
* lanes, `33 + busIndex` (33..40) for buses, and `0xFFFF` for the
|
|
1146
|
+
* input-monitor capture tap. Handle `0xFFFF` explicitly -- a naive
|
|
1147
|
+
* `targetId - 1` index into a 32-entry lane array runs past its end.
|
|
1148
|
+
*/
|
|
758
1149
|
targetId: number;
|
|
759
1150
|
renderFrame: number;
|
|
760
1151
|
seq: number;
|
|
@@ -762,8 +1153,18 @@ export interface WasmEngineMeterTelemetry {
|
|
|
762
1153
|
peakDbR: number;
|
|
763
1154
|
rmsDbL: number;
|
|
764
1155
|
rmsDbR: number;
|
|
1156
|
+
/**
|
|
1157
|
+
* Left-channel inter-sample (true) peak in dB, from the ITU-R BS.1770-4
|
|
1158
|
+
* polyphase reconstruction at 4x. A streaming measurement: the centered
|
|
1159
|
+
* reconstruction stencil needs a few future samples a realtime path does not
|
|
1160
|
+
* have, so each block's last samples read marginally low (about 0.1 dB across
|
|
1161
|
+
* 64..8192-sample blocks on a near-Nyquist tone, always under-reading). Use
|
|
1162
|
+
* `meteringTruePeakDb` over the whole signal for an exact dBTP number.
|
|
1163
|
+
*/
|
|
765
1164
|
truePeakDbL: number;
|
|
1165
|
+
/** Right-channel inter-sample (true) peak in dB. See {@link truePeakDbL}. */
|
|
766
1166
|
truePeakDbR: number;
|
|
1167
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDbL}. */
|
|
767
1168
|
maxTruePeakDb: number;
|
|
768
1169
|
correlation: number;
|
|
769
1170
|
monoCompatWidth: number;
|
|
@@ -771,17 +1172,37 @@ export interface WasmEngineMeterTelemetry {
|
|
|
771
1172
|
shortTermLufs: number;
|
|
772
1173
|
integratedLufs: number;
|
|
773
1174
|
gainReductionDb: number;
|
|
1175
|
+
/** Maximum pre-trim input peak for the left channel, in dBFS. */
|
|
1176
|
+
inputPeakDbL: number;
|
|
1177
|
+
/** Maximum pre-trim input peak for the right channel, in dBFS. */
|
|
1178
|
+
inputPeakDbR: number;
|
|
774
1179
|
droppedRecords: number;
|
|
775
1180
|
}
|
|
776
1181
|
|
|
777
1182
|
export interface WasmEngineMeterTelemetryWide {
|
|
1183
|
+
/**
|
|
1184
|
+
* Telemetry tap target id: `0` master mix, `laneIndex + 1` (1..32) for track
|
|
1185
|
+
* lanes, `33 + busIndex` (33..40) for buses, and `0xFFFF` for the
|
|
1186
|
+
* input-monitor capture tap. Handle `0xFFFF` explicitly -- a naive
|
|
1187
|
+
* `targetId - 1` index into a 32-entry lane array runs past its end.
|
|
1188
|
+
*/
|
|
778
1189
|
targetId: number;
|
|
779
1190
|
renderFrame: number;
|
|
780
1191
|
seq: number;
|
|
781
1192
|
channelCount: number;
|
|
782
1193
|
peakDb: number[];
|
|
783
1194
|
rmsDb: number[];
|
|
1195
|
+
/**
|
|
1196
|
+
* Per-plane inter-sample (true) peak in dB (length `channelCount`), from the
|
|
1197
|
+
* ITU-R BS.1770-4 polyphase reconstruction at 4x. A streaming measurement: the
|
|
1198
|
+
* centered reconstruction stencil needs a few future samples a realtime path
|
|
1199
|
+
* does not have, so each block's last samples read marginally low (about
|
|
1200
|
+
* 0.1 dB across 64..8192-sample blocks on a near-Nyquist tone, always
|
|
1201
|
+
* under-reading). Use `meteringTruePeakDb` over the whole signal for an exact
|
|
1202
|
+
* dBTP number.
|
|
1203
|
+
*/
|
|
784
1204
|
truePeakDb: number[];
|
|
1205
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDb}. */
|
|
785
1206
|
maxTruePeakDb: number;
|
|
786
1207
|
correlation: number;
|
|
787
1208
|
monoCompatWidth: number;
|
|
@@ -789,10 +1210,18 @@ export interface WasmEngineMeterTelemetryWide {
|
|
|
789
1210
|
shortTermLufs: number;
|
|
790
1211
|
integratedLufs: number;
|
|
791
1212
|
gainReductionDb: number;
|
|
1213
|
+
/** Pre-trim input peak for each valid plane, in dBFS. */
|
|
1214
|
+
inputPeakDb: number[];
|
|
792
1215
|
droppedRecords: number;
|
|
793
1216
|
}
|
|
794
1217
|
|
|
795
1218
|
export interface WasmEngineScopeTelemetry {
|
|
1219
|
+
/**
|
|
1220
|
+
* Telemetry tap target id: `0` master mix, `laneIndex + 1` (1..32) for track
|
|
1221
|
+
* lanes, `33 + busIndex` (33..40) for buses, and `0xFFFF` for the
|
|
1222
|
+
* input-monitor capture tap. Handle `0xFFFF` explicitly -- a naive
|
|
1223
|
+
* `targetId - 1` index into a 32-entry lane array runs past its end.
|
|
1224
|
+
*/
|
|
796
1225
|
targetId: number;
|
|
797
1226
|
renderFrame: number;
|
|
798
1227
|
seq: number;
|
|
@@ -838,12 +1267,37 @@ export interface WasmEngineTransportState {
|
|
|
838
1267
|
}
|
|
839
1268
|
|
|
840
1269
|
export interface WasmEngineBounceOptions {
|
|
1270
|
+
/**
|
|
1271
|
+
* Length of the bounce in frames. The whole result is held in memory, so the
|
|
1272
|
+
* span is capped by a 1 GiB peak budget over the full-size float buffers a
|
|
1273
|
+
* bounce holds at once, and exceeding it throws an `InvalidParameter`
|
|
1274
|
+
* `SonareError`.
|
|
1275
|
+
*
|
|
1276
|
+
* The cap is a **frame** count: inversely proportional to `numChannels`, and
|
|
1277
|
+
* independent of the sample rate. Stereo refuses past 44,739,242 frames, or
|
|
1278
|
+
* past 33,554,432 frames when `dither` is set, which adds one more copy; 5.1
|
|
1279
|
+
* refuses past a third of each. Read as a **duration** those two stereo counts
|
|
1280
|
+
* are 15 min 32 s and 11 min 39 s at 48 kHz, and half that at 96 kHz. When
|
|
1281
|
+
* `sourceSampleRate` and `targetSampleRate` differ both the source and the
|
|
1282
|
+
* resampled length are checked, so the longer of the two is what binds.
|
|
1283
|
+
*
|
|
1284
|
+
* Render longer material in chunks via `renderOffline({ finalize: false })`.
|
|
1285
|
+
* The cap is a fixed budget, not a probe of the module's heap, which on wasm32
|
|
1286
|
+
* can run out below it.
|
|
1287
|
+
*/
|
|
841
1288
|
totalFrames: number;
|
|
842
1289
|
blockSize?: number;
|
|
843
1290
|
numChannels?: number;
|
|
844
1291
|
targetSampleRate?: number;
|
|
845
1292
|
sourceSampleRate?: number;
|
|
846
1293
|
normalizeLufs?: boolean;
|
|
1294
|
+
/**
|
|
1295
|
+
* Target integrated loudness when `normalizeLufs` is set. Omitting it, passing
|
|
1296
|
+
* `0`, and passing a non-finite value all mean the library default of
|
|
1297
|
+
* -14 LUFS: the non-finite case resolves rather than being reported, matching
|
|
1298
|
+
* the C ABI, because the loudness stage derives a per-sample gain from this
|
|
1299
|
+
* and checks nothing itself.
|
|
1300
|
+
*/
|
|
847
1301
|
targetLufs?: number;
|
|
848
1302
|
dither?: 0 | 1 | 2 | 3;
|
|
849
1303
|
ditherBits?: number;
|
|
@@ -914,18 +1368,22 @@ export interface WasmRealtimeEngine {
|
|
|
914
1368
|
commandCapacity: number,
|
|
915
1369
|
telemetryCapacity: number,
|
|
916
1370
|
) => void;
|
|
917
|
-
setParameter: (paramId: number, value: number, renderFrame
|
|
918
|
-
setParameterSmoothed: (paramId: number, value: number, renderFrame
|
|
1371
|
+
setParameter: (paramId: number, value: number, renderFrame?: number) => void;
|
|
1372
|
+
setParameterSmoothed: (paramId: number, value: number, renderFrame?: number) => void;
|
|
919
1373
|
setParamSmoothingMs: (smoothingMs: number) => void;
|
|
920
|
-
setSoloMute: (laneIndex: number, solo: boolean, mute: boolean, renderFrame
|
|
921
|
-
setTrackMonitorMode: (laneIndex: number, mode: number, renderFrame
|
|
1374
|
+
setSoloMute: (laneIndex: number, solo: boolean, mute: boolean, renderFrame?: number) => void;
|
|
1375
|
+
setTrackMonitorMode: (laneIndex: number, mode: number, renderFrame?: number) => void;
|
|
922
1376
|
getTransportState: () => WasmEngineTransportState;
|
|
923
|
-
play: (renderFrame
|
|
924
|
-
stop: (renderFrame
|
|
925
|
-
|
|
1377
|
+
play: (renderFrame?: number) => void;
|
|
1378
|
+
stop: (renderFrame?: number) => void;
|
|
1379
|
+
resetMasterLoudnessMeter: (renderFrame?: number) => void;
|
|
1380
|
+
insertParameterConstructedValue: (paramId: number) => number;
|
|
1381
|
+
seekSample: (timelineSample: number, renderFrame?: number) => void;
|
|
926
1382
|
settleParameters: () => void;
|
|
1383
|
+
settleInsertParameters: () => void;
|
|
927
1384
|
flushControlCommands: () => void;
|
|
928
|
-
|
|
1385
|
+
applyCommandsDueNowPreservingFuture: () => void;
|
|
1386
|
+
seekPpq: (ppq: number, renderFrame?: number) => void;
|
|
929
1387
|
setTempo: (bpm: number) => void;
|
|
930
1388
|
setTempoSegments: (segments: WasmEngineTempoSegment[]) => void;
|
|
931
1389
|
setTimeSignature: (numerator: number, denominator: number) => void;
|
|
@@ -934,15 +1392,15 @@ export interface WasmRealtimeEngine {
|
|
|
934
1392
|
setLoop: (startPpq: number, endPpq: number, enabled: boolean) => void;
|
|
935
1393
|
addParameter: (info: WasmEngineParameterInfo) => void;
|
|
936
1394
|
parameterCount: () => number;
|
|
937
|
-
parameterInfoByIndex: (index: number) => WasmEngineParameterInfo
|
|
938
|
-
parameterInfo: (id: number) => WasmEngineParameterInfo
|
|
1395
|
+
parameterInfoByIndex: (index: number) => Required<WasmEngineParameterInfo>;
|
|
1396
|
+
parameterInfo: (id: number) => Required<WasmEngineParameterInfo>;
|
|
939
1397
|
setAutomationLane: (paramId: number, points: WasmEngineAutomationPoint[]) => void;
|
|
940
1398
|
automationLaneCount: () => number;
|
|
941
1399
|
setMarkers: (markers: WasmEngineMarker[]) => void;
|
|
942
1400
|
markerCount: () => number;
|
|
943
1401
|
markerByIndex: (index: number) => WasmEngineMarker;
|
|
944
1402
|
marker: (id: number) => WasmEngineMarker;
|
|
945
|
-
seekMarker: (id: number, renderFrame
|
|
1403
|
+
seekMarker: (id: number, renderFrame?: number) => void;
|
|
946
1404
|
setLoopFromMarkers: (startMarkerId: number, endMarkerId: number) => void;
|
|
947
1405
|
setMetronome: (config: WasmEngineMetronomeConfig) => void;
|
|
948
1406
|
metronome: () => Required<WasmEngineMetronomeConfig>;
|
|
@@ -956,9 +1414,17 @@ export interface WasmRealtimeEngine {
|
|
|
956
1414
|
setTrackLanes: (lanes: Array<number | WasmEngineTrackLane>) => void;
|
|
957
1415
|
setLaneSidechain: (trackId: number, insertIndex: number, sourceTrackId: number) => void;
|
|
958
1416
|
setTrackBuses: (buses: WasmEngineBus[]) => void;
|
|
1417
|
+
setBusSidechain: (
|
|
1418
|
+
busId: number,
|
|
1419
|
+
insertIndex: number,
|
|
1420
|
+
sourceKind: number,
|
|
1421
|
+
sourceId: number,
|
|
1422
|
+
) => void;
|
|
1423
|
+
setMasterSidechain: (insertIndex: number, sourceKind: number, sourceId: number) => void;
|
|
959
1424
|
setBusStripJson: (busId: number, sceneJson: string) => void;
|
|
960
1425
|
setTrackStripJson: (trackId: number, sceneJson: string) => void;
|
|
961
1426
|
setTrackStripEqBandJson: (trackId: number, bandIndex: number, bandJson: string) => void;
|
|
1427
|
+
setBusStripEqBandJson: (busId: number, bandIndex: number, bandJson: string) => void;
|
|
962
1428
|
setTrackStripInsertBypassed: (
|
|
963
1429
|
trackId: number,
|
|
964
1430
|
insertIndex: number,
|
|
@@ -978,13 +1444,50 @@ export interface WasmRealtimeEngine {
|
|
|
978
1444
|
paramName: string,
|
|
979
1445
|
value: number,
|
|
980
1446
|
) => void;
|
|
1447
|
+
applyTrackStripInsertParamByNameNow: (
|
|
1448
|
+
trackId: number,
|
|
1449
|
+
insertIndex: number,
|
|
1450
|
+
paramName: string,
|
|
1451
|
+
value: number,
|
|
1452
|
+
) => boolean;
|
|
1453
|
+
restoreTrackStripInsertParamByName: (
|
|
1454
|
+
trackId: number,
|
|
1455
|
+
insertIndex: number,
|
|
1456
|
+
paramName: string,
|
|
1457
|
+
value: number,
|
|
1458
|
+
) => void;
|
|
981
1459
|
setMasterStripInsertParamByName: (insertIndex: number, paramName: string, value: number) => void;
|
|
1460
|
+
applyMasterStripInsertParamByNameNow: (
|
|
1461
|
+
insertIndex: number,
|
|
1462
|
+
paramName: string,
|
|
1463
|
+
value: number,
|
|
1464
|
+
) => boolean;
|
|
1465
|
+
restoreMasterStripInsertParamByName: (
|
|
1466
|
+
insertIndex: number,
|
|
1467
|
+
paramName: string,
|
|
1468
|
+
value: number,
|
|
1469
|
+
) => void;
|
|
982
1470
|
setBusStripInsertParamByName: (
|
|
983
1471
|
busId: number,
|
|
984
1472
|
insertIndex: number,
|
|
985
1473
|
paramName: string,
|
|
986
1474
|
value: number,
|
|
987
1475
|
) => void;
|
|
1476
|
+
applyBusStripInsertParamByNameNow: (
|
|
1477
|
+
busId: number,
|
|
1478
|
+
insertIndex: number,
|
|
1479
|
+
paramName: string,
|
|
1480
|
+
value: number,
|
|
1481
|
+
) => boolean;
|
|
1482
|
+
restoreBusStripInsertParamByName: (
|
|
1483
|
+
busId: number,
|
|
1484
|
+
insertIndex: number,
|
|
1485
|
+
paramName: string,
|
|
1486
|
+
value: number,
|
|
1487
|
+
) => void;
|
|
1488
|
+
clearTrackInsertParameterBases: (trackId: number) => void;
|
|
1489
|
+
clearBusInsertParameterBases: (busId: number) => void;
|
|
1490
|
+
clearMasterInsertParameterBases: () => void;
|
|
988
1491
|
setBusStripInsertBypassed: (
|
|
989
1492
|
busId: number,
|
|
990
1493
|
insertIndex: number,
|
|
@@ -998,10 +1501,15 @@ export interface WasmRealtimeEngine {
|
|
|
998
1501
|
) => number;
|
|
999
1502
|
resolveMasterInsertAutomationId: (insertIndex: number, paramName: string) => number;
|
|
1000
1503
|
resolveBusInsertAutomationId: (busId: number, insertIndex: number, paramName: string) => number;
|
|
1504
|
+
resolveInstrumentAutomationId: (destinationId: number, paramName: string) => number;
|
|
1001
1505
|
setTrackStripPan: (trackId: number, pan: number) => void;
|
|
1002
1506
|
setTrackStripPanLaw: (trackId: number, panLaw: number) => void;
|
|
1003
1507
|
setTrackStripPanMode: (trackId: number, panMode: number) => void;
|
|
1004
1508
|
setTrackStripDualPan: (trackId: number, leftPan: number, rightPan: number) => void;
|
|
1509
|
+
setBusStripPan: (busId: number, pan: number) => void;
|
|
1510
|
+
setBusStripPanLaw: (busId: number, panLaw: number) => void;
|
|
1511
|
+
setBusStripPanMode: (busId: number, panMode: number) => void;
|
|
1512
|
+
setBusStripDualPan: (busId: number, leftPan: number, rightPan: number) => void;
|
|
1005
1513
|
setTrackStripChannelDelaySamples: (trackId: number, delaySamples: number) => void;
|
|
1006
1514
|
createClipPageProvider: (numChannels: number, numSamples: number, pageFrames: number) => number;
|
|
1007
1515
|
supplyClipPage: (providerId: number, pageIndex: number, channels: Float32Array[]) => void;
|
|
@@ -1012,6 +1520,11 @@ export interface WasmRealtimeEngine {
|
|
|
1012
1520
|
clipPageRequestScratchClipId: () => number;
|
|
1013
1521
|
clipPageRequestScratchSample: () => number;
|
|
1014
1522
|
clipPageRequestOverflowCount: () => number;
|
|
1523
|
+
warpStretchOverflowCount: () => number;
|
|
1524
|
+
setWarpVoiceCapacity: (voices: number) => void;
|
|
1525
|
+
warpVoiceCapacity: () => number;
|
|
1526
|
+
setClipPagePrefetchFrames: (frames: number) => void;
|
|
1527
|
+
clipPagePrefetchFrames: () => number;
|
|
1015
1528
|
setCaptureBuffer: (numChannels: number, capacityFrames: number) => void;
|
|
1016
1529
|
armCapture: (armed: boolean) => void;
|
|
1017
1530
|
setCapturePunch: (startSample: number, endSample: number, enabled: boolean) => void;
|
|
@@ -1038,6 +1551,34 @@ export interface WasmRealtimeEngine {
|
|
|
1038
1551
|
bindMidiCcBinding: (binding: import('./project_types').ProjectMidiCcBinding) => void;
|
|
1039
1552
|
clearMidiCcBindings: () => void;
|
|
1040
1553
|
midiCcBindingCount: () => number;
|
|
1554
|
+
setControllerProfile: (destinationId: number, presetName: string) => void;
|
|
1555
|
+
bindController: (
|
|
1556
|
+
destinationId: number,
|
|
1557
|
+
binding: import('./instrument_types').ControllerBinding,
|
|
1558
|
+
) => void;
|
|
1559
|
+
clearControllerBindings: (destinationId: number) => void;
|
|
1560
|
+
controllerBindingCount: (destinationId: number) => number;
|
|
1561
|
+
setControllerVelocityMeaningful: (destinationId: number, meaningful: boolean) => void;
|
|
1562
|
+
controllerVelocityMeaningful: (destinationId: number) => boolean;
|
|
1563
|
+
setControllerNoteTracking: (
|
|
1564
|
+
destinationId: number,
|
|
1565
|
+
dimension: import('./instrument_types').MpeDimension | number,
|
|
1566
|
+
tracking: import('./instrument_types').NoteTracking | number,
|
|
1567
|
+
) => void;
|
|
1568
|
+
controllerNoteTracking: (
|
|
1569
|
+
destinationId: number,
|
|
1570
|
+
dimension: import('./instrument_types').MpeDimension | number,
|
|
1571
|
+
) => import('./instrument_types').NoteTracking | number;
|
|
1572
|
+
setArticulation: (
|
|
1573
|
+
destinationId: number,
|
|
1574
|
+
channel: number,
|
|
1575
|
+
articulation: import('./instrument_types').Articulation | number,
|
|
1576
|
+
) => void;
|
|
1577
|
+
articulation: (
|
|
1578
|
+
destinationId: number,
|
|
1579
|
+
channel: number,
|
|
1580
|
+
) => import('./instrument_types').Articulation | number;
|
|
1581
|
+
legatoFallbackCount: (destinationId: number) => number;
|
|
1041
1582
|
setMidiFx: (destinationId: number, configJson: string) => void;
|
|
1042
1583
|
clearMidiFx: (destinationId: number) => void;
|
|
1043
1584
|
setMidiInputSource: (destinationId: number) => void;
|
|
@@ -1064,13 +1605,32 @@ export interface WasmRealtimeEngine {
|
|
|
1064
1605
|
value: number,
|
|
1065
1606
|
portTimeSamples: number,
|
|
1066
1607
|
) => void;
|
|
1608
|
+
pushMidiInputPitchBend: (
|
|
1609
|
+
group: number,
|
|
1610
|
+
channel: number,
|
|
1611
|
+
bend14: number,
|
|
1612
|
+
portTimeSamples: number,
|
|
1613
|
+
) => void;
|
|
1614
|
+
pushMidiInputChannelPressure: (
|
|
1615
|
+
group: number,
|
|
1616
|
+
channel: number,
|
|
1617
|
+
pressure: number,
|
|
1618
|
+
portTimeSamples: number,
|
|
1619
|
+
) => void;
|
|
1620
|
+
pushMidiInputPolyPressure: (
|
|
1621
|
+
group: number,
|
|
1622
|
+
channel: number,
|
|
1623
|
+
note: number,
|
|
1624
|
+
pressure: number,
|
|
1625
|
+
portTimeSamples: number,
|
|
1626
|
+
) => void;
|
|
1067
1627
|
pushMidiNoteOn: (
|
|
1068
1628
|
destinationId: number,
|
|
1069
1629
|
group: number,
|
|
1070
1630
|
channel: number,
|
|
1071
1631
|
note: number,
|
|
1072
1632
|
velocity: number,
|
|
1073
|
-
renderFrame
|
|
1633
|
+
renderFrame?: number,
|
|
1074
1634
|
) => void;
|
|
1075
1635
|
pushMidiNoteOff: (
|
|
1076
1636
|
destinationId: number,
|
|
@@ -1078,7 +1638,7 @@ export interface WasmRealtimeEngine {
|
|
|
1078
1638
|
channel: number,
|
|
1079
1639
|
note: number,
|
|
1080
1640
|
velocity: number,
|
|
1081
|
-
renderFrame
|
|
1641
|
+
renderFrame?: number,
|
|
1082
1642
|
) => void;
|
|
1083
1643
|
pushMidiCc: (
|
|
1084
1644
|
destinationId: number,
|
|
@@ -1086,11 +1646,38 @@ export interface WasmRealtimeEngine {
|
|
|
1086
1646
|
channel: number,
|
|
1087
1647
|
controller: number,
|
|
1088
1648
|
value: number,
|
|
1089
|
-
renderFrame
|
|
1649
|
+
renderFrame?: number,
|
|
1090
1650
|
) => void;
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1651
|
+
pushMidiPitchBend: (
|
|
1652
|
+
destinationId: number,
|
|
1653
|
+
group: number,
|
|
1654
|
+
channel: number,
|
|
1655
|
+
bend14: number,
|
|
1656
|
+
renderFrame?: number,
|
|
1657
|
+
) => void;
|
|
1658
|
+
pushMidiChannelPressure: (
|
|
1659
|
+
destinationId: number,
|
|
1660
|
+
group: number,
|
|
1661
|
+
channel: number,
|
|
1662
|
+
pressure: number,
|
|
1663
|
+
renderFrame?: number,
|
|
1664
|
+
) => void;
|
|
1665
|
+
pushMidiPolyPressure: (
|
|
1666
|
+
destinationId: number,
|
|
1667
|
+
group: number,
|
|
1668
|
+
channel: number,
|
|
1669
|
+
note: number,
|
|
1670
|
+
pressure: number,
|
|
1671
|
+
renderFrame?: number,
|
|
1672
|
+
) => void;
|
|
1673
|
+
pushMidiUmp: (
|
|
1674
|
+
destinationId: number,
|
|
1675
|
+
words: Uint32Array | readonly number[],
|
|
1676
|
+
renderFrame?: number,
|
|
1677
|
+
) => void;
|
|
1678
|
+
pushMidiInputUmp: (words: Uint32Array | readonly number[], portTimeSamples: number) => void;
|
|
1679
|
+
pushMidiSysex: (destinationId: number, data: Uint8Array, renderFrame?: number) => void;
|
|
1680
|
+
pushMidiPanic: (renderFrame?: number) => void;
|
|
1094
1681
|
setMidiDestinationExternal: (destinationId: number, external: boolean) => void;
|
|
1095
1682
|
setExternalMidiClockEnabled: (enabled: boolean) => void;
|
|
1096
1683
|
externalMidiDroppedCount: () => number;
|
|
@@ -1118,7 +1705,8 @@ export interface WasmRealtimeEngine {
|
|
|
1118
1705
|
getMonitorChannelBuffer: (channel: number, numFrames: number) => Float32Array;
|
|
1119
1706
|
processPreparedWithMonitor: (numFrames: number) => void;
|
|
1120
1707
|
processWithMonitor: (channels: Float32Array[]) => WasmEngineProcessWithMonitorResult;
|
|
1121
|
-
renderOffline: (channels: Float32Array[], blockSize: number) => Float32Array[];
|
|
1708
|
+
renderOffline: (channels: Float32Array[], blockSize: number, finalize: boolean) => Float32Array[];
|
|
1709
|
+
finishOfflineRender: () => void;
|
|
1122
1710
|
bounceOffline: (options: WasmEngineBounceOptions) => WasmEngineBounceResult;
|
|
1123
1711
|
freezeOffline: (options: WasmEngineFreezeOptions) => WasmEngineFreezeResult;
|
|
1124
1712
|
drainTelemetry: (maxRecords: number) => WasmEngineTelemetry[];
|
|
@@ -1134,6 +1722,8 @@ export interface WasmRealtimeEngine {
|
|
|
1134
1722
|
meterScratchTargetId: () => number;
|
|
1135
1723
|
meterScratchRenderFrame: () => number;
|
|
1136
1724
|
meterScratchValue: (field: number) => number;
|
|
1725
|
+
meterScratchInputPeakDbL: () => number;
|
|
1726
|
+
meterScratchInputPeakDbR: () => number;
|
|
1137
1727
|
drainMeterTelemetry: (maxRecords: number) => WasmEngineMeterTelemetry[];
|
|
1138
1728
|
drainMeterTelemetryWide: (maxRecords: number) => WasmEngineMeterTelemetryWide[];
|
|
1139
1729
|
configureScopeTelemetry: (intervalFrames: number, bandCount: number) => number;
|
|
@@ -1161,6 +1751,11 @@ export interface WasmSynthEnumTables {
|
|
|
1161
1751
|
bodyTypes: string[];
|
|
1162
1752
|
modSources: string[];
|
|
1163
1753
|
modDestinations: string[];
|
|
1754
|
+
controllerInputs: string[];
|
|
1755
|
+
controllerAxes: string[];
|
|
1756
|
+
articulations: string[];
|
|
1757
|
+
mpeDimensions: string[];
|
|
1758
|
+
noteTrackings: string[];
|
|
1164
1759
|
}
|
|
1165
1760
|
|
|
1166
1761
|
export interface SonareModule {
|
|
@@ -1213,6 +1808,7 @@ export interface SonareModule {
|
|
|
1213
1808
|
keyMode: number,
|
|
1214
1809
|
detectInversions: boolean,
|
|
1215
1810
|
chromaMethod: number,
|
|
1811
|
+
tuning: number,
|
|
1216
1812
|
) => WasmChordAnalysisResult;
|
|
1217
1813
|
chordFunctionalAnalysis: (
|
|
1218
1814
|
samples: Float32Array,
|
|
@@ -1231,10 +1827,76 @@ export interface SonareModule {
|
|
|
1231
1827
|
useKeyContext: boolean,
|
|
1232
1828
|
detectInversions: boolean,
|
|
1233
1829
|
chromaMethod: number,
|
|
1830
|
+
tuning: number,
|
|
1234
1831
|
) => string[];
|
|
1235
1832
|
analyze: (samples: Float32Array, sampleRate: number, options: object) => WasmAnalysisResult;
|
|
1833
|
+
estimateMeter: (
|
|
1834
|
+
beatTimes: ArrayLike<number>,
|
|
1835
|
+
beatStrengths: ArrayLike<number>,
|
|
1836
|
+
options: object,
|
|
1837
|
+
) => WasmMeterEstimateResult;
|
|
1236
1838
|
_synthEnumTables: () => WasmSynthEnumTables;
|
|
1237
1839
|
_synthPatchRoundTrip: (patch: unknown) => unknown;
|
|
1840
|
+
// Arrangement surface. Present only in a build with arrangement support, like
|
|
1841
|
+
// the mixing and voice-changer entries elsewhere in this interface; callers
|
|
1842
|
+
// probe for it at runtime (see projectModule() in project_internal.ts) rather
|
|
1843
|
+
// than through the type. `unknown` marks the shapes the facade owns — this
|
|
1844
|
+
// file describes the raw module and does not depend on the facade's types.
|
|
1845
|
+
projectAbiVersion: () => number;
|
|
1846
|
+
synthPresetNames: () => string[];
|
|
1847
|
+
synthPresetPatch: (name: string) => unknown;
|
|
1848
|
+
synthGsDrumKitName: (program: number) => string | null;
|
|
1849
|
+
synthGsDrumKitIsVoicedApart: (program: number) => number;
|
|
1850
|
+
synthGsVariationIsVoicedApart: (bank: number, program: number) => number;
|
|
1851
|
+
controllerProfileNames: () => string[];
|
|
1852
|
+
midiGmInstrumentName: (program: number) => string | null;
|
|
1853
|
+
midiGmProgramForName: (name: string) => number;
|
|
1854
|
+
midiGmFamilyName: (family: number) => string | null;
|
|
1855
|
+
midiGmFamilyFirstProgram: (family: number) => number;
|
|
1856
|
+
midiGm2InstrumentName: (bankLsb: number, program: number) => string | null;
|
|
1857
|
+
midiGmDrumName: (note: number) => string | null;
|
|
1858
|
+
midiGmDrumNoteForName: (name: string) => number;
|
|
1859
|
+
midiGm2DrumSetName: (bankLsb: number) => string | null;
|
|
1860
|
+
midiGm2DrumName: (bankLsb: number, note: number) => string | null;
|
|
1861
|
+
midiCcName: (controller: number) => string | null;
|
|
1862
|
+
midiCcIndexForName: (name: string) => number;
|
|
1863
|
+
midiPerNoteControllerName: (index: number) => string | null;
|
|
1864
|
+
midiBankProgram: (
|
|
1865
|
+
ppq: number,
|
|
1866
|
+
group: number,
|
|
1867
|
+
channel: number,
|
|
1868
|
+
bankMsb: number,
|
|
1869
|
+
bankLsb: number,
|
|
1870
|
+
program: number,
|
|
1871
|
+
) => unknown;
|
|
1872
|
+
midiRouteEvents: (events: readonly unknown[], config: unknown) => unknown;
|
|
1873
|
+
midiCcLearn: (
|
|
1874
|
+
events: readonly unknown[],
|
|
1875
|
+
paramId: number,
|
|
1876
|
+
minValue: number,
|
|
1877
|
+
maxValue: number,
|
|
1878
|
+
minMovement: number,
|
|
1879
|
+
) => unknown;
|
|
1880
|
+
midiCcToBreakpoint: (bindings: readonly unknown[], event: unknown) => unknown;
|
|
1881
|
+
midiParamToCc: (
|
|
1882
|
+
bindings: readonly unknown[],
|
|
1883
|
+
paramId: number,
|
|
1884
|
+
unitValue: number,
|
|
1885
|
+
group: number,
|
|
1886
|
+
ppq: number,
|
|
1887
|
+
) => unknown;
|
|
1888
|
+
transcribe: (
|
|
1889
|
+
samples: Float32Array,
|
|
1890
|
+
sampleRate: number,
|
|
1891
|
+
tempoBpm: number | undefined,
|
|
1892
|
+
config: unknown,
|
|
1893
|
+
) => unknown;
|
|
1894
|
+
alignTakeToReference: (
|
|
1895
|
+
reference: Float32Array,
|
|
1896
|
+
take: Float32Array,
|
|
1897
|
+
sampleRate: number,
|
|
1898
|
+
config: unknown,
|
|
1899
|
+
) => unknown;
|
|
1238
1900
|
_analysisResultSchemaPaths: () => string[];
|
|
1239
1901
|
_analysisResultSchemaFixture: () => WasmAnalysisResult;
|
|
1240
1902
|
analyzeImpulseResponse: (
|
|
@@ -1268,10 +1930,11 @@ export interface SonareModule {
|
|
|
1268
1930
|
samples: Float32Array,
|
|
1269
1931
|
sampleRate: number,
|
|
1270
1932
|
options: WasmRoomMorphOptions,
|
|
1271
|
-
) =>
|
|
1933
|
+
) => WasmRoomMorphResult;
|
|
1272
1934
|
analyzeWithProgress: (
|
|
1273
1935
|
samples: Float32Array,
|
|
1274
1936
|
sampleRate: number,
|
|
1937
|
+
options: object,
|
|
1275
1938
|
progressCallback: ProgressCallback | null,
|
|
1276
1939
|
cancelCallback: (() => boolean) | null,
|
|
1277
1940
|
) => WasmAnalysisResult;
|
|
@@ -1547,6 +2210,48 @@ export interface SonareModule {
|
|
|
1547
2210
|
sampleRate: number,
|
|
1548
2211
|
alignZeros: boolean,
|
|
1549
2212
|
) => Float32Array;
|
|
2213
|
+
decomposeStems: (
|
|
2214
|
+
samples: Float32Array,
|
|
2215
|
+
sampleRate: number,
|
|
2216
|
+
options: {
|
|
2217
|
+
nComponents?: number;
|
|
2218
|
+
nFft?: number;
|
|
2219
|
+
hopLength?: number;
|
|
2220
|
+
nIter?: number;
|
|
2221
|
+
beta?: number;
|
|
2222
|
+
init?: string;
|
|
2223
|
+
maskPower?: number;
|
|
2224
|
+
},
|
|
2225
|
+
) => {
|
|
2226
|
+
components: Float32Array[];
|
|
2227
|
+
w: Float32Array;
|
|
2228
|
+
h: Float32Array;
|
|
2229
|
+
sampleRate: number;
|
|
2230
|
+
};
|
|
2231
|
+
decomposeStemsLinked: (
|
|
2232
|
+
channels: Float32Array[],
|
|
2233
|
+
sampleRate: number,
|
|
2234
|
+
options: {
|
|
2235
|
+
nComponents?: number;
|
|
2236
|
+
nFft?: number;
|
|
2237
|
+
hopLength?: number;
|
|
2238
|
+
nIter?: number;
|
|
2239
|
+
beta?: number;
|
|
2240
|
+
init?: string;
|
|
2241
|
+
maskPower?: number;
|
|
2242
|
+
},
|
|
2243
|
+
) => {
|
|
2244
|
+
components: Float32Array[][];
|
|
2245
|
+
w: Float32Array;
|
|
2246
|
+
h: Float32Array;
|
|
2247
|
+
sampleRate: number;
|
|
2248
|
+
};
|
|
2249
|
+
remixAlignedIntervals: (
|
|
2250
|
+
samples: Float32Array,
|
|
2251
|
+
intervals: Int32Array,
|
|
2252
|
+
sampleRate: number,
|
|
2253
|
+
alignZeros: boolean,
|
|
2254
|
+
) => Int32Array;
|
|
1550
2255
|
phaseVocoder: (
|
|
1551
2256
|
samples: Float32Array,
|
|
1552
2257
|
sampleRate: number,
|
|
@@ -1620,6 +2325,116 @@ export interface SonareModule {
|
|
|
1620
2325
|
offsetSample: number,
|
|
1621
2326
|
targetOnsetSample: number,
|
|
1622
2327
|
) => Float32Array;
|
|
2328
|
+
extractNotes: (
|
|
2329
|
+
samples: Float32Array,
|
|
2330
|
+
sampleRate: number,
|
|
2331
|
+
f0Hz: Float32Array,
|
|
2332
|
+
voicedProb: Float32Array | undefined,
|
|
2333
|
+
voiced: Float32Array | undefined,
|
|
2334
|
+
frameRate: number,
|
|
2335
|
+
options: {
|
|
2336
|
+
segmentationThresholdCents?: number;
|
|
2337
|
+
minNoteMs?: number;
|
|
2338
|
+
referenceHz?: number;
|
|
2339
|
+
voicedThreshold?: number;
|
|
2340
|
+
},
|
|
2341
|
+
) => NoteObject[];
|
|
2342
|
+
renderNotes: (
|
|
2343
|
+
samples: Float32Array,
|
|
2344
|
+
sampleRate: number,
|
|
2345
|
+
notes: readonly NoteObjectInput[],
|
|
2346
|
+
options: {
|
|
2347
|
+
fadeMs?: number;
|
|
2348
|
+
f0Hz?: Float32Array;
|
|
2349
|
+
voiced?: Float32Array;
|
|
2350
|
+
frameRate?: number;
|
|
2351
|
+
vibratoCutoffHz?: number;
|
|
2352
|
+
},
|
|
2353
|
+
) => Float32Array;
|
|
2354
|
+
decomposeNotePitch: (
|
|
2355
|
+
f0Hz: Float32Array,
|
|
2356
|
+
voiced: Float32Array | undefined,
|
|
2357
|
+
frameRate: number,
|
|
2358
|
+
medianHz: number,
|
|
2359
|
+
vibratoCutoffHz: number,
|
|
2360
|
+
) => PitchDecompositionResult;
|
|
2361
|
+
splitNote: (
|
|
2362
|
+
samples: Float32Array,
|
|
2363
|
+
sampleRate: number,
|
|
2364
|
+
f0Hz: Float32Array,
|
|
2365
|
+
voicedProb: Float32Array | undefined,
|
|
2366
|
+
voiced: Float32Array | undefined,
|
|
2367
|
+
frameRate: number,
|
|
2368
|
+
notes: readonly NoteSetEntry[],
|
|
2369
|
+
index: number,
|
|
2370
|
+
frame: number,
|
|
2371
|
+
options: {
|
|
2372
|
+
segmentationThresholdCents?: number;
|
|
2373
|
+
minNoteMs?: number;
|
|
2374
|
+
referenceHz?: number;
|
|
2375
|
+
voicedThreshold?: number;
|
|
2376
|
+
},
|
|
2377
|
+
) => NoteObject[];
|
|
2378
|
+
mergeNotes: (
|
|
2379
|
+
samples: Float32Array,
|
|
2380
|
+
sampleRate: number,
|
|
2381
|
+
f0Hz: Float32Array,
|
|
2382
|
+
voicedProb: Float32Array | undefined,
|
|
2383
|
+
voiced: Float32Array | undefined,
|
|
2384
|
+
frameRate: number,
|
|
2385
|
+
notes: readonly NoteSetEntry[],
|
|
2386
|
+
first: number,
|
|
2387
|
+
last: number,
|
|
2388
|
+
options: {
|
|
2389
|
+
segmentationThresholdCents?: number;
|
|
2390
|
+
minNoteMs?: number;
|
|
2391
|
+
referenceHz?: number;
|
|
2392
|
+
voicedThreshold?: number;
|
|
2393
|
+
},
|
|
2394
|
+
) => NoteObject[];
|
|
2395
|
+
assignNoteTargets: (
|
|
2396
|
+
notes: readonly NoteObject[],
|
|
2397
|
+
sampleRate: number,
|
|
2398
|
+
targets: readonly NoteTarget[],
|
|
2399
|
+
options: {
|
|
2400
|
+
unmatchedPolicy?: NoteTargetUnmatchedPolicy;
|
|
2401
|
+
minOverlapRatio?: number;
|
|
2402
|
+
maxCorrectionSemitones?: number;
|
|
2403
|
+
},
|
|
2404
|
+
) => NoteTargetAssignResult;
|
|
2405
|
+
/** Absent from a build without arrangement support, which is what links the MIDI reader. */
|
|
2406
|
+
noteTargetsFromSmf?: (data: Uint8Array, trackIndex: number) => NoteTarget[];
|
|
2407
|
+
createPolyphonicAnalysis: (
|
|
2408
|
+
samples: Float32Array,
|
|
2409
|
+
sampleRate: number,
|
|
2410
|
+
config: Record<string, unknown>,
|
|
2411
|
+
) => WasmPolyphonicAnalysis;
|
|
2412
|
+
extractPercussiveEvents: (
|
|
2413
|
+
samples: Float32Array | readonly number[],
|
|
2414
|
+
sampleRate: number,
|
|
2415
|
+
options: {
|
|
2416
|
+
nFft?: number;
|
|
2417
|
+
hopLength?: number;
|
|
2418
|
+
hpssKernelHarmonic?: number;
|
|
2419
|
+
hpssKernelPercussive?: number;
|
|
2420
|
+
onsetWait?: number;
|
|
2421
|
+
onsetDelta?: number;
|
|
2422
|
+
maxEventMs?: number;
|
|
2423
|
+
minPercussiveRatio?: number;
|
|
2424
|
+
},
|
|
2425
|
+
) => PercussiveEvent[];
|
|
2426
|
+
renderPercussiveEvents: (
|
|
2427
|
+
samples: Float32Array | readonly number[],
|
|
2428
|
+
sampleRate: number,
|
|
2429
|
+
events: readonly PercussiveEventInput[],
|
|
2430
|
+
options: {
|
|
2431
|
+
nFft?: number;
|
|
2432
|
+
hopLength?: number;
|
|
2433
|
+
hpssKernelHarmonic?: number;
|
|
2434
|
+
hpssKernelPercussive?: number;
|
|
2435
|
+
fadeMs?: number;
|
|
2436
|
+
},
|
|
2437
|
+
) => Float32Array;
|
|
1623
2438
|
voiceChange: (
|
|
1624
2439
|
samples: Float32Array,
|
|
1625
2440
|
sampleRate: number,
|
|
@@ -1639,6 +2454,13 @@ export interface SonareModule {
|
|
|
1639
2454
|
targetDb: number,
|
|
1640
2455
|
mode: string,
|
|
1641
2456
|
) => Float32Array;
|
|
2457
|
+
normalizeStereo: (
|
|
2458
|
+
left: Float32Array,
|
|
2459
|
+
right: Float32Array,
|
|
2460
|
+
sampleRate: number,
|
|
2461
|
+
targetDb: number,
|
|
2462
|
+
mode: string,
|
|
2463
|
+
) => { left: Float32Array; right: Float32Array; appliedGainDb: number };
|
|
1642
2464
|
mastering: (
|
|
1643
2465
|
samples: Float32Array,
|
|
1644
2466
|
sampleRate: number,
|
|
@@ -1652,6 +2474,17 @@ export interface SonareModule {
|
|
|
1652
2474
|
masteringPairProcessorNames: () => string[];
|
|
1653
2475
|
masteringPairAnalysisNames: () => string[];
|
|
1654
2476
|
masteringStereoAnalysisNames: () => string[];
|
|
2477
|
+
masteringInsertNames: () => string[];
|
|
2478
|
+
masteringInsertParamNames: (name: string) => string[];
|
|
2479
|
+
// These return JSON the facade parses; the raw module has no object shape here.
|
|
2480
|
+
masteringInsertParamInfo: (name: string) => string;
|
|
2481
|
+
masteringProcessorCatalog: () => string;
|
|
2482
|
+
masteringAmpPresetCatalog: () => string;
|
|
2483
|
+
masteringInsertTiming: (
|
|
2484
|
+
name: string,
|
|
2485
|
+
paramsJson: string,
|
|
2486
|
+
sampleRate: number,
|
|
2487
|
+
) => { latencySamples: number; tailSamples: number };
|
|
1655
2488
|
masteringProcess: (
|
|
1656
2489
|
processorName: string,
|
|
1657
2490
|
samples: Float32Array,
|
|
@@ -1679,6 +2512,27 @@ export interface SonareModule {
|
|
|
1679
2512
|
sampleRate: number,
|
|
1680
2513
|
params: Record<string, number | boolean>,
|
|
1681
2514
|
) => string;
|
|
2515
|
+
masteringPairProcessStereo: (
|
|
2516
|
+
processorName: string,
|
|
2517
|
+
sourceLeft: Float32Array,
|
|
2518
|
+
sourceRight: Float32Array,
|
|
2519
|
+
referenceLeft: Float32Array,
|
|
2520
|
+
referenceRight: Float32Array,
|
|
2521
|
+
sampleRate: number,
|
|
2522
|
+
params: Record<string, number | boolean>,
|
|
2523
|
+
) => WasmMasteringStereoResult;
|
|
2524
|
+
masteringAbMatchLoudness: (
|
|
2525
|
+
source: Float32Array,
|
|
2526
|
+
reference: Float32Array,
|
|
2527
|
+
sampleRate: number,
|
|
2528
|
+
) => WasmLoudnessMatchResult;
|
|
2529
|
+
masteringAbMatchLoudnessStereo: (
|
|
2530
|
+
sourceLeft: Float32Array,
|
|
2531
|
+
sourceRight: Float32Array,
|
|
2532
|
+
referenceLeft: Float32Array,
|
|
2533
|
+
referenceRight: Float32Array,
|
|
2534
|
+
sampleRate: number,
|
|
2535
|
+
) => WasmLoudnessMatchStereoResult;
|
|
1682
2536
|
masteringStereoAnalyze: (
|
|
1683
2537
|
analysisName: string,
|
|
1684
2538
|
left: Float32Array,
|
|
@@ -1689,8 +2543,13 @@ export interface SonareModule {
|
|
|
1689
2543
|
masteringAssistantSuggest: (
|
|
1690
2544
|
samples: Float32Array,
|
|
1691
2545
|
sampleRate: number,
|
|
1692
|
-
params: Record<string, number | boolean>,
|
|
2546
|
+
params: Record<string, number | boolean | string>,
|
|
1693
2547
|
) => string;
|
|
2548
|
+
masteringAssistantSuggestChain: (
|
|
2549
|
+
samples: Float32Array,
|
|
2550
|
+
sampleRate: number,
|
|
2551
|
+
params: Record<string, number | boolean | string>,
|
|
2552
|
+
) => Record<string, number | boolean>;
|
|
1694
2553
|
masteringAudioProfile: (
|
|
1695
2554
|
samples: Float32Array,
|
|
1696
2555
|
sampleRate: number,
|
|
@@ -1705,8 +2564,14 @@ export interface SonareModule {
|
|
|
1705
2564
|
left: Float32Array,
|
|
1706
2565
|
right: Float32Array,
|
|
1707
2566
|
sampleRate: number,
|
|
1708
|
-
params: Record<string, number | boolean>,
|
|
2567
|
+
params: Record<string, number | boolean | string>,
|
|
1709
2568
|
) => string;
|
|
2569
|
+
masteringAssistantSuggestChainStereo: (
|
|
2570
|
+
left: Float32Array,
|
|
2571
|
+
right: Float32Array,
|
|
2572
|
+
sampleRate: number,
|
|
2573
|
+
params: Record<string, number | boolean | string>,
|
|
2574
|
+
) => Record<string, number | boolean>;
|
|
1710
2575
|
masteringAudioProfileStereo: (
|
|
1711
2576
|
left: Float32Array,
|
|
1712
2577
|
right: Float32Array,
|
|
@@ -1724,36 +2589,134 @@ export interface SonareModule {
|
|
|
1724
2589
|
sampleRate: number,
|
|
1725
2590
|
options: object,
|
|
1726
2591
|
) => Float32Array;
|
|
2592
|
+
masteringRepairDeclickStereo: (
|
|
2593
|
+
left: Float32Array,
|
|
2594
|
+
right: Float32Array,
|
|
2595
|
+
sampleRate: number,
|
|
2596
|
+
options: object,
|
|
2597
|
+
) => WasmDeclickStereoResult;
|
|
1727
2598
|
masteringRepairDenoiseClassical: (
|
|
1728
2599
|
samples: Float32Array,
|
|
1729
2600
|
sampleRate: number,
|
|
1730
2601
|
options: object,
|
|
1731
2602
|
) => Float32Array;
|
|
2603
|
+
masteringRepairDenoiseClassicalStereo: (
|
|
2604
|
+
left: Float32Array,
|
|
2605
|
+
right: Float32Array,
|
|
2606
|
+
sampleRate: number,
|
|
2607
|
+
options: object,
|
|
2608
|
+
) => WasmDenoiseStereoResult;
|
|
2609
|
+
masteringRepairDenoiseClassicalLinked: (
|
|
2610
|
+
channels: Float32Array[],
|
|
2611
|
+
sampleRate: number,
|
|
2612
|
+
options: object,
|
|
2613
|
+
) => WasmDenoiseLinkedResult;
|
|
1732
2614
|
masteringRepairDeclip: (
|
|
1733
2615
|
samples: Float32Array,
|
|
1734
2616
|
sampleRate: number,
|
|
1735
2617
|
options: object,
|
|
1736
2618
|
) => Float32Array;
|
|
2619
|
+
masteringRepairDeclipStereo: (
|
|
2620
|
+
left: Float32Array,
|
|
2621
|
+
right: Float32Array,
|
|
2622
|
+
sampleRate: number,
|
|
2623
|
+
options: object,
|
|
2624
|
+
) => WasmDeclipStereoResult;
|
|
1737
2625
|
masteringRepairDecrackle: (
|
|
1738
2626
|
samples: Float32Array,
|
|
1739
2627
|
sampleRate: number,
|
|
1740
2628
|
options: object,
|
|
1741
2629
|
) => Float32Array;
|
|
2630
|
+
masteringRepairDecrackleStereo: (
|
|
2631
|
+
left: Float32Array,
|
|
2632
|
+
right: Float32Array,
|
|
2633
|
+
sampleRate: number,
|
|
2634
|
+
options: object,
|
|
2635
|
+
) => WasmDecrackleStereoResult;
|
|
1742
2636
|
masteringRepairDehum: (
|
|
1743
2637
|
samples: Float32Array,
|
|
1744
2638
|
sampleRate: number,
|
|
1745
2639
|
options: object,
|
|
1746
2640
|
) => Float32Array;
|
|
2641
|
+
masteringRepairDehumStereo: (
|
|
2642
|
+
left: Float32Array,
|
|
2643
|
+
right: Float32Array,
|
|
2644
|
+
sampleRate: number,
|
|
2645
|
+
options: object,
|
|
2646
|
+
) => WasmDehumStereoResult;
|
|
1747
2647
|
masteringRepairDereverbClassical: (
|
|
1748
2648
|
samples: Float32Array,
|
|
1749
2649
|
sampleRate: number,
|
|
1750
2650
|
options: object,
|
|
1751
2651
|
) => Float32Array;
|
|
2652
|
+
masteringRepairDereverbClassicalStereo: (
|
|
2653
|
+
left: Float32Array,
|
|
2654
|
+
right: Float32Array,
|
|
2655
|
+
sampleRate: number,
|
|
2656
|
+
options: object,
|
|
2657
|
+
) => WasmDereverbStereoResult;
|
|
2658
|
+
masteringRepairDereverbClassicalLinked: (
|
|
2659
|
+
channels: Float32Array[],
|
|
2660
|
+
sampleRate: number,
|
|
2661
|
+
options: object,
|
|
2662
|
+
) => WasmDereverbLinkedResult;
|
|
2663
|
+
masteringRepairDereverbConfigForRoom: (
|
|
2664
|
+
estimate: WasmRoomEstimateResult,
|
|
2665
|
+
options: object,
|
|
2666
|
+
) => WasmDereverbClassicalConfig;
|
|
1752
2667
|
masteringRepairTrimSilence: (
|
|
1753
2668
|
samples: Float32Array,
|
|
1754
2669
|
sampleRate: number,
|
|
1755
2670
|
options: object,
|
|
1756
2671
|
) => Float32Array;
|
|
2672
|
+
masteringRepairTrimSilenceStereo: (
|
|
2673
|
+
left: Float32Array,
|
|
2674
|
+
right: Float32Array,
|
|
2675
|
+
sampleRate: number,
|
|
2676
|
+
options: object,
|
|
2677
|
+
) => WasmTrimSilenceStereoResult;
|
|
2678
|
+
masteringRepairDetectClicks: (
|
|
2679
|
+
samples: Float32Array,
|
|
2680
|
+
sampleRate: number,
|
|
2681
|
+
options: object,
|
|
2682
|
+
) => WasmClickDetection;
|
|
2683
|
+
masteringRepairDetectNoiseFloor: (
|
|
2684
|
+
samples: Float32Array,
|
|
2685
|
+
sampleRate: number,
|
|
2686
|
+
options: object,
|
|
2687
|
+
) => WasmNoiseDetection;
|
|
2688
|
+
masteringRepairNoiseBandBins: (nFft: number, sampleRate: number) => Int32Array;
|
|
2689
|
+
masteringRepairDetectClipping: (
|
|
2690
|
+
samples: Float32Array,
|
|
2691
|
+
sampleRate: number,
|
|
2692
|
+
options: object,
|
|
2693
|
+
) => WasmClipDetection;
|
|
2694
|
+
masteringRepairDetectCrackle: (
|
|
2695
|
+
samples: Float32Array,
|
|
2696
|
+
sampleRate: number,
|
|
2697
|
+
options: object,
|
|
2698
|
+
) => WasmCrackleDetection;
|
|
2699
|
+
masteringRepairDetectHum: (
|
|
2700
|
+
samples: Float32Array,
|
|
2701
|
+
sampleRate: number,
|
|
2702
|
+
options: object,
|
|
2703
|
+
) => WasmHumDetection;
|
|
2704
|
+
masteringRepairDetectReverb: (
|
|
2705
|
+
samples: Float32Array,
|
|
2706
|
+
sampleRate: number,
|
|
2707
|
+
options: object,
|
|
2708
|
+
) => WasmReverbDetection;
|
|
2709
|
+
masteringRepairDetectTrimRange: (
|
|
2710
|
+
samples: Float32Array,
|
|
2711
|
+
sampleRate: number,
|
|
2712
|
+
options: object,
|
|
2713
|
+
) => WasmTrimRange;
|
|
2714
|
+
masteringRepairDetectTrimRangeStereo: (
|
|
2715
|
+
left: Float32Array,
|
|
2716
|
+
right: Float32Array,
|
|
2717
|
+
sampleRate: number,
|
|
2718
|
+
options: object,
|
|
2719
|
+
) => WasmTrimRange;
|
|
1757
2720
|
masteringDynamicsCompressor: (
|
|
1758
2721
|
samples: Float32Array,
|
|
1759
2722
|
sampleRate: number,
|
|
@@ -1796,6 +2759,8 @@ export interface SonareModule {
|
|
|
1796
2759
|
cancelCallback: (() => boolean) | null,
|
|
1797
2760
|
) => WasmMasteringStereoChainResult;
|
|
1798
2761
|
masteringPresetNames: () => string[];
|
|
2762
|
+
masteringPresetParams: (preset: string) => Record<string, number | boolean>;
|
|
2763
|
+
masteringPlatformNames: () => string[];
|
|
1799
2764
|
masterAudio: (
|
|
1800
2765
|
presetName: string,
|
|
1801
2766
|
samples: Float32Array,
|
|
@@ -1834,6 +2799,24 @@ export interface SonareModule {
|
|
|
1834
2799
|
sampleRate: number,
|
|
1835
2800
|
options: Record<string, unknown>,
|
|
1836
2801
|
) => WasmMixResult;
|
|
2802
|
+
mixingAssistantSuggest: (
|
|
2803
|
+
leftChannels: Float32Array[],
|
|
2804
|
+
rightChannels: (Float32Array | null)[] | null,
|
|
2805
|
+
trackIds: string[],
|
|
2806
|
+
trackNames: (string | null)[] | null,
|
|
2807
|
+
sampleRate: number,
|
|
2808
|
+
params: Record<string, number | boolean>,
|
|
2809
|
+
) => string;
|
|
2810
|
+
mixingAssistantSuggestSceneJson: (
|
|
2811
|
+
leftChannels: Float32Array[],
|
|
2812
|
+
rightChannels: (Float32Array | null)[] | null,
|
|
2813
|
+
trackIds: string[],
|
|
2814
|
+
trackNames: (string | null)[] | null,
|
|
2815
|
+
sampleRate: number,
|
|
2816
|
+
params: Record<string, number | boolean>,
|
|
2817
|
+
) => string;
|
|
2818
|
+
mixingAssistantSourceClassNames: () => string[];
|
|
2819
|
+
mixingAssistantSourceClassFromName: (name: string) => number;
|
|
1837
2820
|
trim: (samples: Float32Array, sampleRate: number, thresholdDb: number) => Float32Array;
|
|
1838
2821
|
trimEx: (
|
|
1839
2822
|
samples: Float32Array,
|
|
@@ -2145,6 +3128,7 @@ export interface SonareModule {
|
|
|
2145
3128
|
segmentationThresholdCents?: number;
|
|
2146
3129
|
minNoteMs?: number;
|
|
2147
3130
|
referenceHz?: number;
|
|
3131
|
+
voicedThreshold?: number;
|
|
2148
3132
|
},
|
|
2149
3133
|
) => WasmNoteSegment[];
|
|
2150
3134
|
|
|
@@ -2177,6 +3161,18 @@ export interface SonareModule {
|
|
|
2177
3161
|
frameLength: number,
|
|
2178
3162
|
hopLength: number,
|
|
2179
3163
|
) => Int32Array;
|
|
3164
|
+
splitSilenceCommon: (
|
|
3165
|
+
signals: Float32Array[],
|
|
3166
|
+
topDb: number,
|
|
3167
|
+
frameLength: number,
|
|
3168
|
+
hopLength: number,
|
|
3169
|
+
) => Int32Array;
|
|
3170
|
+
splitSilenceCommonWithReport: (
|
|
3171
|
+
signals: Float32Array[],
|
|
3172
|
+
topDb: number,
|
|
3173
|
+
frameLength: number,
|
|
3174
|
+
hopLength: number,
|
|
3175
|
+
) => SplitSilenceCommonWithReportResult;
|
|
2180
3176
|
frameSignal: (samples: Float32Array, frameLength: number, hopLength: number) => WasmFrameResult;
|
|
2181
3177
|
tone: (
|
|
2182
3178
|
frequency: number,
|
|
@@ -2341,6 +3337,11 @@ export interface SonareModule {
|
|
|
2341
3337
|
hopLength: number,
|
|
2342
3338
|
minSectionSec: number,
|
|
2343
3339
|
) => WasmSectionResult[];
|
|
3340
|
+
detectBoundaries: (
|
|
3341
|
+
samples: Float32Array,
|
|
3342
|
+
sampleRate: number,
|
|
3343
|
+
options: WasmBoundaryOptions,
|
|
3344
|
+
) => WasmBoundaryResult;
|
|
2344
3345
|
analyzeMelody: (
|
|
2345
3346
|
samples: Float32Array,
|
|
2346
3347
|
sampleRate: number,
|
|
@@ -2386,6 +3387,11 @@ export interface SonareModule {
|
|
|
2386
3387
|
momentaryLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
2387
3388
|
shortTermLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
2388
3389
|
lufsInterleaved: (samples: Float32Array, channels: number, sampleRate: number) => WasmLufsResult;
|
|
3390
|
+
lufsSeriesInterleaved: (
|
|
3391
|
+
samples: Float32Array,
|
|
3392
|
+
channels: number,
|
|
3393
|
+
sampleRate: number,
|
|
3394
|
+
) => WasmLufsSeriesResult;
|
|
2389
3395
|
ebur128LoudnessRange: (samples: Float32Array, sampleRate: number) => number;
|
|
2390
3396
|
|
|
2391
3397
|
// Core - Resample
|
|
@@ -2428,6 +3434,14 @@ export interface SonareModule {
|
|
|
2428
3434
|
Major9: { value: 14 };
|
|
2429
3435
|
Dominant9: { value: 15 };
|
|
2430
3436
|
Sus2Add4: { value: 16 };
|
|
3437
|
+
Major6: { value: 17 };
|
|
3438
|
+
Minor6: { value: 18 };
|
|
3439
|
+
MinorMajor7: { value: 19 };
|
|
3440
|
+
Dominant7Sus4: { value: 20 };
|
|
3441
|
+
Dominant11: { value: 21 };
|
|
3442
|
+
Dominant13: { value: 22 };
|
|
3443
|
+
Dominant7Flat9: { value: 23 };
|
|
3444
|
+
Dominant7Sharp9: { value: 24 };
|
|
2431
3445
|
};
|
|
2432
3446
|
SectionType: {
|
|
2433
3447
|
Intro: { value: 0 };
|
|
@@ -2492,6 +3506,23 @@ export interface SonareModule {
|
|
|
2492
3506
|
error?: string;
|
|
2493
3507
|
};
|
|
2494
3508
|
|
|
3509
|
+
// Playback - renderer, HRTF set and program loudness meter
|
|
3510
|
+
createHrtfSet: (bytes: Uint8Array) => WasmHrtfSet;
|
|
3511
|
+
createPlaybackRenderer: (
|
|
3512
|
+
configJson: string,
|
|
3513
|
+
hrtf: WasmHrtfSet | null,
|
|
3514
|
+
sampleRate: number,
|
|
3515
|
+
maxBlockSize: number,
|
|
3516
|
+
) => WasmPlaybackRenderer;
|
|
3517
|
+
createPlaybackLoudnessMeter: (channels: number, sampleRate: number) => WasmPlaybackLoudnessMeter;
|
|
3518
|
+
renderPlayback: (
|
|
3519
|
+
samples: Float32Array,
|
|
3520
|
+
channels: number,
|
|
3521
|
+
sampleRate: number,
|
|
3522
|
+
configJson: string,
|
|
3523
|
+
hrtf: WasmHrtfSet | null,
|
|
3524
|
+
) => { samples: Float32Array; channels: number };
|
|
3525
|
+
|
|
2495
3526
|
// Mixing - scene-based Mixer
|
|
2496
3527
|
createMixerFromSceneJson: (json: string, sampleRate: number, blockSize: number) => WasmMixer;
|
|
2497
3528
|
|
|
@@ -2499,10 +3530,33 @@ export interface SonareModule {
|
|
|
2499
3530
|
// surfaces a C++ throw as the raw pointer number) into a structured error.
|
|
2500
3531
|
// Consumed by the module-error wrapper in module_state.ts.
|
|
2501
3532
|
sonareExceptionInfo: (ptr: number) => { code: number; codeName: string; message: string };
|
|
3533
|
+
|
|
3534
|
+
// Drops the reference emscripten's __cxa_throw took on the exception object
|
|
3535
|
+
// before rethrowing its pointer into JS. Nothing else ever drops it, so the
|
|
3536
|
+
// module-error wrapper releases every pointer it surfaces.
|
|
3537
|
+
sonareReleaseException: (ptr: number) => void;
|
|
3538
|
+
}
|
|
3539
|
+
|
|
3540
|
+
// The polyphonic editing analysis. `noteCount` and `frameCount` are embind
|
|
3541
|
+
// properties rather than methods; everything else is a call.
|
|
3542
|
+
export interface WasmPolyphonicAnalysis {
|
|
3543
|
+
readonly noteCount: number;
|
|
3544
|
+
readonly frameCount: number;
|
|
3545
|
+
notes: () => NoteObject[];
|
|
3546
|
+
setNoteEdit: (note: number, edit: NoteEditInput) => void;
|
|
3547
|
+
polyphony: () => Int32Array;
|
|
3548
|
+
noteF0: (note: number) => Float32Array;
|
|
3549
|
+
noteAmplitude: (note: number) => Float32Array;
|
|
3550
|
+
noteSalience: (note: number) => Float32Array;
|
|
3551
|
+
noteInharmonicity: () => Float32Array;
|
|
3552
|
+
noteEnvelope: (note: number) => Float32Array;
|
|
3553
|
+
render: (options: Record<string, unknown>) => Float32Array;
|
|
3554
|
+
delete: () => void;
|
|
2502
3555
|
}
|
|
2503
3556
|
|
|
2504
3557
|
export interface WasmStreamingMasteringChain {
|
|
2505
3558
|
prepare: (sampleRate: number, maxBlockSize: number, numChannels: number) => void;
|
|
3559
|
+
setParameter: (key: string, value: number) => void;
|
|
2506
3560
|
processMono: (samples: Float32Array) => Float32Array;
|
|
2507
3561
|
processStereo: (
|
|
2508
3562
|
left: Float32Array,
|
|
@@ -2513,6 +3567,10 @@ export interface WasmStreamingMasteringChain {
|
|
|
2513
3567
|
reset: () => void;
|
|
2514
3568
|
latencySamples: () => number;
|
|
2515
3569
|
stageNames: () => string[];
|
|
3570
|
+
/** Cumulative since prepare(), which rebuilds the stages and so clears it. */
|
|
3571
|
+
nonFiniteSubstitutionCount: () => number;
|
|
3572
|
+
/** Not the same measurement as nonFiniteSubstitutionCount; see the facade. */
|
|
3573
|
+
nonFiniteDiscardCount: () => number;
|
|
2516
3574
|
delete: () => void;
|
|
2517
3575
|
}
|
|
2518
3576
|
|
|
@@ -2540,11 +3598,13 @@ export interface WasmStreamingEqualizer {
|
|
|
2540
3598
|
clearSidechain: () => void;
|
|
2541
3599
|
lastAutoGainDb: () => number;
|
|
2542
3600
|
latencySamples: () => number;
|
|
3601
|
+
nonFiniteDiscardCount: () => number;
|
|
2543
3602
|
processMono: (samples: Float32Array) => Float32Array;
|
|
2544
3603
|
processStereo: (
|
|
2545
3604
|
left: Float32Array,
|
|
2546
3605
|
right: Float32Array,
|
|
2547
3606
|
) => { left: Float32Array; right: Float32Array };
|
|
3607
|
+
magnitudeResponse: (placement: number, frequenciesHz: Float32Array) => Float32Array;
|
|
2548
3608
|
spectrum: () => WasmEqSpectrumSnapshot;
|
|
2549
3609
|
match: (source: Float32Array, reference: Float32Array, options: Record<string, unknown>) => void;
|
|
2550
3610
|
delete: () => void;
|
|
@@ -2556,6 +3616,7 @@ export interface WasmStreamingRetune {
|
|
|
2556
3616
|
setConfig: (config: Record<string, unknown>) => void;
|
|
2557
3617
|
config: () => { semitones: number; mix: number; grainSize: number };
|
|
2558
3618
|
grainSize: () => number;
|
|
3619
|
+
latencySamples: () => number;
|
|
2559
3620
|
processMono: (samples: Float32Array) => Float32Array;
|
|
2560
3621
|
delete: () => void;
|
|
2561
3622
|
}
|
|
@@ -2567,6 +3628,7 @@ export interface WasmRealtimeVoiceChanger {
|
|
|
2567
3628
|
setPodConfig: (config: WasmRealtimeVoiceChangerPodConfig) => void;
|
|
2568
3629
|
configJson: () => string;
|
|
2569
3630
|
latencySamples: () => number;
|
|
3631
|
+
nonFiniteDiscardCount: () => number;
|
|
2570
3632
|
bufferGeneration: () => number;
|
|
2571
3633
|
processMono: (samples: Float32Array) => Float32Array;
|
|
2572
3634
|
processMonoInto: (samples: Float32Array, output: Float32Array) => void;
|
|
@@ -2587,6 +3649,58 @@ export interface WasmRealtimeVoiceChanger {
|
|
|
2587
3649
|
delete: () => void;
|
|
2588
3650
|
}
|
|
2589
3651
|
|
|
3652
|
+
export interface WasmHrtfSet {
|
|
3653
|
+
delete: () => void;
|
|
3654
|
+
}
|
|
3655
|
+
|
|
3656
|
+
export interface WasmPlaybackRenderer {
|
|
3657
|
+
processPlanar: (planes: Float32Array[]) => Float32Array[];
|
|
3658
|
+
processInterleaved: (samples: Float32Array, inChannels: number) => Float32Array;
|
|
3659
|
+
setConfig: (configJson: string) => void;
|
|
3660
|
+
configJson: () => string;
|
|
3661
|
+
setHeadOrientation: (yawDeg: number, pitchDeg: number, rollDeg: number) => void;
|
|
3662
|
+
reset: () => void;
|
|
3663
|
+
latencySamples: () => number;
|
|
3664
|
+
inputChannels: () => number;
|
|
3665
|
+
outputChannels: () => number;
|
|
3666
|
+
diagnosticsJson: () => string;
|
|
3667
|
+
nonFiniteDiscardCount: () => number;
|
|
3668
|
+
// AudioWorklet path: heap views allocated once at construction (they detach
|
|
3669
|
+
// on memory growth and are then re-acquired), and a SonareError code instead
|
|
3670
|
+
// of a throw for a rejected block.
|
|
3671
|
+
inputPlane: (channel: number) => Float32Array;
|
|
3672
|
+
outputPlane: (channel: number) => Float32Array;
|
|
3673
|
+
processPrepared: (inChannels: number, frames: number) => number;
|
|
3674
|
+
processPreparedSilence: (frames: number) => number;
|
|
3675
|
+
delete: () => void;
|
|
3676
|
+
}
|
|
3677
|
+
|
|
3678
|
+
export interface WasmPlaybackLoudnessMeter {
|
|
3679
|
+
pushInterleaved: (samples: Float32Array) => void;
|
|
3680
|
+
integratedLufs: () => number;
|
|
3681
|
+
delete: () => void;
|
|
3682
|
+
}
|
|
3683
|
+
|
|
3684
|
+
/** One block's worth of meter readings, all dB fields floored at -120. */
|
|
3685
|
+
export interface WasmMixerMeterSnapshot {
|
|
3686
|
+
peakDbL: number;
|
|
3687
|
+
peakDbR: number;
|
|
3688
|
+
rmsDbL: number;
|
|
3689
|
+
rmsDbR: number;
|
|
3690
|
+
correlation: number;
|
|
3691
|
+
/**
|
|
3692
|
+
* Left-channel inter-sample (true) peak in dB, from the ITU-R BS.1770-4
|
|
3693
|
+
* polyphase reconstruction at 4x. A streaming measurement: the centered
|
|
3694
|
+
* reconstruction stencil needs a few future samples a realtime path does not
|
|
3695
|
+
* have, so each block's last samples read marginally low (about 0.1 dB across
|
|
3696
|
+
* 64..8192-sample blocks on a near-Nyquist tone, always under-reading). Use
|
|
3697
|
+
* `meteringTruePeakDb` over the whole signal for an exact dBTP number.
|
|
3698
|
+
*/
|
|
3699
|
+
truePeakDbL: number;
|
|
3700
|
+
/** Right-channel inter-sample (true) peak in dB. See {@link truePeakDbL}. */
|
|
3701
|
+
truePeakDbR: number;
|
|
3702
|
+
}
|
|
3703
|
+
|
|
2590
3704
|
export interface WasmMixer {
|
|
2591
3705
|
compile: () => void;
|
|
2592
3706
|
processStereo: (
|
|
@@ -2604,6 +3718,10 @@ export interface WasmMixer {
|
|
|
2604
3718
|
outputLeftView: () => Float32Array;
|
|
2605
3719
|
outputRightView: () => Float32Array;
|
|
2606
3720
|
processPreparedStereo: (numSamples: number) => void;
|
|
3721
|
+
configureMeter: (enabled: boolean, truePeakOversample: number) => void;
|
|
3722
|
+
meterSnapshot: () => WasmMixerMeterSnapshot;
|
|
3723
|
+
latchMeterSnapshot: () => boolean;
|
|
3724
|
+
meterScratchValue: (field: number) => number;
|
|
2607
3725
|
stripCount: () => number;
|
|
2608
3726
|
sceneWarnings: () => string[];
|
|
2609
3727
|
scheduleInsertAutomation: (
|
|
@@ -2619,6 +3737,7 @@ export interface WasmMixer {
|
|
|
2619
3737
|
setFaderDb: (stripIndex: number, db: number) => void;
|
|
2620
3738
|
setPan: (stripIndex: number, pan: number, panMode: number) => void;
|
|
2621
3739
|
setWidth: (stripIndex: number, width: number) => void;
|
|
3740
|
+
settle: (stripIndex: number) => void;
|
|
2622
3741
|
setMuted: (stripIndex: number, muted: boolean) => void;
|
|
2623
3742
|
setSoloed: (stripIndex: number, soloed: boolean) => void;
|
|
2624
3743
|
setSoloSafe: (stripIndex: number, soloSafe: boolean) => void;
|
|
@@ -2640,6 +3759,8 @@ export interface WasmMixer {
|
|
|
2640
3759
|
meterTap: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
|
|
2641
3760
|
stripMeter: (stripIndex: number) => WasmMixMeterSnapshot;
|
|
2642
3761
|
busMeter: (busId: string) => WasmMixMeterSnapshot;
|
|
3762
|
+
stripNonFiniteDiscardCount: (stripIndex: number) => number;
|
|
3763
|
+
busNonFiniteDiscardCount: (busId: string) => number;
|
|
2643
3764
|
scheduleFaderAutomation: (
|
|
2644
3765
|
stripIndex: number,
|
|
2645
3766
|
samplePos: number,
|
|
@@ -2666,6 +3787,7 @@ export interface WasmMixer {
|
|
|
2666
3787
|
curve: number,
|
|
2667
3788
|
) => void;
|
|
2668
3789
|
readGoniometerLatest: (stripIndex: number, maxPoints: number) => WasmGoniometerPoint[];
|
|
3790
|
+
addStrip: (id: string, metering: StripMeteringOptions) => void;
|
|
2669
3791
|
addBus: (id: string, role: string) => void;
|
|
2670
3792
|
removeBus: (id: string) => void;
|
|
2671
3793
|
busCount: () => number;
|
|
@@ -2744,6 +3866,7 @@ export interface WasmAnalyzerStats {
|
|
|
2744
3866
|
droppedOutputFrames: number;
|
|
2745
3867
|
droppedChordProgressionEntries: number;
|
|
2746
3868
|
droppedBarProgressionEntries: number;
|
|
3869
|
+
nonFiniteDiscardBlocks: number;
|
|
2747
3870
|
estimate: WasmProgressiveEstimate;
|
|
2748
3871
|
}
|
|
2749
3872
|
|
|
@@ -2794,8 +3917,11 @@ export interface WasmStreamFramesI16 {
|
|
|
2794
3917
|
}
|
|
2795
3918
|
|
|
2796
3919
|
export interface WasmStreamAnalyzer {
|
|
3920
|
+
/** Throws (invalid state) when the stream was already finalized; reset first. */
|
|
2797
3921
|
process: (samples: Float32Array) => void;
|
|
3922
|
+
/** Rejects a gap, a seek, a mode switch, and a chunk fed after finalize. */
|
|
2798
3923
|
processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
|
|
3924
|
+
/** Idempotent on success; a failed call leaves the stream un-finalized. */
|
|
2799
3925
|
finalize: () => void;
|
|
2800
3926
|
availableFrames: () => number;
|
|
2801
3927
|
readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
|
|
@@ -2807,7 +3933,9 @@ export interface WasmStreamAnalyzer {
|
|
|
2807
3933
|
currentTime: () => number;
|
|
2808
3934
|
sampleRate: () => number;
|
|
2809
3935
|
setExpectedDuration: (durationSeconds: number) => void;
|
|
3936
|
+
/** Throws outside 0.01..100; the request is refused, never clamped. */
|
|
2810
3937
|
setNormalizationGain: (gain: number) => void;
|
|
3938
|
+
/** Throws outside 220..880 Hz; the request is refused, never clamped. */
|
|
2811
3939
|
setTuningRefHz: (refHz: number) => void;
|
|
2812
3940
|
delete: () => void;
|
|
2813
3941
|
}
|