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