@libraz/libsonare 1.7.2 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +178 -0
- package/README.md +26 -203
- package/dist/_chain_config.d.ts +14 -0
- package/dist/_chain_config.d.ts.map +1 -0
- package/dist/_effects_common.d.ts +6 -0
- package/dist/_effects_common.d.ts.map +1 -0
- package/dist/_feature_validation.d.ts +8 -0
- package/dist/_feature_validation.d.ts.map +1 -0
- package/dist/_fft_options.d.ts +24 -0
- package/dist/_fft_options.d.ts.map +1 -0
- package/dist/align_take.d.ts +50 -0
- package/dist/align_take.d.ts.map +1 -0
- package/dist/analysis.d.ts +29 -5840
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +873 -722
- package/dist/analysis.js.map +1 -1
- package/dist/analysis_helpers.d.ts +9 -0
- package/dist/analysis_helpers.d.ts.map +1 -0
- package/dist/audio.d.ts +163 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/clip_page_streamer.d.ts +133 -0
- package/dist/clip_page_streamer.d.ts.map +1 -0
- package/dist/codes.d.ts +44 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/effects_mastering.d.ts +23 -0
- package/dist/effects_mastering.d.ts.map +1 -0
- package/dist/effects_note_ops.d.ts +477 -0
- package/dist/effects_note_ops.d.ts.map +1 -0
- package/dist/effects_percussive.d.ts +185 -0
- package/dist/effects_percussive.d.ts.map +1 -0
- package/dist/effects_separation.d.ts +65 -0
- package/dist/effects_separation.d.ts.map +1 -0
- package/dist/effects_spectral.d.ts +28 -0
- package/dist/effects_spectral.d.ts.map +1 -0
- package/dist/effects_timepitch.d.ts +129 -0
- package/dist/effects_timepitch.d.ts.map +1 -0
- package/dist/effects_voice_change.d.ts +53 -0
- package/dist/effects_voice_change.d.ts.map +1 -0
- package/dist/errors.d.ts +51 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/feature_core.d.ts +341 -0
- package/dist/feature_core.d.ts.map +1 -0
- package/dist/feature_decompose.d.ts +278 -0
- package/dist/feature_decompose.d.ts.map +1 -0
- package/dist/feature_inverse.d.ts +128 -0
- package/dist/feature_inverse.d.ts.map +1 -0
- package/dist/feature_loudness.d.ts +66 -0
- package/dist/feature_loudness.d.ts.map +1 -0
- package/dist/feature_music.d.ts +307 -0
- package/dist/feature_music.d.ts.map +1 -0
- package/dist/feature_pitch.d.ts +108 -0
- package/dist/feature_pitch.d.ts.map +1 -0
- package/dist/feature_resample.d.ts +16 -0
- package/dist/feature_resample.d.ts.map +1 -0
- package/dist/feature_spectral.d.ts +137 -0
- package/dist/feature_spectral.d.ts.map +1 -0
- package/dist/feature_spectrogram.d.ts +198 -0
- package/dist/feature_spectrogram.d.ts.map +1 -0
- package/dist/features.d.ts +10 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/hrtf/default.shrf +0 -0
- package/dist/index.d.ts +74 -7431
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3758 -1362
- package/dist/index.js.map +1 -1
- package/dist/instrument_types.d.ts +517 -0
- package/dist/instrument_types.d.ts.map +1 -0
- package/dist/live_audio.d.ts +35 -0
- package/dist/live_audio.d.ts.map +1 -0
- package/dist/mastering_chain.d.ts +213 -0
- package/dist/mastering_chain.d.ts.map +1 -0
- package/dist/mastering_core.d.ts +457 -0
- package/dist/mastering_core.d.ts.map +1 -0
- package/dist/mastering_dynamics.d.ts +80 -0
- package/dist/mastering_dynamics.d.ts.map +1 -0
- package/dist/metering.d.ts +287 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/mixer.d.ts +464 -0
- package/dist/mixer.d.ts.map +1 -0
- package/dist/mixing_assistant.d.ts +62 -0
- package/dist/mixing_assistant.d.ts.map +1 -0
- package/dist/mixing_oneshot.d.ts +40 -0
- package/dist/mixing_oneshot.d.ts.map +1 -0
- package/dist/module_state.d.ts +15 -0
- package/dist/module_state.d.ts.map +1 -0
- package/dist/opfs_clip_pages.d.ts +28 -0
- package/dist/opfs_clip_pages.d.ts.map +1 -0
- package/dist/playback_renderer.d.ts +128 -0
- package/dist/playback_renderer.d.ts.map +1 -0
- package/dist/polyphony.d.ts +202 -0
- package/dist/polyphony.d.ts.map +1 -0
- package/dist/project.d.ts +8 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project_class.d.ts +562 -0
- package/dist/project_class.d.ts.map +1 -0
- package/dist/project_internal.d.ts +194 -0
- package/dist/project_internal.d.ts.map +1 -0
- package/dist/project_synth.d.ts +74 -0
- package/dist/project_synth.d.ts.map +1 -0
- package/dist/project_types.d.ts +652 -0
- package/dist/project_types.d.ts.map +1 -0
- package/dist/public_types.d.ts +185 -0
- package/dist/public_types.d.ts.map +1 -0
- package/dist/public_types_acoustic.d.ts +215 -0
- package/dist/public_types_acoustic.d.ts.map +1 -0
- package/dist/public_types_mastering.d.ts +510 -0
- package/dist/public_types_mastering.d.ts.map +1 -0
- package/dist/public_types_mixing.d.ts +436 -0
- package/dist/public_types_mixing.d.ts.map +1 -0
- package/dist/public_types_music.d.ts +619 -0
- package/dist/public_types_music.d.ts.map +1 -0
- package/dist/public_types_playback.d.ts +164 -0
- package/dist/public_types_playback.d.ts.map +1 -0
- package/dist/public_types_realtime.d.ts +174 -0
- package/dist/public_types_realtime.d.ts.map +1 -0
- package/dist/public_types_repair.d.ts +424 -0
- package/dist/public_types_repair.d.ts.map +1 -0
- package/dist/public_types_spectral.d.ts +697 -0
- package/dist/public_types_spectral.d.ts.map +1 -0
- package/dist/quick_analysis.d.ts +445 -0
- package/dist/quick_analysis.d.ts.map +1 -0
- package/dist/realtime_engine.d.ts +850 -0
- package/dist/realtime_engine.d.ts.map +1 -0
- package/dist/realtime_voice_changer.d.ts +158 -0
- package/dist/realtime_voice_changer.d.ts.map +1 -0
- package/dist/repair_dereverb.d.ts +187 -0
- package/dist/repair_dereverb.d.ts.map +1 -0
- package/dist/repair_impulsive.d.ts +186 -0
- package/dist/repair_impulsive.d.ts.map +1 -0
- package/dist/repair_noise.d.ts +239 -0
- package/dist/repair_noise.d.ts.map +1 -0
- package/dist/repair_trim.d.ts +123 -0
- package/dist/repair_trim.d.ts.map +1 -0
- package/dist/sample_bank.d.ts +84 -0
- package/dist/sample_bank.d.ts.map +1 -0
- package/dist/scale.d.ts +10 -0
- package/dist/scale.d.ts.map +1 -0
- package/dist/schemas/mixer-scene.schema.json +393 -0
- package/dist/schemas/playback-renderer-config.schema.json +392 -0
- package/dist/sonare-analysis.d.ts +8 -0
- package/dist/sonare-analysis.js +2 -2
- package/dist/sonare-analysis.wasm +0 -0
- package/dist/sonare.d.ts +3909 -0
- package/dist/sonare.js +2 -2
- package/dist/sonare.wasm +0 -0
- package/dist/stream_analyzer.d.ts +163 -0
- package/dist/stream_analyzer.d.ts.map +1 -0
- package/dist/stream_types.d.ts +214 -0
- package/dist/stream_types.d.ts.map +1 -0
- package/dist/streaming_mixing.d.ts +6 -0
- package/dist/streaming_mixing.d.ts.map +1 -0
- package/dist/streaming_processors.d.ts +335 -0
- package/dist/streaming_processors.d.ts.map +1 -0
- package/dist/transcribe.d.ts +77 -0
- package/dist/transcribe.d.ts.map +1 -0
- package/dist/validation.d.ts +140 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/web_midi.d.ts +77 -0
- package/dist/web_midi.d.ts.map +1 -0
- package/dist/worker.d.ts +5 -48
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +94 -41
- package/dist/worker.js.map +1 -1
- package/dist/worker_client.d.ts +96 -0
- package/dist/worker_client.d.ts.map +1 -0
- package/dist/worker_protocol.d.ts +43 -0
- package/dist/worker_protocol.d.ts.map +1 -0
- package/dist/worklet/audio_types.d.ts +21 -0
- package/dist/worklet/audio_types.d.ts.map +1 -0
- package/dist/worklet/engine-automation.d.ts +29 -0
- package/dist/worklet/engine-automation.d.ts.map +1 -0
- package/dist/worklet/engine-capture-facade.d.ts +35 -0
- package/dist/worklet/engine-capture-facade.d.ts.map +1 -0
- package/dist/worklet/engine-clips.d.ts +23 -0
- package/dist/worklet/engine-clips.d.ts.map +1 -0
- package/dist/worklet/engine-markers.d.ts +40 -0
- package/dist/worklet/engine-markers.d.ts.map +1 -0
- package/dist/worklet/engine-mixer-facade.d.ts +128 -0
- package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
- package/dist/worklet/engine-node.d.ts +81 -0
- package/dist/worklet/engine-node.d.ts.map +1 -0
- package/dist/worklet/engine-offline.d.ts +81 -0
- package/dist/worklet/engine-offline.d.ts.map +1 -0
- package/dist/worklet/engine-options.d.ts +12 -0
- package/dist/worklet/engine-options.d.ts.map +1 -0
- package/dist/worklet/engine-parameter-facade.d.ts +106 -0
- package/dist/worklet/engine-parameter-facade.d.ts.map +1 -0
- package/dist/worklet/engine-processor.d.ts +68 -0
- package/dist/worklet/engine-processor.d.ts.map +1 -0
- package/dist/worklet/engine-register.d.ts +2 -0
- package/dist/worklet/engine-register.d.ts.map +1 -0
- package/dist/worklet/engine-strips.d.ts +73 -0
- package/dist/worklet/engine-strips.d.ts.map +1 -0
- package/dist/worklet/engine-sync.d.ts +37 -0
- package/dist/worklet/engine-sync.d.ts.map +1 -0
- package/dist/worklet/engine-tempo-facade.d.ts +48 -0
- package/dist/worklet/engine-tempo-facade.d.ts.map +1 -0
- package/dist/worklet/engine.d.ts +397 -0
- package/dist/worklet/engine.d.ts.map +1 -0
- package/dist/worklet/guards.d.ts +47 -0
- package/dist/worklet/guards.d.ts.map +1 -0
- package/dist/worklet/messages.d.ts +710 -0
- package/dist/worklet/messages.d.ts.map +1 -0
- package/dist/worklet/mixer-processor.d.ts +46 -0
- package/dist/worklet/mixer-processor.d.ts.map +1 -0
- package/dist/worklet/playback-processor.d.ts +62 -0
- package/dist/worklet/playback-processor.d.ts.map +1 -0
- package/dist/worklet/protocol.d.ts +323 -0
- package/dist/worklet/protocol.d.ts.map +1 -0
- package/dist/worklet/voice-changer-processor.d.ts +41 -0
- package/dist/worklet/voice-changer-processor.d.ts.map +1 -0
- package/dist/worklet.d.ts +16 -2515
- package/dist/worklet.d.ts.map +1 -0
- package/dist/worklet.js +2763 -501
- package/dist/worklet.js.map +1 -1
- package/package.json +23 -12
- package/src/_effects_common.ts +17 -0
- package/src/_feature_validation.ts +34 -0
- package/src/_fft_options.ts +39 -0
- package/src/align_take.ts +64 -0
- package/src/analysis.ts +56 -3
- package/src/analysis_helpers.ts +7 -0
- package/src/audio.ts +106 -3
- package/src/codes.ts +39 -2
- package/src/effects_mastering.ts +97 -22
- package/src/effects_note_ops.ts +635 -0
- package/src/effects_percussive.ts +217 -0
- package/src/effects_separation.ts +150 -0
- package/src/effects_spectral.ts +60 -0
- package/src/effects_timepitch.ts +377 -0
- package/src/errors.ts +23 -1
- package/src/feature_core.ts +127 -2
- package/src/feature_decompose.ts +633 -0
- package/src/feature_inverse.ts +454 -0
- package/src/feature_loudness.ts +125 -0
- package/src/feature_music.ts +107 -14
- package/src/feature_pitch.ts +96 -1
- package/src/feature_spectral.ts +16 -611
- package/src/feature_spectrogram.ts +63 -450
- package/src/features.ts +36 -22
- package/src/index.ts +282 -30
- package/src/instrument_types.ts +645 -0
- package/src/live_audio.ts +27 -1
- package/src/mastering_chain.ts +184 -0
- package/src/mastering_core.ts +346 -32
- package/src/mastering_dynamics.ts +22 -11
- package/src/metering.ts +67 -24
- package/src/mixer.ts +212 -3
- package/src/mixing_assistant.ts +138 -0
- package/src/mixing_oneshot.ts +10 -5
- package/src/module_state.ts +24 -2
- package/src/playback_renderer.ts +252 -0
- package/src/polyphony.ts +279 -0
- package/src/project.ts +61 -24
- package/src/project_class.ts +450 -27
- package/src/project_internal.ts +149 -42
- package/src/project_synth.ts +67 -1
- package/src/project_types.ts +268 -270
- package/src/public_types.ts +122 -3
- package/src/public_types_acoustic.ts +112 -3
- package/src/public_types_mastering.ts +254 -73
- package/src/public_types_mixing.ts +363 -1
- package/src/public_types_music.ts +312 -2
- package/src/public_types_playback.ts +195 -0
- package/src/public_types_realtime.ts +39 -7
- package/src/public_types_repair.ts +446 -0
- package/src/public_types_spectral.ts +487 -1
- package/src/quick_analysis.ts +203 -26
- package/src/realtime_engine.ts +711 -28
- package/src/realtime_voice_changer.ts +55 -1
- package/src/repair_dereverb.ts +299 -0
- package/src/repair_impulsive.ts +395 -0
- package/src/repair_noise.ts +425 -0
- package/src/repair_trim.ts +226 -0
- package/src/sample_bank.ts +113 -0
- package/src/sonare.js.d.ts +1122 -30
- package/src/stream_analyzer.ts +36 -4
- package/src/stream_types.ts +37 -0
- package/src/streaming_mixing.ts +1 -1
- package/src/streaming_processors.ts +194 -10
- package/src/transcribe.ts +89 -0
- package/src/validation.ts +285 -11
- package/src/web_midi.ts +1 -6
- package/src/worker.ts +18 -2
- package/src/worklet/audio_types.ts +37 -0
- package/src/worklet/engine-mixer-facade.ts +444 -10
- package/src/worklet/engine-node.ts +78 -26
- package/src/worklet/engine-offline.ts +14 -8
- package/src/worklet/engine-parameter-facade.ts +21 -0
- package/src/worklet/engine-processor.ts +272 -83
- package/src/worklet/engine-register.ts +32 -18
- package/src/worklet/engine-strips.ts +280 -9
- package/src/worklet/engine-sync.ts +14 -6
- package/src/worklet/engine.ts +365 -31
- package/src/worklet/guards.ts +140 -44
- package/src/worklet/messages.ts +227 -2
- package/src/worklet/mixer-processor.ts +109 -47
- package/src/worklet/playback-processor.ts +300 -0
- package/src/worklet/protocol.ts +53 -3
- package/src/worklet/voice-changer-processor.ts +17 -11
- package/src/worklet.ts +17 -0
- package/src/effects_transform.ts +0 -718
- package/src/mastering_repair.ts +0 -273
package/dist/sonare.d.ts
ADDED
|
@@ -0,0 +1,3909 @@
|
|
|
1
|
+
/**
|
|
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.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { SplitSilenceCommonWithReportResult } from './feature_core';
|
|
11
|
+
import type { StripMeteringOptions } from './mixer';
|
|
12
|
+
import type {
|
|
13
|
+
NoteEditInput,
|
|
14
|
+
NoteObject,
|
|
15
|
+
NoteObjectInput,
|
|
16
|
+
NoteSetEntry,
|
|
17
|
+
NoteTarget,
|
|
18
|
+
NoteTargetAssignResult,
|
|
19
|
+
NoteTargetUnmatchedPolicy,
|
|
20
|
+
PercussiveEvent,
|
|
21
|
+
PercussiveEventInput,
|
|
22
|
+
PitchDecompositionResult,
|
|
23
|
+
ProgressCallback,
|
|
24
|
+
SonareCapabilities,
|
|
25
|
+
SpectralRegionOp,
|
|
26
|
+
SurroundPan,
|
|
27
|
+
} from './public_types';
|
|
28
|
+
|
|
29
|
+
export interface SonareModuleOptions {
|
|
30
|
+
locateFile?: (path: string, prefix: string) => string;
|
|
31
|
+
wasmBinary?: ArrayBuffer | Uint8Array;
|
|
32
|
+
onRuntimeInitialized?: () => void;
|
|
33
|
+
print?: (text: string) => void;
|
|
34
|
+
printErr?: (text: string) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Result types
|
|
38
|
+
export interface WasmKeyResult {
|
|
39
|
+
root: number;
|
|
40
|
+
mode: number;
|
|
41
|
+
confidence: number;
|
|
42
|
+
name: string;
|
|
43
|
+
shortName: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface WasmKeyCandidateResult {
|
|
47
|
+
key: WasmKeyResult;
|
|
48
|
+
correlation: number;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Flat POD mirror of SonareRealtimeVoiceChangerConfig. Keys are camelCase to
|
|
52
|
+
// match the Node addon getter (the underlying C ABI / Python POD is snake_case).
|
|
53
|
+
export interface WasmRealtimeVoiceChangerPodConfig {
|
|
54
|
+
inputGainDb: number;
|
|
55
|
+
outputGainDb: number;
|
|
56
|
+
wetMix: number;
|
|
57
|
+
retuneSemitones: number;
|
|
58
|
+
retuneMix: number;
|
|
59
|
+
retuneGrainSize: number;
|
|
60
|
+
formantFactor: number;
|
|
61
|
+
formantAmount: number;
|
|
62
|
+
formantBody: number;
|
|
63
|
+
formantBrightness: number;
|
|
64
|
+
formantNasal: number;
|
|
65
|
+
eqHighpassHz: number;
|
|
66
|
+
eqBodyDb: number;
|
|
67
|
+
eqPresenceDb: number;
|
|
68
|
+
eqAirDb: number;
|
|
69
|
+
gateThresholdDb: number;
|
|
70
|
+
gateAttackMs: number;
|
|
71
|
+
gateReleaseMs: number;
|
|
72
|
+
gateRangeDb: number;
|
|
73
|
+
compressorThresholdDb: number;
|
|
74
|
+
compressorRatio: number;
|
|
75
|
+
compressorAttackMs: number;
|
|
76
|
+
compressorReleaseMs: number;
|
|
77
|
+
compressorMakeupGainDb: number;
|
|
78
|
+
deesserFrequencyHz: number;
|
|
79
|
+
deesserThresholdDb: number;
|
|
80
|
+
deesserRatio: number;
|
|
81
|
+
deesserRangeDb: number;
|
|
82
|
+
reverbMix: number;
|
|
83
|
+
reverbTimeMs: number;
|
|
84
|
+
reverbDamping: number;
|
|
85
|
+
reverbSeed: number;
|
|
86
|
+
limiterCeilingDb: number;
|
|
87
|
+
limiterReleaseMs: number;
|
|
88
|
+
limiterEnableIspLimiter: boolean;
|
|
89
|
+
limiterIspCeilingDbtp: number;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface WasmBeatResult {
|
|
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
|
+
*/
|
|
99
|
+
strength: number;
|
|
100
|
+
}
|
|
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
|
+
|
|
118
|
+
export interface WasmChordResult {
|
|
119
|
+
root: number;
|
|
120
|
+
bass: number;
|
|
121
|
+
quality: number;
|
|
122
|
+
start: number;
|
|
123
|
+
end: number;
|
|
124
|
+
confidence: number;
|
|
125
|
+
name: string;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface WasmAnalysisChordResult extends WasmChordResult {
|
|
129
|
+
romanNumeral: string;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface WasmSectionResult {
|
|
133
|
+
type: number;
|
|
134
|
+
start: number;
|
|
135
|
+
end: number;
|
|
136
|
+
energyLevel: number;
|
|
137
|
+
confidence: number;
|
|
138
|
+
name: string;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface WasmTimbreResult {
|
|
142
|
+
brightness: number;
|
|
143
|
+
warmth: number;
|
|
144
|
+
density: number;
|
|
145
|
+
roughness: number;
|
|
146
|
+
complexity: number;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export interface WasmDynamicsResult {
|
|
150
|
+
dynamicRangeDb: number;
|
|
151
|
+
peakDb: number;
|
|
152
|
+
rmsDb: number;
|
|
153
|
+
loudnessRangeDb: number;
|
|
154
|
+
crestFactor: number;
|
|
155
|
+
isCompressed: boolean;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export interface WasmRhythmResult {
|
|
159
|
+
syncopation: number;
|
|
160
|
+
grooveType: string;
|
|
161
|
+
patternRegularity: number;
|
|
162
|
+
tempoStability: number;
|
|
163
|
+
timeSignature: WasmTimeSignatureResult;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface WasmTimeSignatureResult {
|
|
167
|
+
numerator: number;
|
|
168
|
+
denominator: number;
|
|
169
|
+
confidence: number;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export interface WasmMelodyContourResult {
|
|
173
|
+
pitchRangeOctaves: number;
|
|
174
|
+
pitchStability: number;
|
|
175
|
+
meanFrequency: number;
|
|
176
|
+
vibratoRate: number;
|
|
177
|
+
pitches: WasmMelodyPoint[];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface WasmAnalysisResult {
|
|
181
|
+
bpm: number;
|
|
182
|
+
bpmConfidence: number;
|
|
183
|
+
bpmCandidates: WasmBpmHypothesis[];
|
|
184
|
+
key: WasmKeyResult;
|
|
185
|
+
timeSignature: WasmTimeSignatureResult;
|
|
186
|
+
timeSignatureCandidates: WasmTimeSignatureResult[];
|
|
187
|
+
beats: WasmBeatResult[];
|
|
188
|
+
downbeatIndices: number[];
|
|
189
|
+
downbeatPhase: number;
|
|
190
|
+
beatObservations: WasmBeatObservationsResult;
|
|
191
|
+
beatLocalBpm: number[];
|
|
192
|
+
chords: WasmAnalysisChordResult[];
|
|
193
|
+
sections: WasmSectionResult[];
|
|
194
|
+
timbre: WasmTimbreResult;
|
|
195
|
+
dynamics: WasmDynamicsResult;
|
|
196
|
+
rhythm: WasmRhythmResult;
|
|
197
|
+
melody: WasmMelodyContourResult;
|
|
198
|
+
form: string;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export interface WasmBpmHypothesis {
|
|
202
|
+
value: number;
|
|
203
|
+
confidence: number;
|
|
204
|
+
relation: 'primary' | 'half' | 'double' | 'other';
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export interface WasmBpmCandidate {
|
|
208
|
+
bpm: number;
|
|
209
|
+
confidence: number;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export interface WasmBpmAnalysisResult {
|
|
213
|
+
bpm: number;
|
|
214
|
+
confidence: number;
|
|
215
|
+
candidates: WasmBpmCandidate[];
|
|
216
|
+
autocorrelation: Float32Array;
|
|
217
|
+
tempogram: Float32Array;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export interface WasmRhythmAnalysisResult {
|
|
221
|
+
timeSignature: WasmTimeSignatureResult;
|
|
222
|
+
syncopation: number;
|
|
223
|
+
grooveType: string;
|
|
224
|
+
patternRegularity: number;
|
|
225
|
+
tempoStability: number;
|
|
226
|
+
bpm: number;
|
|
227
|
+
beatIntervals: Float32Array;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export interface WasmDynamicsAnalysisResult {
|
|
231
|
+
dynamicRangeDb: number;
|
|
232
|
+
peakDb: number;
|
|
233
|
+
rmsDb: number;
|
|
234
|
+
crestFactor: number;
|
|
235
|
+
loudnessRangeDb: number;
|
|
236
|
+
isCompressed: boolean;
|
|
237
|
+
loudnessTimes: Float32Array;
|
|
238
|
+
loudnessRmsDb: Float32Array;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export interface WasmStreamConfigDefaults {
|
|
242
|
+
sampleRate: number;
|
|
243
|
+
nFft: number;
|
|
244
|
+
hopLength: number;
|
|
245
|
+
nMels: number;
|
|
246
|
+
fmin: number;
|
|
247
|
+
fmax: number;
|
|
248
|
+
tuningRefHz: number;
|
|
249
|
+
computeMagnitude: boolean;
|
|
250
|
+
computeMel: boolean;
|
|
251
|
+
computeChroma: boolean;
|
|
252
|
+
computeOnset: boolean;
|
|
253
|
+
computeSpectral: boolean;
|
|
254
|
+
emitEveryNFrames: number;
|
|
255
|
+
magnitudeDownsample: number;
|
|
256
|
+
maxPendingFrames: number;
|
|
257
|
+
maxProgressionEntries: number;
|
|
258
|
+
keyUpdateIntervalSec: number;
|
|
259
|
+
bpmUpdateIntervalSec: number;
|
|
260
|
+
window: number;
|
|
261
|
+
outputFormat: number;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface WasmTimbreFrameResult {
|
|
265
|
+
brightness: number;
|
|
266
|
+
warmth: number;
|
|
267
|
+
density: number;
|
|
268
|
+
roughness: number;
|
|
269
|
+
complexity: number;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
export interface WasmTimbreAnalysisResult {
|
|
273
|
+
brightness: number;
|
|
274
|
+
warmth: number;
|
|
275
|
+
density: number;
|
|
276
|
+
roughness: number;
|
|
277
|
+
complexity: number;
|
|
278
|
+
spectralCentroid: Float32Array;
|
|
279
|
+
spectralFlatness: Float32Array;
|
|
280
|
+
spectralRolloff: Float32Array;
|
|
281
|
+
timbreOverTime: WasmTimbreFrameResult[];
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export interface WasmChordAnalysisResult {
|
|
285
|
+
chords: WasmChordResult[];
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export interface WasmAcousticResult {
|
|
289
|
+
rt60: number;
|
|
290
|
+
edt: number;
|
|
291
|
+
c50: number;
|
|
292
|
+
c80: number;
|
|
293
|
+
d50: number;
|
|
294
|
+
rt60Bands: Float32Array;
|
|
295
|
+
edtBands: Float32Array;
|
|
296
|
+
c50Bands: Float32Array;
|
|
297
|
+
c80Bands: Float32Array;
|
|
298
|
+
confidence: number;
|
|
299
|
+
isBlind: boolean;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
export interface WasmRoomGeometryOptions {
|
|
303
|
+
lengthM?: number;
|
|
304
|
+
widthM?: number;
|
|
305
|
+
heightM?: number;
|
|
306
|
+
absorption?: number;
|
|
307
|
+
materialPreset?: number;
|
|
308
|
+
bandAbsorption?: Float32Array | number[];
|
|
309
|
+
bandScattering?: Float32Array | number[];
|
|
310
|
+
sourceX?: number;
|
|
311
|
+
sourceY?: number;
|
|
312
|
+
sourceZ?: number;
|
|
313
|
+
listenerX?: number;
|
|
314
|
+
listenerY?: number;
|
|
315
|
+
listenerZ?: number;
|
|
316
|
+
ismOrder?: number;
|
|
317
|
+
seed?: number;
|
|
318
|
+
maxSeconds?: number;
|
|
319
|
+
airAbsorptionEnabled?: boolean;
|
|
320
|
+
airTemperatureC?: number;
|
|
321
|
+
airHumidityPercent?: number;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export interface WasmRirSynthOptions extends WasmRoomGeometryOptions {
|
|
325
|
+
sampleRate?: number;
|
|
326
|
+
preferEyring?: boolean;
|
|
327
|
+
mixingTimeMs?: number;
|
|
328
|
+
crossfadeMs?: number;
|
|
329
|
+
}
|
|
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
|
+
|
|
343
|
+
export interface WasmRirResult {
|
|
344
|
+
rir: Float32Array;
|
|
345
|
+
sampleRate: number;
|
|
346
|
+
hasError: boolean;
|
|
347
|
+
errorMessage: string;
|
|
348
|
+
diagnostics: WasmRirDiagnostic[];
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export interface WasmRoomEstimateOptions {
|
|
352
|
+
aspectHintLw?: number;
|
|
353
|
+
aspectHintLh?: number;
|
|
354
|
+
referenceAbsorption?: number;
|
|
355
|
+
preferEyring?: boolean;
|
|
356
|
+
nOctaveBands?: number;
|
|
357
|
+
mode?: number;
|
|
358
|
+
minDecayDb?: number;
|
|
359
|
+
noiseFloorMarginDb?: number;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
export interface WasmRoomEstimateResult {
|
|
363
|
+
volume: number;
|
|
364
|
+
length: number;
|
|
365
|
+
width: number;
|
|
366
|
+
height: number;
|
|
367
|
+
drrDb: number;
|
|
368
|
+
confidence: number;
|
|
369
|
+
absorptionBands: Float32Array;
|
|
370
|
+
rt60Bands: Float32Array;
|
|
371
|
+
}
|
|
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
|
+
|
|
566
|
+
export interface WasmRoomMorphOptions extends WasmRoomGeometryOptions {
|
|
567
|
+
wet?: number;
|
|
568
|
+
sourceTailSuppression?: number;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
export interface WasmHpssResult {
|
|
572
|
+
harmonic: Float32Array;
|
|
573
|
+
percussive: Float32Array;
|
|
574
|
+
sampleRate: number;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
export interface WasmAudioFromMemoryResult {
|
|
578
|
+
samples: Float32Array;
|
|
579
|
+
sampleRate: number;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
export interface WasmHpssWithResidualResult {
|
|
583
|
+
harmonic: Float32Array;
|
|
584
|
+
percussive: Float32Array;
|
|
585
|
+
residual: Float32Array;
|
|
586
|
+
sampleRate: number;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/** Row-major 2-D matrix as a flat buffer plus its dimensions. */
|
|
590
|
+
export interface WasmMatrix2dResult {
|
|
591
|
+
data: Float32Array;
|
|
592
|
+
rows: number;
|
|
593
|
+
cols: number;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
export interface WasmSegmentMatrixResult {
|
|
597
|
+
rows: number;
|
|
598
|
+
cols: number;
|
|
599
|
+
values: Float32Array;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
export interface WasmDecomposeResult {
|
|
603
|
+
w: Float32Array;
|
|
604
|
+
h: Float32Array;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
export interface WasmStftResult {
|
|
608
|
+
nBins: number;
|
|
609
|
+
nFrames: number;
|
|
610
|
+
nFft: number;
|
|
611
|
+
hopLength: number;
|
|
612
|
+
sampleRate: number;
|
|
613
|
+
magnitude: Float32Array;
|
|
614
|
+
power: Float32Array;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
export interface WasmStftDbResult {
|
|
618
|
+
nBins: number;
|
|
619
|
+
nFrames: number;
|
|
620
|
+
db: Float32Array;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
export interface WasmMelResult {
|
|
624
|
+
nMels: number;
|
|
625
|
+
nFrames: number;
|
|
626
|
+
sampleRate: number;
|
|
627
|
+
hopLength: number;
|
|
628
|
+
power: Float32Array;
|
|
629
|
+
db: Float32Array;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
export interface WasmMfccResult {
|
|
633
|
+
nMfcc: number;
|
|
634
|
+
nFrames: number;
|
|
635
|
+
coefficients: Float32Array;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
export interface WasmStftPowerResult {
|
|
639
|
+
nBins: number;
|
|
640
|
+
nFrames: number;
|
|
641
|
+
power: Float32Array;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
export interface WasmMelPowerResult {
|
|
645
|
+
nMels: number;
|
|
646
|
+
nFrames: number;
|
|
647
|
+
power: Float32Array;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
export interface WasmChromaResult {
|
|
651
|
+
nChroma: number;
|
|
652
|
+
nFrames: number;
|
|
653
|
+
sampleRate: number;
|
|
654
|
+
hopLength: number;
|
|
655
|
+
features: Float32Array;
|
|
656
|
+
meanEnergy: number[];
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
export interface WasmPitchResult {
|
|
660
|
+
f0: Float32Array;
|
|
661
|
+
voicedProb: Float32Array;
|
|
662
|
+
voicedFlag: boolean[];
|
|
663
|
+
nFrames: number;
|
|
664
|
+
medianF0: number;
|
|
665
|
+
meanF0: number;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
export interface WasmNoteSegment {
|
|
669
|
+
frameStart: number;
|
|
670
|
+
frameEnd: number;
|
|
671
|
+
startSeconds: number;
|
|
672
|
+
endSeconds: number;
|
|
673
|
+
medianCents: number;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
export interface WasmTrimResult {
|
|
677
|
+
audio: Float32Array;
|
|
678
|
+
startSample: number;
|
|
679
|
+
endSample: number;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
export interface WasmFrameResult {
|
|
683
|
+
nFrames: number;
|
|
684
|
+
frames: Float32Array;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
export interface WasmTempogramResult {
|
|
688
|
+
nFrames: number;
|
|
689
|
+
winLength: number;
|
|
690
|
+
data: Float32Array;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
export interface WasmCyclicTempogramResult {
|
|
694
|
+
nFrames: number;
|
|
695
|
+
nBins: number;
|
|
696
|
+
data: Float32Array;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
export interface WasmFourierTempogramResult {
|
|
700
|
+
nBins: number;
|
|
701
|
+
nFrames: number;
|
|
702
|
+
data: Float32Array;
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
export interface WasmOnsetStrengthMultiResult {
|
|
706
|
+
nBands: number;
|
|
707
|
+
nFrames: number;
|
|
708
|
+
data: Float32Array;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
export interface WasmNnlsChromaResult {
|
|
712
|
+
nChroma: number;
|
|
713
|
+
nFrames: number;
|
|
714
|
+
data: Float32Array;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
export interface WasmMelodyPoint {
|
|
718
|
+
time: number;
|
|
719
|
+
frequency: number;
|
|
720
|
+
confidence: number;
|
|
721
|
+
}
|
|
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
|
+
|
|
765
|
+
export interface WasmMelodyResult {
|
|
766
|
+
points: WasmMelodyPoint[];
|
|
767
|
+
pitchRangeOctaves: number;
|
|
768
|
+
pitchStability: number;
|
|
769
|
+
meanFrequency: number;
|
|
770
|
+
vibratoRate: number;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
export interface WasmCqtResult {
|
|
774
|
+
nBins: number;
|
|
775
|
+
nFrames: number;
|
|
776
|
+
hopLength: number;
|
|
777
|
+
sampleRate: number;
|
|
778
|
+
magnitude: Float32Array;
|
|
779
|
+
frequencies: Float32Array;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
export interface WasmLufsResult {
|
|
783
|
+
integratedLufs: number;
|
|
784
|
+
momentaryLufs: number;
|
|
785
|
+
shortTermLufs: number;
|
|
786
|
+
maxMomentaryLufs: number;
|
|
787
|
+
maxShortTermLufs: number;
|
|
788
|
+
loudnessRange: number;
|
|
789
|
+
}
|
|
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
|
+
|
|
802
|
+
export interface WasmMasteringResult {
|
|
803
|
+
samples: Float32Array;
|
|
804
|
+
sampleRate: number;
|
|
805
|
+
inputLufs: number;
|
|
806
|
+
outputLufs: number;
|
|
807
|
+
appliedGainDb: number;
|
|
808
|
+
loudnessTargetLimited?: boolean;
|
|
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 WasmStageGainReduction {
|
|
833
|
+
stage: string;
|
|
834
|
+
gainReductionDb: number;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
export interface WasmMasteringLoudnessSummary {
|
|
838
|
+
integratedLufs: number;
|
|
839
|
+
maxMomentaryLufs: number;
|
|
840
|
+
maxShortTermLufs: number;
|
|
841
|
+
truePeakDbtp: number;
|
|
842
|
+
loudnessRange: number;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
export interface WasmMasteringReport {
|
|
846
|
+
before: WasmMasteringLoudnessSummary;
|
|
847
|
+
after: WasmMasteringLoudnessSummary;
|
|
848
|
+
appliedGainDb: number;
|
|
849
|
+
maxGainReductionDb: number;
|
|
850
|
+
loudnessTargetLimited: boolean;
|
|
851
|
+
bandEnergyDeltaDb: Float32Array;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
export interface WasmMasteringChainResult extends WasmMasteringResult {
|
|
855
|
+
stages: string[];
|
|
856
|
+
outputTruePeakDbtp: number;
|
|
857
|
+
outputLra: number;
|
|
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;
|
|
872
|
+
stageGainReductions: WasmStageGainReduction[];
|
|
873
|
+
report: WasmMasteringReport;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
export interface WasmMasteringStereoChainResult {
|
|
877
|
+
left: Float32Array;
|
|
878
|
+
right: Float32Array;
|
|
879
|
+
sampleRate: number;
|
|
880
|
+
inputLufs: number;
|
|
881
|
+
outputLufs: number;
|
|
882
|
+
appliedGainDb: number;
|
|
883
|
+
stages: string[];
|
|
884
|
+
outputTruePeakDbtp: number;
|
|
885
|
+
outputLra: number;
|
|
886
|
+
loudnessTargetLimited: boolean;
|
|
887
|
+
/** See {@link WasmMasteringChainResult} for field semantics. Aggregated over both channels. */
|
|
888
|
+
nonFiniteSubstitutionCount: number;
|
|
889
|
+
stageGainReductions: WasmStageGainReduction[];
|
|
890
|
+
report: WasmMasteringReport;
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
export interface WasmMasteringStereoResult {
|
|
894
|
+
left: Float32Array;
|
|
895
|
+
right: Float32Array;
|
|
896
|
+
sampleRate: number;
|
|
897
|
+
inputLufs: number;
|
|
898
|
+
outputLufs: number;
|
|
899
|
+
appliedGainDb: number;
|
|
900
|
+
latencySamples: number;
|
|
901
|
+
loudnessTargetLimited: boolean;
|
|
902
|
+
/** Aggregated over both channels. */
|
|
903
|
+
nonFiniteSubstitutionCount: number;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
export interface WasmMixMeterSnapshot {
|
|
907
|
+
peakDbL: number;
|
|
908
|
+
peakDbR: number;
|
|
909
|
+
rmsDbL: number;
|
|
910
|
+
rmsDbR: number;
|
|
911
|
+
correlation: number;
|
|
912
|
+
monoCompatWidth: number;
|
|
913
|
+
monoCompatPeak: number;
|
|
914
|
+
monoCompatSideRms: number;
|
|
915
|
+
likelyMonoCompatible: boolean;
|
|
916
|
+
momentaryLufs: number;
|
|
917
|
+
shortTermLufs: number;
|
|
918
|
+
integratedLufs: number;
|
|
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
|
+
*/
|
|
928
|
+
truePeakDbL: number;
|
|
929
|
+
/** Right-channel inter-sample (true) peak in dB. See {@link truePeakDbL}. */
|
|
930
|
+
truePeakDbR: number;
|
|
931
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDbL}. */
|
|
932
|
+
maxTruePeakDb: number;
|
|
933
|
+
seq: number;
|
|
934
|
+
channelCount: number;
|
|
935
|
+
peakDb: number[];
|
|
936
|
+
rmsDb: number[];
|
|
937
|
+
/** Per-plane inter-sample peak in dB; [0]/[1] mirror {@link truePeakDbL}/R. */
|
|
938
|
+
truePeakDb: number[];
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
export interface WasmMixResult {
|
|
942
|
+
left: Float32Array;
|
|
943
|
+
right: Float32Array;
|
|
944
|
+
sampleRate: number;
|
|
945
|
+
meters: WasmMixMeterSnapshot[];
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
export interface WasmEngineClip {
|
|
949
|
+
id?: number;
|
|
950
|
+
trackId?: number;
|
|
951
|
+
channels?: Float32Array[];
|
|
952
|
+
startPpq: number;
|
|
953
|
+
lengthSamples?: number;
|
|
954
|
+
clipOffsetSamples?: number;
|
|
955
|
+
loop?: boolean;
|
|
956
|
+
gain?: number;
|
|
957
|
+
fadeInSamples?: number;
|
|
958
|
+
fadeOutSamples?: number;
|
|
959
|
+
warpMode?: 'off' | 'repitch' | 'tempo-sync' | 'time-stretch' | 0 | 1 | 2 | 3;
|
|
960
|
+
warpAnchors?: Array<{ warpSample: number; sourceSample: number }>;
|
|
961
|
+
pageProvider?: number | { readonly id: number };
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
export interface WasmEngineTrackSend {
|
|
965
|
+
busId: number;
|
|
966
|
+
levelDb?: number;
|
|
967
|
+
enabled?: boolean;
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
export interface WasmEngineTrackLane {
|
|
971
|
+
trackId: number;
|
|
972
|
+
sends?: WasmEngineTrackSend[];
|
|
973
|
+
/**
|
|
974
|
+
* Bus the lane's post-fader output sums into instead of the master mix
|
|
975
|
+
* (group/folder routing); 0 or absent keeps the lane on the master mix.
|
|
976
|
+
*/
|
|
977
|
+
outputBusId?: number;
|
|
978
|
+
/**
|
|
979
|
+
* Input channel layout of the source feeding this lane (`SonareChannelLayout`:
|
|
980
|
+
* 0 mono, 1 stereo, 2 5.1, 3 7.1). Absent defaults to stereo.
|
|
981
|
+
*/
|
|
982
|
+
sourceChannelLayout?: number;
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
export interface WasmEngineBus {
|
|
986
|
+
busId: number;
|
|
987
|
+
gainDb?: number;
|
|
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[];
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
export interface WasmClipPageRequest {
|
|
999
|
+
clipId: number;
|
|
1000
|
+
channel: number;
|
|
1001
|
+
sample: number;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
export interface WasmEngineParameterInfo {
|
|
1005
|
+
id: number;
|
|
1006
|
+
name: string;
|
|
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;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
export interface WasmEngineAutomationPoint {
|
|
1022
|
+
ppq: number;
|
|
1023
|
+
value: number;
|
|
1024
|
+
curveToNext?: number;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
export interface WasmEngineMarker {
|
|
1028
|
+
id: number;
|
|
1029
|
+
ppq: number;
|
|
1030
|
+
name?: string;
|
|
1031
|
+
kind?: number;
|
|
1032
|
+
keyFifths?: number;
|
|
1033
|
+
keyMinor?: boolean;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
export interface WasmProjectMarker {
|
|
1037
|
+
id: number;
|
|
1038
|
+
ppq: number;
|
|
1039
|
+
name?: string;
|
|
1040
|
+
kind?: number;
|
|
1041
|
+
keyFifths?: number;
|
|
1042
|
+
keyMinor?: boolean;
|
|
1043
|
+
}
|
|
1044
|
+
export interface WasmProjectTrack {
|
|
1045
|
+
id: number;
|
|
1046
|
+
kind: number;
|
|
1047
|
+
midiDestinationId: number;
|
|
1048
|
+
gain: number;
|
|
1049
|
+
pan: number;
|
|
1050
|
+
mute: boolean;
|
|
1051
|
+
solo: boolean;
|
|
1052
|
+
name: string;
|
|
1053
|
+
}
|
|
1054
|
+
export interface WasmProjectClip {
|
|
1055
|
+
id: number;
|
|
1056
|
+
trackId: number;
|
|
1057
|
+
sourceId: number;
|
|
1058
|
+
sourceKind: number;
|
|
1059
|
+
startPpq: number;
|
|
1060
|
+
lengthPpq: number;
|
|
1061
|
+
sourceOffsetPpq: number;
|
|
1062
|
+
gain: number;
|
|
1063
|
+
loopMode: number;
|
|
1064
|
+
loopLengthPpq: number;
|
|
1065
|
+
}
|
|
1066
|
+
export interface WasmProjectSource {
|
|
1067
|
+
id: number;
|
|
1068
|
+
kind: number;
|
|
1069
|
+
channelCount: number;
|
|
1070
|
+
storageHandleId: number;
|
|
1071
|
+
sampleRateHint: number;
|
|
1072
|
+
nameOrUri: string;
|
|
1073
|
+
/** Owning content hash for audio sources; empty for MIDI sources. */
|
|
1074
|
+
contentHash: string;
|
|
1075
|
+
/** External source-separation role for audio sources; empty for MIDI sources. */
|
|
1076
|
+
externalStemRole: string;
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
export interface WasmEngineMetronomeConfig {
|
|
1080
|
+
enabled: boolean;
|
|
1081
|
+
beatGain?: number;
|
|
1082
|
+
accentGain?: number;
|
|
1083
|
+
/** Explicit click length in samples (0..384000). The engine caps it to one second at its sample rate. */
|
|
1084
|
+
clickSamples?: number;
|
|
1085
|
+
/** Optional click length in seconds (0..1); > 0 overrides the engine 2 ms default. */
|
|
1086
|
+
clickSeconds?: number;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
export interface WasmEngineGraphNode {
|
|
1090
|
+
id: string;
|
|
1091
|
+
type?: number;
|
|
1092
|
+
gainDb?: number;
|
|
1093
|
+
numPorts?: number;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
export interface WasmEngineGraphConnection {
|
|
1097
|
+
sourceNode: string;
|
|
1098
|
+
sourcePort: number;
|
|
1099
|
+
destNode: string;
|
|
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
|
+
*/
|
|
1108
|
+
mix?: number;
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
export interface WasmEngineGraphParameterBinding {
|
|
1112
|
+
paramId: number;
|
|
1113
|
+
nodeId: string;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
export interface WasmEngineGraphSpec {
|
|
1117
|
+
nodes: WasmEngineGraphNode[];
|
|
1118
|
+
connections: WasmEngineGraphConnection[];
|
|
1119
|
+
inputNode: string;
|
|
1120
|
+
outputNode: string;
|
|
1121
|
+
numChannels: number;
|
|
1122
|
+
parameterBindings?: WasmEngineGraphParameterBinding[];
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
export interface WasmEngineTelemetry {
|
|
1126
|
+
type: number;
|
|
1127
|
+
error: number;
|
|
1128
|
+
renderFrame: number;
|
|
1129
|
+
timelineSample: number;
|
|
1130
|
+
audibleTimelineSample: number;
|
|
1131
|
+
graphLatencySamplesQ8: number;
|
|
1132
|
+
value: number;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
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
|
+
*/
|
|
1142
|
+
targetId: number;
|
|
1143
|
+
renderFrame: number;
|
|
1144
|
+
seq: number;
|
|
1145
|
+
peakDbL: number;
|
|
1146
|
+
peakDbR: number;
|
|
1147
|
+
rmsDbL: number;
|
|
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
|
+
*/
|
|
1157
|
+
truePeakDbL: number;
|
|
1158
|
+
/** Right-channel inter-sample (true) peak in dB. See {@link truePeakDbL}. */
|
|
1159
|
+
truePeakDbR: number;
|
|
1160
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDbL}. */
|
|
1161
|
+
maxTruePeakDb: number;
|
|
1162
|
+
correlation: number;
|
|
1163
|
+
monoCompatWidth: number;
|
|
1164
|
+
momentaryLufs: number;
|
|
1165
|
+
shortTermLufs: number;
|
|
1166
|
+
integratedLufs: number;
|
|
1167
|
+
gainReductionDb: number;
|
|
1168
|
+
droppedRecords: number;
|
|
1169
|
+
}
|
|
1170
|
+
|
|
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
|
+
*/
|
|
1178
|
+
targetId: number;
|
|
1179
|
+
renderFrame: number;
|
|
1180
|
+
seq: number;
|
|
1181
|
+
channelCount: number;
|
|
1182
|
+
peakDb: number[];
|
|
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
|
+
*/
|
|
1193
|
+
truePeakDb: number[];
|
|
1194
|
+
/** Maximum inter-sample peak across channels in dB. See {@link truePeakDb}. */
|
|
1195
|
+
maxTruePeakDb: number;
|
|
1196
|
+
correlation: number;
|
|
1197
|
+
monoCompatWidth: number;
|
|
1198
|
+
momentaryLufs: number;
|
|
1199
|
+
shortTermLufs: number;
|
|
1200
|
+
integratedLufs: number;
|
|
1201
|
+
gainReductionDb: number;
|
|
1202
|
+
droppedRecords: number;
|
|
1203
|
+
}
|
|
1204
|
+
|
|
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
|
+
*/
|
|
1212
|
+
targetId: number;
|
|
1213
|
+
renderFrame: number;
|
|
1214
|
+
seq: number;
|
|
1215
|
+
droppedRecords: number;
|
|
1216
|
+
bands: number[];
|
|
1217
|
+
/**
|
|
1218
|
+
* Goniometer/vectorscope sample points as `{ left, right }` objects. The
|
|
1219
|
+
* Python surface exposes the same data as `(left, right)` tuples; this
|
|
1220
|
+
* representation difference is intentional, the values match.
|
|
1221
|
+
*/
|
|
1222
|
+
points: { left: number; right: number }[];
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
export interface WasmEngineCaptureStatus {
|
|
1226
|
+
capturedFrames: number;
|
|
1227
|
+
overflowCount: number;
|
|
1228
|
+
armed: boolean;
|
|
1229
|
+
punchEnabled: boolean;
|
|
1230
|
+
source: 'output' | 'input';
|
|
1231
|
+
recordOffsetSamples: number;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
export interface WasmEngineTransportState {
|
|
1235
|
+
playing: boolean;
|
|
1236
|
+
looping: boolean;
|
|
1237
|
+
renderFrame: number;
|
|
1238
|
+
samplePosition: number;
|
|
1239
|
+
ppq: number;
|
|
1240
|
+
bpm: number;
|
|
1241
|
+
loopStartPpq: number;
|
|
1242
|
+
loopEndPpq: number;
|
|
1243
|
+
sampleRate: number;
|
|
1244
|
+
/** PPQ of the current bar's downbeat (derived from the tempo map). */
|
|
1245
|
+
barStartPpq: number;
|
|
1246
|
+
/** Zero-based index of the current bar. */
|
|
1247
|
+
barCount: number;
|
|
1248
|
+
/** Time signature in effect at the current PPQ. */
|
|
1249
|
+
timeSignature: { numerator: number; denominator: number; confidence: number };
|
|
1250
|
+
/** One-based beat within the current bar (`barCount` is zero-based). */
|
|
1251
|
+
beat: number;
|
|
1252
|
+
/** Fractional position within the current beat, in [0, 1). */
|
|
1253
|
+
beatFraction: number;
|
|
1254
|
+
}
|
|
1255
|
+
|
|
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
|
+
*/
|
|
1275
|
+
totalFrames: number;
|
|
1276
|
+
blockSize?: number;
|
|
1277
|
+
numChannels?: number;
|
|
1278
|
+
targetSampleRate?: number;
|
|
1279
|
+
sourceSampleRate?: number;
|
|
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
|
+
*/
|
|
1288
|
+
targetLufs?: number;
|
|
1289
|
+
dither?: 0 | 1 | 2 | 3;
|
|
1290
|
+
ditherBits?: number;
|
|
1291
|
+
ditherSeed?: number;
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
export interface WasmEngineBounceResult {
|
|
1295
|
+
interleaved: Float32Array;
|
|
1296
|
+
frames: number;
|
|
1297
|
+
numChannels: number;
|
|
1298
|
+
sampleRate: number;
|
|
1299
|
+
integratedLufs: number;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
export interface WasmEngineFreezeOptions {
|
|
1303
|
+
totalFrames: number;
|
|
1304
|
+
blockSize?: number;
|
|
1305
|
+
numChannels?: number;
|
|
1306
|
+
clipId?: number;
|
|
1307
|
+
startPpq?: number;
|
|
1308
|
+
gain?: number;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
export interface WasmEngineFreezeResult {
|
|
1312
|
+
clipId: number;
|
|
1313
|
+
frames: number;
|
|
1314
|
+
numChannels: number;
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
export interface WasmEngineProcessWithMonitorResult {
|
|
1318
|
+
output: Float32Array[];
|
|
1319
|
+
monitor: Float32Array[];
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
export interface WasmEngineTempoSegment {
|
|
1323
|
+
startPpq: number;
|
|
1324
|
+
bpm: number;
|
|
1325
|
+
endBpm?: number;
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
export interface WasmEngineTimeSignatureSegment {
|
|
1329
|
+
startPpq: number;
|
|
1330
|
+
numerator: number;
|
|
1331
|
+
denominator: number;
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
/**
|
|
1335
|
+
* One external-MIDI event drained from the engine, already lowered to MIDI 1.0
|
|
1336
|
+
* bytes ready to write to a Web MIDI output port.
|
|
1337
|
+
*/
|
|
1338
|
+
export interface WasmExternalMidiEvent {
|
|
1339
|
+
/**
|
|
1340
|
+
* Originating track lane (Track.midi_destination_id), or the transport
|
|
1341
|
+
* sentinel 0xFFFFFFFF for clock / start / continue / stop bytes meant for
|
|
1342
|
+
* every external port.
|
|
1343
|
+
*/
|
|
1344
|
+
destinationId: number;
|
|
1345
|
+
/** Sample position within the producing block at which the event fires. */
|
|
1346
|
+
renderFrame: number;
|
|
1347
|
+
/** MIDI 1.0 status + data bytes (1..3 entries). */
|
|
1348
|
+
bytes: number[];
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
export interface WasmRealtimeEngine {
|
|
1352
|
+
prepare: (
|
|
1353
|
+
sampleRate: number,
|
|
1354
|
+
maxBlockSize: number,
|
|
1355
|
+
commandCapacity: number,
|
|
1356
|
+
telemetryCapacity: number,
|
|
1357
|
+
) => void;
|
|
1358
|
+
setParameter: (paramId: number, value: number, renderFrame?: number) => void;
|
|
1359
|
+
setParameterSmoothed: (paramId: number, value: number, renderFrame?: number) => void;
|
|
1360
|
+
setParamSmoothingMs: (smoothingMs: number) => void;
|
|
1361
|
+
setSoloMute: (laneIndex: number, solo: boolean, mute: boolean, renderFrame?: number) => void;
|
|
1362
|
+
setTrackMonitorMode: (laneIndex: number, mode: number, renderFrame?: number) => void;
|
|
1363
|
+
getTransportState: () => WasmEngineTransportState;
|
|
1364
|
+
play: (renderFrame?: number) => void;
|
|
1365
|
+
stop: (renderFrame?: number) => void;
|
|
1366
|
+
seekSample: (timelineSample: number, renderFrame?: number) => void;
|
|
1367
|
+
settleParameters: () => void;
|
|
1368
|
+
settleInsertParameters: () => void;
|
|
1369
|
+
flushControlCommands: () => void;
|
|
1370
|
+
applyCommandsDueNowPreservingFuture: () => void;
|
|
1371
|
+
seekPpq: (ppq: number, renderFrame?: number) => void;
|
|
1372
|
+
setTempo: (bpm: number) => void;
|
|
1373
|
+
setTempoSegments: (segments: WasmEngineTempoSegment[]) => void;
|
|
1374
|
+
setTimeSignature: (numerator: number, denominator: number) => void;
|
|
1375
|
+
setTimeSignatureSegments: (segments: WasmEngineTimeSignatureSegment[]) => void;
|
|
1376
|
+
sampleAtPpq: (ppq: number) => number;
|
|
1377
|
+
setLoop: (startPpq: number, endPpq: number, enabled: boolean) => void;
|
|
1378
|
+
addParameter: (info: WasmEngineParameterInfo) => void;
|
|
1379
|
+
parameterCount: () => number;
|
|
1380
|
+
parameterInfoByIndex: (index: number) => Required<WasmEngineParameterInfo>;
|
|
1381
|
+
parameterInfo: (id: number) => Required<WasmEngineParameterInfo>;
|
|
1382
|
+
setAutomationLane: (paramId: number, points: WasmEngineAutomationPoint[]) => void;
|
|
1383
|
+
automationLaneCount: () => number;
|
|
1384
|
+
setMarkers: (markers: WasmEngineMarker[]) => void;
|
|
1385
|
+
markerCount: () => number;
|
|
1386
|
+
markerByIndex: (index: number) => WasmEngineMarker;
|
|
1387
|
+
marker: (id: number) => WasmEngineMarker;
|
|
1388
|
+
seekMarker: (id: number, renderFrame?: number) => void;
|
|
1389
|
+
setLoopFromMarkers: (startMarkerId: number, endMarkerId: number) => void;
|
|
1390
|
+
setMetronome: (config: WasmEngineMetronomeConfig) => void;
|
|
1391
|
+
metronome: () => Required<WasmEngineMetronomeConfig>;
|
|
1392
|
+
countInEndSample: (startSample: number, bars: number) => number;
|
|
1393
|
+
setGraph: (spec: WasmEngineGraphSpec) => void;
|
|
1394
|
+
graphNodeCount: () => number;
|
|
1395
|
+
graphConnectionCount: () => number;
|
|
1396
|
+
setClips: (clips: WasmEngineClip[]) => void;
|
|
1397
|
+
prebakedClipChannels: (clipId: number) => Float32Array[] | null;
|
|
1398
|
+
clipCount: () => number;
|
|
1399
|
+
setTrackLanes: (lanes: Array<number | WasmEngineTrackLane>) => void;
|
|
1400
|
+
setLaneSidechain: (trackId: number, insertIndex: number, sourceTrackId: number) => void;
|
|
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;
|
|
1409
|
+
setBusStripJson: (busId: number, sceneJson: string) => void;
|
|
1410
|
+
setTrackStripJson: (trackId: number, sceneJson: string) => void;
|
|
1411
|
+
setTrackStripEqBandJson: (trackId: number, bandIndex: number, bandJson: string) => void;
|
|
1412
|
+
setBusStripEqBandJson: (busId: number, bandIndex: number, bandJson: string) => void;
|
|
1413
|
+
setTrackStripInsertBypassed: (
|
|
1414
|
+
trackId: number,
|
|
1415
|
+
insertIndex: number,
|
|
1416
|
+
bypassed: boolean,
|
|
1417
|
+
resetOnBypass: boolean,
|
|
1418
|
+
) => void;
|
|
1419
|
+
setMasterStripJson: (sceneJson: string) => void;
|
|
1420
|
+
setMasterStripEqBandJson: (bandIndex: number, bandJson: string) => void;
|
|
1421
|
+
setMasterStripInsertBypassed: (
|
|
1422
|
+
insertIndex: number,
|
|
1423
|
+
bypassed: boolean,
|
|
1424
|
+
resetOnBypass: boolean,
|
|
1425
|
+
) => void;
|
|
1426
|
+
setTrackStripInsertParamByName: (
|
|
1427
|
+
trackId: number,
|
|
1428
|
+
insertIndex: number,
|
|
1429
|
+
paramName: string,
|
|
1430
|
+
value: number,
|
|
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;
|
|
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;
|
|
1455
|
+
setBusStripInsertParamByName: (
|
|
1456
|
+
busId: number,
|
|
1457
|
+
insertIndex: number,
|
|
1458
|
+
paramName: string,
|
|
1459
|
+
value: number,
|
|
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;
|
|
1476
|
+
setBusStripInsertBypassed: (
|
|
1477
|
+
busId: number,
|
|
1478
|
+
insertIndex: number,
|
|
1479
|
+
bypassed: boolean,
|
|
1480
|
+
resetOnBypass: boolean,
|
|
1481
|
+
) => void;
|
|
1482
|
+
resolveTrackInsertAutomationId: (
|
|
1483
|
+
trackId: number,
|
|
1484
|
+
insertIndex: number,
|
|
1485
|
+
paramName: string,
|
|
1486
|
+
) => number;
|
|
1487
|
+
resolveMasterInsertAutomationId: (insertIndex: number, paramName: string) => number;
|
|
1488
|
+
resolveBusInsertAutomationId: (busId: number, insertIndex: number, paramName: string) => number;
|
|
1489
|
+
resolveInstrumentAutomationId: (destinationId: number, paramName: string) => number;
|
|
1490
|
+
setTrackStripPan: (trackId: number, pan: number) => void;
|
|
1491
|
+
setTrackStripPanLaw: (trackId: number, panLaw: number) => void;
|
|
1492
|
+
setTrackStripPanMode: (trackId: number, panMode: number) => void;
|
|
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;
|
|
1498
|
+
setTrackStripChannelDelaySamples: (trackId: number, delaySamples: number) => void;
|
|
1499
|
+
createClipPageProvider: (numChannels: number, numSamples: number, pageFrames: number) => number;
|
|
1500
|
+
supplyClipPage: (providerId: number, pageIndex: number, channels: Float32Array[]) => void;
|
|
1501
|
+
clearClipPage: (providerId: number, pageIndex: number) => void;
|
|
1502
|
+
destroyClipPageProvider: (providerId: number) => void;
|
|
1503
|
+
popClipPageRequest: () => WasmClipPageRequest | null;
|
|
1504
|
+
popClipPageRequestToScratch: () => boolean;
|
|
1505
|
+
clipPageRequestScratchClipId: () => number;
|
|
1506
|
+
clipPageRequestScratchSample: () => number;
|
|
1507
|
+
clipPageRequestOverflowCount: () => number;
|
|
1508
|
+
warpStretchOverflowCount: () => number;
|
|
1509
|
+
setWarpVoiceCapacity: (voices: number) => void;
|
|
1510
|
+
warpVoiceCapacity: () => number;
|
|
1511
|
+
setClipPagePrefetchFrames: (frames: number) => void;
|
|
1512
|
+
clipPagePrefetchFrames: () => number;
|
|
1513
|
+
setCaptureBuffer: (numChannels: number, capacityFrames: number) => void;
|
|
1514
|
+
armCapture: (armed: boolean) => void;
|
|
1515
|
+
setCapturePunch: (startSample: number, endSample: number, enabled: boolean) => void;
|
|
1516
|
+
setCaptureSource: (source: WasmEngineCaptureStatus['source'] | number) => void;
|
|
1517
|
+
setRecordOffsetSamples: (offsetSamples: number) => void;
|
|
1518
|
+
setInputMonitor: (enabled: boolean, gain: number) => void;
|
|
1519
|
+
resetCapture: () => void;
|
|
1520
|
+
captureStatus: () => WasmEngineCaptureStatus;
|
|
1521
|
+
capturedAudio: () => Float32Array[];
|
|
1522
|
+
setMidiClips: (clips: readonly object[]) => void;
|
|
1523
|
+
setBuiltinInstrument: (destinationId: number, config: object) => void;
|
|
1524
|
+
setSynthInstrument: (destinationId: number, patch: object | string) => void;
|
|
1525
|
+
loadSoundFont: (data: Uint8Array) => void;
|
|
1526
|
+
setSf2Instrument: (destinationId: number, config: object) => void;
|
|
1527
|
+
clearMidiInstrument: (destinationId: number) => void;
|
|
1528
|
+
midiInstrumentCount: () => number;
|
|
1529
|
+
bindMidiCc: (
|
|
1530
|
+
channel: number,
|
|
1531
|
+
controller: number,
|
|
1532
|
+
paramId: number,
|
|
1533
|
+
minValue: number,
|
|
1534
|
+
maxValue: number,
|
|
1535
|
+
) => void;
|
|
1536
|
+
bindMidiCcBinding: (binding: import('./project_types').ProjectMidiCcBinding) => void;
|
|
1537
|
+
clearMidiCcBindings: () => void;
|
|
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;
|
|
1567
|
+
setMidiFx: (destinationId: number, configJson: string) => void;
|
|
1568
|
+
clearMidiFx: (destinationId: number) => void;
|
|
1569
|
+
setMidiInputSource: (destinationId: number) => void;
|
|
1570
|
+
clearMidiInputSource: () => void;
|
|
1571
|
+
midiInputPendingCount: () => number;
|
|
1572
|
+
pushMidiInputNoteOn: (
|
|
1573
|
+
group: number,
|
|
1574
|
+
channel: number,
|
|
1575
|
+
note: number,
|
|
1576
|
+
velocity: number,
|
|
1577
|
+
portTimeSamples: number,
|
|
1578
|
+
) => void;
|
|
1579
|
+
pushMidiInputNoteOff: (
|
|
1580
|
+
group: number,
|
|
1581
|
+
channel: number,
|
|
1582
|
+
note: number,
|
|
1583
|
+
velocity: number,
|
|
1584
|
+
portTimeSamples: number,
|
|
1585
|
+
) => void;
|
|
1586
|
+
pushMidiInputCc: (
|
|
1587
|
+
group: number,
|
|
1588
|
+
channel: number,
|
|
1589
|
+
controller: number,
|
|
1590
|
+
value: number,
|
|
1591
|
+
portTimeSamples: number,
|
|
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;
|
|
1612
|
+
pushMidiNoteOn: (
|
|
1613
|
+
destinationId: number,
|
|
1614
|
+
group: number,
|
|
1615
|
+
channel: number,
|
|
1616
|
+
note: number,
|
|
1617
|
+
velocity: number,
|
|
1618
|
+
renderFrame?: number,
|
|
1619
|
+
) => void;
|
|
1620
|
+
pushMidiNoteOff: (
|
|
1621
|
+
destinationId: number,
|
|
1622
|
+
group: number,
|
|
1623
|
+
channel: number,
|
|
1624
|
+
note: number,
|
|
1625
|
+
velocity: number,
|
|
1626
|
+
renderFrame?: number,
|
|
1627
|
+
) => void;
|
|
1628
|
+
pushMidiCc: (
|
|
1629
|
+
destinationId: number,
|
|
1630
|
+
group: number,
|
|
1631
|
+
channel: number,
|
|
1632
|
+
controller: number,
|
|
1633
|
+
value: number,
|
|
1634
|
+
renderFrame?: number,
|
|
1635
|
+
) => void;
|
|
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;
|
|
1666
|
+
setMidiDestinationExternal: (destinationId: number, external: boolean) => void;
|
|
1667
|
+
setExternalMidiClockEnabled: (enabled: boolean) => void;
|
|
1668
|
+
externalMidiDroppedCount: () => number;
|
|
1669
|
+
externalMidiPendingCount: () => number;
|
|
1670
|
+
drainExternalMidi: (maxRecords: number) => WasmExternalMidiEvent[];
|
|
1671
|
+
popExternalMidiToScratch: () => boolean;
|
|
1672
|
+
externalMidiScratchDestinationId: () => number;
|
|
1673
|
+
externalMidiScratchRenderFrame: () => number;
|
|
1674
|
+
externalMidiScratchByteWord: () => number;
|
|
1675
|
+
externalMidiScratchByteCount: () => number;
|
|
1676
|
+
consumeExternalMidiScratch: () => void;
|
|
1677
|
+
clearParameters: () => void;
|
|
1678
|
+
process: (channels: Float32Array[]) => Float32Array[];
|
|
1679
|
+
prepareWithChannels: (
|
|
1680
|
+
sampleRate: number,
|
|
1681
|
+
maxBlockSize: number,
|
|
1682
|
+
commandCapacity: number,
|
|
1683
|
+
telemetryCapacity: number,
|
|
1684
|
+
maxChannels: number,
|
|
1685
|
+
) => void;
|
|
1686
|
+
prepareChannels: (numChannels: number, maxFrames: number) => void;
|
|
1687
|
+
getChannelBuffer: (channel: number, numFrames: number) => Float32Array;
|
|
1688
|
+
processPrepared: (numFrames: number) => void;
|
|
1689
|
+
prepareMonitorChannels: (numChannels: number, maxFrames: number) => void;
|
|
1690
|
+
getMonitorChannelBuffer: (channel: number, numFrames: number) => Float32Array;
|
|
1691
|
+
processPreparedWithMonitor: (numFrames: number) => void;
|
|
1692
|
+
processWithMonitor: (channels: Float32Array[]) => WasmEngineProcessWithMonitorResult;
|
|
1693
|
+
renderOffline: (channels: Float32Array[], blockSize: number, finalize: boolean) => Float32Array[];
|
|
1694
|
+
finishOfflineRender: () => void;
|
|
1695
|
+
bounceOffline: (options: WasmEngineBounceOptions) => WasmEngineBounceResult;
|
|
1696
|
+
freezeOffline: (options: WasmEngineFreezeOptions) => WasmEngineFreezeResult;
|
|
1697
|
+
drainTelemetry: (maxRecords: number) => WasmEngineTelemetry[];
|
|
1698
|
+
popTelemetryToScratch: () => boolean;
|
|
1699
|
+
telemetryScratchType: () => number;
|
|
1700
|
+
telemetryScratchError: () => number;
|
|
1701
|
+
telemetryScratchRenderFrame: () => number;
|
|
1702
|
+
telemetryScratchTimelineSample: () => number;
|
|
1703
|
+
telemetryScratchAudibleTimelineSample: () => number;
|
|
1704
|
+
telemetryScratchGraphLatencySamplesQ8: () => number;
|
|
1705
|
+
telemetryScratchValue: () => number;
|
|
1706
|
+
popMeterTelemetryToScratch: () => boolean;
|
|
1707
|
+
meterScratchTargetId: () => number;
|
|
1708
|
+
meterScratchRenderFrame: () => number;
|
|
1709
|
+
meterScratchValue: (field: number) => number;
|
|
1710
|
+
drainMeterTelemetry: (maxRecords: number) => WasmEngineMeterTelemetry[];
|
|
1711
|
+
drainMeterTelemetryWide: (maxRecords: number) => WasmEngineMeterTelemetryWide[];
|
|
1712
|
+
configureScopeTelemetry: (intervalFrames: number, bandCount: number) => number;
|
|
1713
|
+
drainScopeTelemetry: (maxRecords: number) => WasmEngineScopeTelemetry[];
|
|
1714
|
+
popScopeTelemetryToScratch: () => boolean;
|
|
1715
|
+
scopeScratchTargetId: () => number;
|
|
1716
|
+
scopeScratchRenderFrame: () => number;
|
|
1717
|
+
scopeScratchBandCount: () => number;
|
|
1718
|
+
scopeScratchBand: (index: number) => number;
|
|
1719
|
+
scopeScratchPointCount: () => number;
|
|
1720
|
+
scopeScratchPointLeft: (index: number) => number;
|
|
1721
|
+
scopeScratchPointRight: (index: number) => number;
|
|
1722
|
+
delete: () => void;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
export type { ProgressCallback } from './public_types';
|
|
1726
|
+
export type TempogramMode = 'autocorrelation' | 'auto' | 'ac' | 'cosine' | 0 | 1;
|
|
1727
|
+
|
|
1728
|
+
export interface WasmSynthEnumTables {
|
|
1729
|
+
engineModes: string[];
|
|
1730
|
+
waveforms: string[];
|
|
1731
|
+
builtinWaveforms: string[];
|
|
1732
|
+
filterModels: string[];
|
|
1733
|
+
filterOutputs: string[];
|
|
1734
|
+
bodyTypes: string[];
|
|
1735
|
+
modSources: string[];
|
|
1736
|
+
modDestinations: string[];
|
|
1737
|
+
controllerInputs: string[];
|
|
1738
|
+
controllerAxes: string[];
|
|
1739
|
+
articulations: string[];
|
|
1740
|
+
mpeDimensions: string[];
|
|
1741
|
+
noteTrackings: string[];
|
|
1742
|
+
}
|
|
1743
|
+
|
|
1744
|
+
export interface SonareModule {
|
|
1745
|
+
audioFromMemory: (bytes: Uint8Array) => WasmAudioFromMemoryResult;
|
|
1746
|
+
|
|
1747
|
+
// Quick API (high-level)
|
|
1748
|
+
detectBpm: (samples: Float32Array, sampleRate: number) => number;
|
|
1749
|
+
detectKey: (samples: Float32Array, sampleRate: number) => WasmKeyResult;
|
|
1750
|
+
_detectKeyWithOptions: (
|
|
1751
|
+
samples: Float32Array,
|
|
1752
|
+
sampleRate: number,
|
|
1753
|
+
nFft: number,
|
|
1754
|
+
hopLength: number,
|
|
1755
|
+
useHpss: boolean,
|
|
1756
|
+
loudnessWeighted: boolean,
|
|
1757
|
+
highPassHz: number,
|
|
1758
|
+
modes: number[],
|
|
1759
|
+
profileType: number,
|
|
1760
|
+
genreHint: string,
|
|
1761
|
+
) => WasmKeyResult;
|
|
1762
|
+
_detectKeyCandidates: (
|
|
1763
|
+
samples: Float32Array,
|
|
1764
|
+
sampleRate: number,
|
|
1765
|
+
nFft: number,
|
|
1766
|
+
hopLength: number,
|
|
1767
|
+
useHpss: boolean,
|
|
1768
|
+
loudnessWeighted: boolean,
|
|
1769
|
+
highPassHz: number,
|
|
1770
|
+
modes: number[],
|
|
1771
|
+
profileType: number,
|
|
1772
|
+
genreHint: string,
|
|
1773
|
+
) => WasmKeyCandidateResult[];
|
|
1774
|
+
detectOnsets: (samples: Float32Array, sampleRate: number, options: object) => Float32Array;
|
|
1775
|
+
detectBeats: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
1776
|
+
detectDownbeats: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
1777
|
+
detectChords: (
|
|
1778
|
+
samples: Float32Array,
|
|
1779
|
+
sampleRate: number,
|
|
1780
|
+
minDuration: number,
|
|
1781
|
+
smoothingWindow: number,
|
|
1782
|
+
threshold: number,
|
|
1783
|
+
useTriadsOnly: boolean,
|
|
1784
|
+
nFft: number,
|
|
1785
|
+
hopLength: number,
|
|
1786
|
+
useBeatSync: boolean,
|
|
1787
|
+
useHmm: boolean,
|
|
1788
|
+
hmmBeamWidth: number,
|
|
1789
|
+
useKeyContext: boolean,
|
|
1790
|
+
keyRoot: number,
|
|
1791
|
+
keyMode: number,
|
|
1792
|
+
detectInversions: boolean,
|
|
1793
|
+
chromaMethod: number,
|
|
1794
|
+
tuning: number,
|
|
1795
|
+
) => WasmChordAnalysisResult;
|
|
1796
|
+
chordFunctionalAnalysis: (
|
|
1797
|
+
samples: Float32Array,
|
|
1798
|
+
keyRoot: number,
|
|
1799
|
+
keyMode: number,
|
|
1800
|
+
sampleRate: number,
|
|
1801
|
+
minDuration: number,
|
|
1802
|
+
smoothingWindow: number,
|
|
1803
|
+
threshold: number,
|
|
1804
|
+
useTriadsOnly: boolean,
|
|
1805
|
+
nFft: number,
|
|
1806
|
+
hopLength: number,
|
|
1807
|
+
useBeatSync: boolean,
|
|
1808
|
+
useHmm: boolean,
|
|
1809
|
+
hmmBeamWidth: number,
|
|
1810
|
+
useKeyContext: boolean,
|
|
1811
|
+
detectInversions: boolean,
|
|
1812
|
+
chromaMethod: number,
|
|
1813
|
+
tuning: number,
|
|
1814
|
+
) => string[];
|
|
1815
|
+
analyze: (samples: Float32Array, sampleRate: number, options: object) => WasmAnalysisResult;
|
|
1816
|
+
estimateMeter: (
|
|
1817
|
+
beatTimes: ArrayLike<number>,
|
|
1818
|
+
beatStrengths: ArrayLike<number>,
|
|
1819
|
+
options: object,
|
|
1820
|
+
) => WasmMeterEstimateResult;
|
|
1821
|
+
_synthEnumTables: () => WasmSynthEnumTables;
|
|
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;
|
|
1883
|
+
_analysisResultSchemaPaths: () => string[];
|
|
1884
|
+
_analysisResultSchemaFixture: () => WasmAnalysisResult;
|
|
1885
|
+
analyzeImpulseResponse: (
|
|
1886
|
+
samples: Float32Array,
|
|
1887
|
+
sampleRate: number,
|
|
1888
|
+
nOctaveBands: number,
|
|
1889
|
+
) => WasmAcousticResult;
|
|
1890
|
+
analyzeImpulseResponseEx: (
|
|
1891
|
+
samples: Float32Array,
|
|
1892
|
+
sampleRate: number,
|
|
1893
|
+
nOctaveBands: number,
|
|
1894
|
+
minDecayDb: number,
|
|
1895
|
+
) => WasmAcousticResult;
|
|
1896
|
+
detectAcoustic: (
|
|
1897
|
+
samples: Float32Array,
|
|
1898
|
+
sampleRate: number,
|
|
1899
|
+
nOctaveBands: number,
|
|
1900
|
+
nThirdOctaveSubbands: number,
|
|
1901
|
+
minDecayDb: number,
|
|
1902
|
+
noiseFloorMarginDb: number,
|
|
1903
|
+
) => WasmAcousticResult;
|
|
1904
|
+
// Acoustic-simulation entry points are present only in builds compiled with
|
|
1905
|
+
// SONARE_WITH_ACOUSTIC_SIM; absent otherwise (the wrappers throw a clear error).
|
|
1906
|
+
synthesizeRir?: (options: WasmRirSynthOptions) => WasmRirResult;
|
|
1907
|
+
estimateRoom?: (
|
|
1908
|
+
samples: Float32Array,
|
|
1909
|
+
sampleRate: number,
|
|
1910
|
+
options: WasmRoomEstimateOptions,
|
|
1911
|
+
) => WasmRoomEstimateResult;
|
|
1912
|
+
roomMorph?: (
|
|
1913
|
+
samples: Float32Array,
|
|
1914
|
+
sampleRate: number,
|
|
1915
|
+
options: WasmRoomMorphOptions,
|
|
1916
|
+
) => WasmRoomMorphResult;
|
|
1917
|
+
analyzeWithProgress: (
|
|
1918
|
+
samples: Float32Array,
|
|
1919
|
+
sampleRate: number,
|
|
1920
|
+
options: object,
|
|
1921
|
+
progressCallback: ProgressCallback | null,
|
|
1922
|
+
cancelCallback: (() => boolean) | null,
|
|
1923
|
+
) => WasmAnalysisResult;
|
|
1924
|
+
analyzeBpm: (
|
|
1925
|
+
samples: Float32Array,
|
|
1926
|
+
sampleRate: number,
|
|
1927
|
+
bpmMin: number,
|
|
1928
|
+
bpmMax: number,
|
|
1929
|
+
startBpm: number,
|
|
1930
|
+
nFft: number,
|
|
1931
|
+
hopLength: number,
|
|
1932
|
+
maxCandidates: number,
|
|
1933
|
+
) => WasmBpmAnalysisResult;
|
|
1934
|
+
analyzeRhythm: (
|
|
1935
|
+
samples: Float32Array,
|
|
1936
|
+
sampleRate: number,
|
|
1937
|
+
bpmMin: number,
|
|
1938
|
+
bpmMax: number,
|
|
1939
|
+
startBpm: number,
|
|
1940
|
+
nFft: number,
|
|
1941
|
+
hopLength: number,
|
|
1942
|
+
) => WasmRhythmAnalysisResult;
|
|
1943
|
+
analyzeDynamics: (
|
|
1944
|
+
samples: Float32Array,
|
|
1945
|
+
sampleRate: number,
|
|
1946
|
+
windowSec: number,
|
|
1947
|
+
hopLength: number,
|
|
1948
|
+
compressionThreshold: number,
|
|
1949
|
+
) => WasmDynamicsAnalysisResult;
|
|
1950
|
+
analyzeTimbre: (
|
|
1951
|
+
samples: Float32Array,
|
|
1952
|
+
sampleRate: number,
|
|
1953
|
+
nFft: number,
|
|
1954
|
+
hopLength: number,
|
|
1955
|
+
nMels: number,
|
|
1956
|
+
nMfcc: number,
|
|
1957
|
+
windowSec: number,
|
|
1958
|
+
) => WasmTimbreAnalysisResult;
|
|
1959
|
+
detectKeyCandidates: (samples: Float32Array, sampleRate: number) => WasmKeyCandidateResult[];
|
|
1960
|
+
hasFfmpegSupport: () => boolean;
|
|
1961
|
+
version: () => string;
|
|
1962
|
+
capabilities: () => SonareCapabilities;
|
|
1963
|
+
capabilityCatalog: () => string;
|
|
1964
|
+
abiVersion: () => number;
|
|
1965
|
+
engineAbiVersion: () => number;
|
|
1966
|
+
voiceChangerAbiVersion: () => number;
|
|
1967
|
+
voiceCharacterPresetId: (preset: number) => string;
|
|
1968
|
+
realtimeVoiceChangerPresetConfig: (preset: number) => WasmRealtimeVoiceChangerPodConfig;
|
|
1969
|
+
|
|
1970
|
+
meteringPeakDb: (samples: Float32Array, sampleRate: number) => number;
|
|
1971
|
+
meteringRmsDb: (samples: Float32Array, sampleRate: number) => number;
|
|
1972
|
+
meteringSilenceRatio: (
|
|
1973
|
+
samples: Float32Array,
|
|
1974
|
+
sampleRate: number,
|
|
1975
|
+
thresholdDb: number,
|
|
1976
|
+
frameLength: number,
|
|
1977
|
+
hopLength: number,
|
|
1978
|
+
) => number;
|
|
1979
|
+
meteringCrestFactorDb: (samples: Float32Array, sampleRate: number) => number;
|
|
1980
|
+
meteringCrestFactorDbStereo: (
|
|
1981
|
+
left: Float32Array,
|
|
1982
|
+
right: Float32Array,
|
|
1983
|
+
sampleRate: number,
|
|
1984
|
+
) => number;
|
|
1985
|
+
meteringDcOffset: (samples: Float32Array, sampleRate: number) => number;
|
|
1986
|
+
meteringTruePeakDb: (
|
|
1987
|
+
samples: Float32Array,
|
|
1988
|
+
sampleRate: number,
|
|
1989
|
+
oversampleFactor: number,
|
|
1990
|
+
) => number;
|
|
1991
|
+
meteringDetectClipping: (
|
|
1992
|
+
samples: Float32Array,
|
|
1993
|
+
sampleRate: number,
|
|
1994
|
+
threshold: number,
|
|
1995
|
+
minRegionSamples: number,
|
|
1996
|
+
) => {
|
|
1997
|
+
clippedSamples: number;
|
|
1998
|
+
clippingRatio: number;
|
|
1999
|
+
maxClippedPeak: number;
|
|
2000
|
+
regions: Array<{ startSample: number; endSample: number; length: number; peak: number }>;
|
|
2001
|
+
};
|
|
2002
|
+
meteringDynamicRange: (
|
|
2003
|
+
samples: Float32Array,
|
|
2004
|
+
sampleRate: number,
|
|
2005
|
+
windowSec: number,
|
|
2006
|
+
hopSec: number,
|
|
2007
|
+
lowPercentile: number,
|
|
2008
|
+
highPercentile: number,
|
|
2009
|
+
) => {
|
|
2010
|
+
dynamicRangeDb: number;
|
|
2011
|
+
lowPercentileDb: number;
|
|
2012
|
+
highPercentileDb: number;
|
|
2013
|
+
windowRmsDb: Float32Array;
|
|
2014
|
+
};
|
|
2015
|
+
|
|
2016
|
+
meteringStereoCorrelation: (
|
|
2017
|
+
left: Float32Array,
|
|
2018
|
+
right: Float32Array,
|
|
2019
|
+
sampleRate: number,
|
|
2020
|
+
) => number;
|
|
2021
|
+
meteringStereoWidth: (left: Float32Array, right: Float32Array, sampleRate: number) => number;
|
|
2022
|
+
meteringVectorscope: (
|
|
2023
|
+
left: Float32Array,
|
|
2024
|
+
right: Float32Array,
|
|
2025
|
+
sampleRate: number,
|
|
2026
|
+
) => { mid: Float32Array; side: Float32Array };
|
|
2027
|
+
meteringVectorscopeDecimated: (
|
|
2028
|
+
left: Float32Array,
|
|
2029
|
+
right: Float32Array,
|
|
2030
|
+
sampleRate: number,
|
|
2031
|
+
maxPoints: number,
|
|
2032
|
+
) => { mid: Float32Array; side: Float32Array };
|
|
2033
|
+
meteringPhaseScope: (
|
|
2034
|
+
left: Float32Array,
|
|
2035
|
+
right: Float32Array,
|
|
2036
|
+
sampleRate: number,
|
|
2037
|
+
) => {
|
|
2038
|
+
mid: Float32Array;
|
|
2039
|
+
side: Float32Array;
|
|
2040
|
+
radius: Float32Array;
|
|
2041
|
+
angleRad: Float32Array;
|
|
2042
|
+
correlation: number;
|
|
2043
|
+
averageAbsAngleRad: number;
|
|
2044
|
+
maxRadius: number;
|
|
2045
|
+
};
|
|
2046
|
+
meteringPhaseScopeDecimated: (
|
|
2047
|
+
left: Float32Array,
|
|
2048
|
+
right: Float32Array,
|
|
2049
|
+
sampleRate: number,
|
|
2050
|
+
maxPoints: number,
|
|
2051
|
+
) => {
|
|
2052
|
+
mid: Float32Array;
|
|
2053
|
+
side: Float32Array;
|
|
2054
|
+
radius: Float32Array;
|
|
2055
|
+
angleRad: Float32Array;
|
|
2056
|
+
correlation: number;
|
|
2057
|
+
averageAbsAngleRad: number;
|
|
2058
|
+
maxRadius: number;
|
|
2059
|
+
};
|
|
2060
|
+
meteringSpectrum: (
|
|
2061
|
+
samples: Float32Array,
|
|
2062
|
+
sampleRate: number,
|
|
2063
|
+
options: {
|
|
2064
|
+
nFft?: number;
|
|
2065
|
+
applyOctaveSmoothing?: boolean;
|
|
2066
|
+
octaveFraction?: number;
|
|
2067
|
+
dbRef?: number;
|
|
2068
|
+
dbAmin?: number;
|
|
2069
|
+
},
|
|
2070
|
+
) => {
|
|
2071
|
+
frequencies: Float32Array;
|
|
2072
|
+
magnitude: Float32Array;
|
|
2073
|
+
power: Float32Array;
|
|
2074
|
+
db: Float32Array;
|
|
2075
|
+
nFft: number;
|
|
2076
|
+
sampleRate: number;
|
|
2077
|
+
};
|
|
2078
|
+
meteringSpectrumFrame: (
|
|
2079
|
+
samples: Float32Array,
|
|
2080
|
+
sampleRate: number,
|
|
2081
|
+
frameOffset: number,
|
|
2082
|
+
options: {
|
|
2083
|
+
nFft?: number;
|
|
2084
|
+
applyOctaveSmoothing?: boolean;
|
|
2085
|
+
octaveFraction?: number;
|
|
2086
|
+
dbRef?: number;
|
|
2087
|
+
dbAmin?: number;
|
|
2088
|
+
},
|
|
2089
|
+
) => {
|
|
2090
|
+
frequencies: Float32Array;
|
|
2091
|
+
magnitude: Float32Array;
|
|
2092
|
+
power: Float32Array;
|
|
2093
|
+
db: Float32Array;
|
|
2094
|
+
nFft: number;
|
|
2095
|
+
sampleRate: number;
|
|
2096
|
+
};
|
|
2097
|
+
waveformPeaks: (
|
|
2098
|
+
samples: Float32Array,
|
|
2099
|
+
channels: number,
|
|
2100
|
+
samplesPerBucket: number,
|
|
2101
|
+
) => {
|
|
2102
|
+
min: Float32Array;
|
|
2103
|
+
max: Float32Array;
|
|
2104
|
+
channels: number;
|
|
2105
|
+
bucketCount: number;
|
|
2106
|
+
samplesPerBucket: number;
|
|
2107
|
+
};
|
|
2108
|
+
waveformPeakPyramid: (
|
|
2109
|
+
samples: Float32Array,
|
|
2110
|
+
channels: number,
|
|
2111
|
+
samplesPerBucketLevels: number[],
|
|
2112
|
+
) => Array<{
|
|
2113
|
+
min: Float32Array;
|
|
2114
|
+
max: Float32Array;
|
|
2115
|
+
channels: number;
|
|
2116
|
+
bucketCount: number;
|
|
2117
|
+
samplesPerBucket: number;
|
|
2118
|
+
}>;
|
|
2119
|
+
|
|
2120
|
+
scaleQuantizeMidi: (
|
|
2121
|
+
root: number,
|
|
2122
|
+
modeMask: number,
|
|
2123
|
+
midi: number,
|
|
2124
|
+
referenceMidi: number,
|
|
2125
|
+
) => number;
|
|
2126
|
+
scaleCorrectionSemitones: (
|
|
2127
|
+
root: number,
|
|
2128
|
+
modeMask: number,
|
|
2129
|
+
midi: number,
|
|
2130
|
+
referenceMidi: number,
|
|
2131
|
+
) => number;
|
|
2132
|
+
scalePitchClassEnabled: (root: number, modeMask: number, pitchClass: number) => boolean;
|
|
2133
|
+
|
|
2134
|
+
// Effects
|
|
2135
|
+
hpss: (
|
|
2136
|
+
samples: Float32Array,
|
|
2137
|
+
sampleRate: number,
|
|
2138
|
+
kernelHarmonic: number,
|
|
2139
|
+
kernelPercussive: number,
|
|
2140
|
+
) => WasmHpssResult;
|
|
2141
|
+
hpssEx: (
|
|
2142
|
+
samples: Float32Array,
|
|
2143
|
+
sampleRate: number,
|
|
2144
|
+
kernelHarmonic: number,
|
|
2145
|
+
kernelPercussive: number,
|
|
2146
|
+
nFft: number,
|
|
2147
|
+
hopLength: number,
|
|
2148
|
+
hardMask: boolean,
|
|
2149
|
+
) => WasmHpssResult;
|
|
2150
|
+
hpssWithResidual: (
|
|
2151
|
+
samples: Float32Array,
|
|
2152
|
+
sampleRate: number,
|
|
2153
|
+
kernelHarmonic: number,
|
|
2154
|
+
kernelPercussive: number,
|
|
2155
|
+
) => WasmHpssWithResidualResult;
|
|
2156
|
+
hpssWithResidualEx: (
|
|
2157
|
+
samples: Float32Array,
|
|
2158
|
+
sampleRate: number,
|
|
2159
|
+
kernelHarmonic: number,
|
|
2160
|
+
kernelPercussive: number,
|
|
2161
|
+
nFft: number,
|
|
2162
|
+
hopLength: number,
|
|
2163
|
+
hardMask: boolean,
|
|
2164
|
+
) => WasmHpssWithResidualResult;
|
|
2165
|
+
decompose: (
|
|
2166
|
+
s: Float32Array,
|
|
2167
|
+
nFeatures: number,
|
|
2168
|
+
nFrames: number,
|
|
2169
|
+
nComponents: number,
|
|
2170
|
+
nIter: number,
|
|
2171
|
+
beta: number,
|
|
2172
|
+
) => WasmDecomposeResult;
|
|
2173
|
+
decomposeWithInit: (
|
|
2174
|
+
s: Float32Array,
|
|
2175
|
+
nFeatures: number,
|
|
2176
|
+
nFrames: number,
|
|
2177
|
+
nComponents: number,
|
|
2178
|
+
nIter: number,
|
|
2179
|
+
beta: number,
|
|
2180
|
+
init: string,
|
|
2181
|
+
) => WasmDecomposeResult;
|
|
2182
|
+
nnFilter: (
|
|
2183
|
+
s: Float32Array,
|
|
2184
|
+
nFeatures: number,
|
|
2185
|
+
nFrames: number,
|
|
2186
|
+
aggregate: string,
|
|
2187
|
+
k: number,
|
|
2188
|
+
width: number,
|
|
2189
|
+
) => WasmMatrix2dResult;
|
|
2190
|
+
remix: (
|
|
2191
|
+
samples: Float32Array,
|
|
2192
|
+
intervals: Int32Array,
|
|
2193
|
+
sampleRate: number,
|
|
2194
|
+
alignZeros: boolean,
|
|
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;
|
|
2238
|
+
phaseVocoder: (
|
|
2239
|
+
samples: Float32Array,
|
|
2240
|
+
sampleRate: number,
|
|
2241
|
+
rate: number,
|
|
2242
|
+
nFft: number,
|
|
2243
|
+
hopLength: number,
|
|
2244
|
+
) => Float32Array;
|
|
2245
|
+
harmonic: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
2246
|
+
percussive: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
2247
|
+
timeStretch: (samples: Float32Array, sampleRate: number, rate: number) => Float32Array;
|
|
2248
|
+
timeStretchEx: (
|
|
2249
|
+
samples: Float32Array,
|
|
2250
|
+
sampleRate: number,
|
|
2251
|
+
rate: number,
|
|
2252
|
+
nFft: number,
|
|
2253
|
+
hopLength: number,
|
|
2254
|
+
) => Float32Array;
|
|
2255
|
+
pitchShift: (samples: Float32Array, sampleRate: number, semitones: number) => Float32Array;
|
|
2256
|
+
pitchShiftEx: (
|
|
2257
|
+
samples: Float32Array,
|
|
2258
|
+
sampleRate: number,
|
|
2259
|
+
semitones: number,
|
|
2260
|
+
nFft: number,
|
|
2261
|
+
hopLength: number,
|
|
2262
|
+
) => Float32Array;
|
|
2263
|
+
pitchCorrectToMidi: (
|
|
2264
|
+
samples: Float32Array,
|
|
2265
|
+
sampleRate: number,
|
|
2266
|
+
currentMidi: number,
|
|
2267
|
+
targetMidi: number,
|
|
2268
|
+
) => Float32Array;
|
|
2269
|
+
pitchCorrectToMidiTimevarying: (
|
|
2270
|
+
samples: Float32Array,
|
|
2271
|
+
sampleRate: number,
|
|
2272
|
+
f0Hz: Float32Array,
|
|
2273
|
+
targetMidi: number,
|
|
2274
|
+
hopLength: number,
|
|
2275
|
+
voiced?: Float32Array,
|
|
2276
|
+
voicedProb?: Float32Array,
|
|
2277
|
+
) => Float32Array;
|
|
2278
|
+
pitchCorrectTimevarying: (
|
|
2279
|
+
samples: Float32Array,
|
|
2280
|
+
sampleRate: number,
|
|
2281
|
+
f0Hz: Float32Array,
|
|
2282
|
+
hopLength: number,
|
|
2283
|
+
options: {
|
|
2284
|
+
mode?: string;
|
|
2285
|
+
targetMidi?: number;
|
|
2286
|
+
scaleRoot?: number;
|
|
2287
|
+
scaleModeMask?: number;
|
|
2288
|
+
referenceMidi?: number;
|
|
2289
|
+
retuneAmount?: number;
|
|
2290
|
+
maxCorrectionSemitones?: number;
|
|
2291
|
+
retuneSpeedMs?: number;
|
|
2292
|
+
vibratoThresholdCents?: number;
|
|
2293
|
+
voiced?: Float32Array;
|
|
2294
|
+
voicedProb?: Float32Array;
|
|
2295
|
+
},
|
|
2296
|
+
) => Float32Array;
|
|
2297
|
+
noteStretch: (
|
|
2298
|
+
samples: Float32Array,
|
|
2299
|
+
sampleRate: number,
|
|
2300
|
+
onsetSample: number,
|
|
2301
|
+
offsetSample: number,
|
|
2302
|
+
stretchRatio: number,
|
|
2303
|
+
) => Float32Array;
|
|
2304
|
+
noteMove: (
|
|
2305
|
+
samples: Float32Array,
|
|
2306
|
+
sampleRate: number,
|
|
2307
|
+
onsetSample: number,
|
|
2308
|
+
offsetSample: number,
|
|
2309
|
+
targetOnsetSample: number,
|
|
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;
|
|
2419
|
+
voiceChange: (
|
|
2420
|
+
samples: Float32Array,
|
|
2421
|
+
sampleRate: number,
|
|
2422
|
+
pitchSemitones: number,
|
|
2423
|
+
formantFactor: number,
|
|
2424
|
+
) => Float32Array;
|
|
2425
|
+
voiceChangeRealtime: (
|
|
2426
|
+
samples: Float32Array,
|
|
2427
|
+
sampleRate: number,
|
|
2428
|
+
preset: string,
|
|
2429
|
+
channels: number,
|
|
2430
|
+
) => Float32Array;
|
|
2431
|
+
normalize: (samples: Float32Array, sampleRate: number, targetDb: number) => Float32Array;
|
|
2432
|
+
normalizeEx: (
|
|
2433
|
+
samples: Float32Array,
|
|
2434
|
+
sampleRate: number,
|
|
2435
|
+
targetDb: number,
|
|
2436
|
+
mode: string,
|
|
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 };
|
|
2445
|
+
mastering: (
|
|
2446
|
+
samples: Float32Array,
|
|
2447
|
+
sampleRate: number,
|
|
2448
|
+
targetLufs: number,
|
|
2449
|
+
ceilingDb: number,
|
|
2450
|
+
truePeakOversample: number,
|
|
2451
|
+
releaseMs: number,
|
|
2452
|
+
applyGainAtInputRate: boolean,
|
|
2453
|
+
) => WasmMasteringResult;
|
|
2454
|
+
masteringProcessorNames: () => string[];
|
|
2455
|
+
masteringPairProcessorNames: () => string[];
|
|
2456
|
+
masteringPairAnalysisNames: () => string[];
|
|
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 };
|
|
2469
|
+
masteringProcess: (
|
|
2470
|
+
processorName: string,
|
|
2471
|
+
samples: Float32Array,
|
|
2472
|
+
sampleRate: number,
|
|
2473
|
+
params: Record<string, number | boolean>,
|
|
2474
|
+
) => WasmMasteringResult;
|
|
2475
|
+
masteringProcessStereo: (
|
|
2476
|
+
processorName: string,
|
|
2477
|
+
left: Float32Array,
|
|
2478
|
+
right: Float32Array,
|
|
2479
|
+
sampleRate: number,
|
|
2480
|
+
params: Record<string, number | boolean>,
|
|
2481
|
+
) => WasmMasteringStereoResult;
|
|
2482
|
+
masteringPairProcess: (
|
|
2483
|
+
processorName: string,
|
|
2484
|
+
source: Float32Array,
|
|
2485
|
+
reference: Float32Array,
|
|
2486
|
+
sampleRate: number,
|
|
2487
|
+
params: Record<string, number | boolean>,
|
|
2488
|
+
) => WasmMasteringResult;
|
|
2489
|
+
masteringPairAnalyze: (
|
|
2490
|
+
analysisName: string,
|
|
2491
|
+
source: Float32Array,
|
|
2492
|
+
reference: Float32Array,
|
|
2493
|
+
sampleRate: number,
|
|
2494
|
+
params: Record<string, number | boolean>,
|
|
2495
|
+
) => string;
|
|
2496
|
+
masteringAbMatchLoudness: (
|
|
2497
|
+
source: Float32Array,
|
|
2498
|
+
reference: Float32Array,
|
|
2499
|
+
sampleRate: number,
|
|
2500
|
+
) => WasmLoudnessMatchResult;
|
|
2501
|
+
masteringStereoAnalyze: (
|
|
2502
|
+
analysisName: string,
|
|
2503
|
+
left: Float32Array,
|
|
2504
|
+
right: Float32Array,
|
|
2505
|
+
sampleRate: number,
|
|
2506
|
+
params: Record<string, number | boolean>,
|
|
2507
|
+
) => string;
|
|
2508
|
+
masteringAssistantSuggest: (
|
|
2509
|
+
samples: Float32Array,
|
|
2510
|
+
sampleRate: number,
|
|
2511
|
+
params: Record<string, number | boolean | string>,
|
|
2512
|
+
) => string;
|
|
2513
|
+
masteringAssistantSuggestChain: (
|
|
2514
|
+
samples: Float32Array,
|
|
2515
|
+
sampleRate: number,
|
|
2516
|
+
params: Record<string, number | boolean | string>,
|
|
2517
|
+
) => Record<string, number | boolean>;
|
|
2518
|
+
masteringAudioProfile: (
|
|
2519
|
+
samples: Float32Array,
|
|
2520
|
+
sampleRate: number,
|
|
2521
|
+
params: Record<string, number | boolean>,
|
|
2522
|
+
) => string;
|
|
2523
|
+
masteringStreamingPreview: (
|
|
2524
|
+
samples: Float32Array,
|
|
2525
|
+
sampleRate: number,
|
|
2526
|
+
platforms: Array<{ name: string; targetLufs: number; ceilingDb: number }>,
|
|
2527
|
+
) => string;
|
|
2528
|
+
masteringAssistantSuggestStereo: (
|
|
2529
|
+
left: Float32Array,
|
|
2530
|
+
right: Float32Array,
|
|
2531
|
+
sampleRate: number,
|
|
2532
|
+
params: Record<string, number | boolean | string>,
|
|
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>;
|
|
2540
|
+
masteringAudioProfileStereo: (
|
|
2541
|
+
left: Float32Array,
|
|
2542
|
+
right: Float32Array,
|
|
2543
|
+
sampleRate: number,
|
|
2544
|
+
params: Record<string, number | boolean>,
|
|
2545
|
+
) => string;
|
|
2546
|
+
masteringStreamingPreviewStereo: (
|
|
2547
|
+
left: Float32Array,
|
|
2548
|
+
right: Float32Array,
|
|
2549
|
+
sampleRate: number,
|
|
2550
|
+
platforms: Array<{ name: string; targetLufs: number; ceilingDb: number }>,
|
|
2551
|
+
) => string;
|
|
2552
|
+
masteringRepairDeclick: (
|
|
2553
|
+
samples: Float32Array,
|
|
2554
|
+
sampleRate: number,
|
|
2555
|
+
options: object,
|
|
2556
|
+
) => Float32Array;
|
|
2557
|
+
masteringRepairDeclickStereo: (
|
|
2558
|
+
left: Float32Array,
|
|
2559
|
+
right: Float32Array,
|
|
2560
|
+
sampleRate: number,
|
|
2561
|
+
options: object,
|
|
2562
|
+
) => WasmDeclickStereoResult;
|
|
2563
|
+
masteringRepairDenoiseClassical: (
|
|
2564
|
+
samples: Float32Array,
|
|
2565
|
+
sampleRate: number,
|
|
2566
|
+
options: object,
|
|
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;
|
|
2579
|
+
masteringRepairDeclip: (
|
|
2580
|
+
samples: Float32Array,
|
|
2581
|
+
sampleRate: number,
|
|
2582
|
+
options: object,
|
|
2583
|
+
) => Float32Array;
|
|
2584
|
+
masteringRepairDeclipStereo: (
|
|
2585
|
+
left: Float32Array,
|
|
2586
|
+
right: Float32Array,
|
|
2587
|
+
sampleRate: number,
|
|
2588
|
+
options: object,
|
|
2589
|
+
) => WasmDeclipStereoResult;
|
|
2590
|
+
masteringRepairDecrackle: (
|
|
2591
|
+
samples: Float32Array,
|
|
2592
|
+
sampleRate: number,
|
|
2593
|
+
options: object,
|
|
2594
|
+
) => Float32Array;
|
|
2595
|
+
masteringRepairDecrackleStereo: (
|
|
2596
|
+
left: Float32Array,
|
|
2597
|
+
right: Float32Array,
|
|
2598
|
+
sampleRate: number,
|
|
2599
|
+
options: object,
|
|
2600
|
+
) => WasmDecrackleStereoResult;
|
|
2601
|
+
masteringRepairDehum: (
|
|
2602
|
+
samples: Float32Array,
|
|
2603
|
+
sampleRate: number,
|
|
2604
|
+
options: object,
|
|
2605
|
+
) => Float32Array;
|
|
2606
|
+
masteringRepairDehumStereo: (
|
|
2607
|
+
left: Float32Array,
|
|
2608
|
+
right: Float32Array,
|
|
2609
|
+
sampleRate: number,
|
|
2610
|
+
options: object,
|
|
2611
|
+
) => WasmDehumStereoResult;
|
|
2612
|
+
masteringRepairDereverbClassical: (
|
|
2613
|
+
samples: Float32Array,
|
|
2614
|
+
sampleRate: number,
|
|
2615
|
+
options: object,
|
|
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;
|
|
2632
|
+
masteringRepairTrimSilence: (
|
|
2633
|
+
samples: Float32Array,
|
|
2634
|
+
sampleRate: number,
|
|
2635
|
+
options: object,
|
|
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;
|
|
2685
|
+
masteringDynamicsCompressor: (
|
|
2686
|
+
samples: Float32Array,
|
|
2687
|
+
sampleRate: number,
|
|
2688
|
+
options: object,
|
|
2689
|
+
) => { samples: Float32Array; latencySamples: number };
|
|
2690
|
+
masteringDynamicsGate: (
|
|
2691
|
+
samples: Float32Array,
|
|
2692
|
+
sampleRate: number,
|
|
2693
|
+
options: object,
|
|
2694
|
+
) => { samples: Float32Array; latencySamples: number };
|
|
2695
|
+
masteringDynamicsTransientShaper: (
|
|
2696
|
+
samples: Float32Array,
|
|
2697
|
+
sampleRate: number,
|
|
2698
|
+
options: object,
|
|
2699
|
+
) => { samples: Float32Array; latencySamples: number };
|
|
2700
|
+
masteringChain: (
|
|
2701
|
+
samples: Float32Array,
|
|
2702
|
+
sampleRate: number,
|
|
2703
|
+
config: Record<string, unknown>,
|
|
2704
|
+
) => WasmMasteringChainResult;
|
|
2705
|
+
masteringChainStereo: (
|
|
2706
|
+
left: Float32Array,
|
|
2707
|
+
right: Float32Array,
|
|
2708
|
+
sampleRate: number,
|
|
2709
|
+
config: Record<string, unknown>,
|
|
2710
|
+
) => WasmMasteringStereoChainResult;
|
|
2711
|
+
masteringChainWithProgress: (
|
|
2712
|
+
samples: Float32Array,
|
|
2713
|
+
sampleRate: number,
|
|
2714
|
+
config: Record<string, unknown>,
|
|
2715
|
+
progressCallback: ProgressCallback | null,
|
|
2716
|
+
cancelCallback: (() => boolean) | null,
|
|
2717
|
+
) => WasmMasteringChainResult;
|
|
2718
|
+
masteringChainStereoWithProgress: (
|
|
2719
|
+
left: Float32Array,
|
|
2720
|
+
right: Float32Array,
|
|
2721
|
+
sampleRate: number,
|
|
2722
|
+
config: Record<string, unknown>,
|
|
2723
|
+
progressCallback: ProgressCallback | null,
|
|
2724
|
+
cancelCallback: (() => boolean) | null,
|
|
2725
|
+
) => WasmMasteringStereoChainResult;
|
|
2726
|
+
masteringPresetNames: () => string[];
|
|
2727
|
+
masteringPresetParams: (preset: string) => Record<string, number | boolean>;
|
|
2728
|
+
masteringPlatformNames: () => string[];
|
|
2729
|
+
masterAudio: (
|
|
2730
|
+
presetName: string,
|
|
2731
|
+
samples: Float32Array,
|
|
2732
|
+
sampleRate: number,
|
|
2733
|
+
overrides: Record<string, number | boolean> | null,
|
|
2734
|
+
) => WasmMasteringChainResult;
|
|
2735
|
+
masterAudioStereo: (
|
|
2736
|
+
presetName: string,
|
|
2737
|
+
left: Float32Array,
|
|
2738
|
+
right: Float32Array,
|
|
2739
|
+
sampleRate: number,
|
|
2740
|
+
overrides: Record<string, number | boolean> | null,
|
|
2741
|
+
) => WasmMasteringStereoChainResult;
|
|
2742
|
+
masterAudioWithProgress: (
|
|
2743
|
+
presetName: string,
|
|
2744
|
+
samples: Float32Array,
|
|
2745
|
+
sampleRate: number,
|
|
2746
|
+
overrides: Record<string, number | boolean> | null,
|
|
2747
|
+
progressCallback: ProgressCallback | null,
|
|
2748
|
+
cancelCallback: (() => boolean) | null,
|
|
2749
|
+
) => WasmMasteringChainResult;
|
|
2750
|
+
masterAudioStereoWithProgress: (
|
|
2751
|
+
presetName: string,
|
|
2752
|
+
left: Float32Array,
|
|
2753
|
+
right: Float32Array,
|
|
2754
|
+
sampleRate: number,
|
|
2755
|
+
overrides: Record<string, number | boolean> | null,
|
|
2756
|
+
progressCallback: ProgressCallback | null,
|
|
2757
|
+
cancelCallback: (() => boolean) | null,
|
|
2758
|
+
) => WasmMasteringStereoChainResult;
|
|
2759
|
+
mixingScenePresetNames: () => string[];
|
|
2760
|
+
mixingScenePresetJson: (presetName: string) => string;
|
|
2761
|
+
mixStereo: (
|
|
2762
|
+
leftChannels: Float32Array[],
|
|
2763
|
+
rightChannels: Float32Array[],
|
|
2764
|
+
sampleRate: number,
|
|
2765
|
+
options: Record<string, unknown>,
|
|
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;
|
|
2785
|
+
trim: (samples: Float32Array, sampleRate: number, thresholdDb: number) => Float32Array;
|
|
2786
|
+
trimEx: (
|
|
2787
|
+
samples: Float32Array,
|
|
2788
|
+
sampleRate: number,
|
|
2789
|
+
thresholdDb: number,
|
|
2790
|
+
frameLength: number,
|
|
2791
|
+
hopLength: number,
|
|
2792
|
+
) => Float32Array;
|
|
2793
|
+
spectralEdit: (
|
|
2794
|
+
samples: Float32Array,
|
|
2795
|
+
sampleRate: number,
|
|
2796
|
+
ops: SpectralRegionOp[],
|
|
2797
|
+
options: Record<string, unknown>,
|
|
2798
|
+
) => Float32Array;
|
|
2799
|
+
|
|
2800
|
+
// Features - Spectrogram
|
|
2801
|
+
stft: (
|
|
2802
|
+
samples: Float32Array,
|
|
2803
|
+
sampleRate: number,
|
|
2804
|
+
nFft: number,
|
|
2805
|
+
hopLength: number,
|
|
2806
|
+
) => WasmStftResult;
|
|
2807
|
+
stftDb: (
|
|
2808
|
+
samples: Float32Array,
|
|
2809
|
+
sampleRate: number,
|
|
2810
|
+
nFft: number,
|
|
2811
|
+
hopLength: number,
|
|
2812
|
+
) => WasmStftDbResult;
|
|
2813
|
+
|
|
2814
|
+
// Features - Mel Spectrogram
|
|
2815
|
+
melSpectrogram: (
|
|
2816
|
+
samples: Float32Array,
|
|
2817
|
+
sampleRate: number,
|
|
2818
|
+
nFft: number,
|
|
2819
|
+
hopLength: number,
|
|
2820
|
+
nMels: number,
|
|
2821
|
+
fmin: number,
|
|
2822
|
+
fmax: number,
|
|
2823
|
+
htk: boolean,
|
|
2824
|
+
) => WasmMelResult;
|
|
2825
|
+
mfcc: (
|
|
2826
|
+
samples: Float32Array,
|
|
2827
|
+
sampleRate: number,
|
|
2828
|
+
nFft: number,
|
|
2829
|
+
hopLength: number,
|
|
2830
|
+
nMels: number,
|
|
2831
|
+
nMfcc: number,
|
|
2832
|
+
fmin: number,
|
|
2833
|
+
fmax: number,
|
|
2834
|
+
htk: boolean,
|
|
2835
|
+
lifter: number,
|
|
2836
|
+
) => WasmMfccResult;
|
|
2837
|
+
melDelta: (
|
|
2838
|
+
features: Float32Array,
|
|
2839
|
+
nFeatures: number,
|
|
2840
|
+
nFrames: number,
|
|
2841
|
+
width: number,
|
|
2842
|
+
) => Float32Array;
|
|
2843
|
+
reassignedSpectrogram: (
|
|
2844
|
+
samples: Float32Array,
|
|
2845
|
+
sampleRate: number,
|
|
2846
|
+
nFft: number,
|
|
2847
|
+
hopLength: number,
|
|
2848
|
+
refPower: number,
|
|
2849
|
+
fillNan: boolean,
|
|
2850
|
+
) => {
|
|
2851
|
+
nBins: number;
|
|
2852
|
+
nFrames: number;
|
|
2853
|
+
magnitude: Float32Array;
|
|
2854
|
+
times: Float32Array;
|
|
2855
|
+
frequencies: Float32Array;
|
|
2856
|
+
};
|
|
2857
|
+
segmentCrossSimilarity: (
|
|
2858
|
+
x: Float32Array,
|
|
2859
|
+
xRows: number,
|
|
2860
|
+
xCols: number,
|
|
2861
|
+
y: Float32Array,
|
|
2862
|
+
yRows: number,
|
|
2863
|
+
yCols: number,
|
|
2864
|
+
k: number,
|
|
2865
|
+
metric: string,
|
|
2866
|
+
mode: string,
|
|
2867
|
+
) => WasmSegmentMatrixResult;
|
|
2868
|
+
segmentRecurrenceMatrix: (
|
|
2869
|
+
data: Float32Array,
|
|
2870
|
+
rows: number,
|
|
2871
|
+
cols: number,
|
|
2872
|
+
k: number,
|
|
2873
|
+
width: number,
|
|
2874
|
+
sym: boolean,
|
|
2875
|
+
metric: string,
|
|
2876
|
+
mode: string,
|
|
2877
|
+
) => WasmSegmentMatrixResult;
|
|
2878
|
+
segmentRecurrenceToLag: (
|
|
2879
|
+
recurrence: Float32Array,
|
|
2880
|
+
n: number,
|
|
2881
|
+
pad: boolean,
|
|
2882
|
+
) => WasmSegmentMatrixResult;
|
|
2883
|
+
segmentLagToRecurrence: (
|
|
2884
|
+
lag: Float32Array,
|
|
2885
|
+
rows: number,
|
|
2886
|
+
lags: number,
|
|
2887
|
+
) => WasmSegmentMatrixResult;
|
|
2888
|
+
segmentSubsegment: (
|
|
2889
|
+
data: Float32Array,
|
|
2890
|
+
rows: number,
|
|
2891
|
+
cols: number,
|
|
2892
|
+
boundaries: Int32Array,
|
|
2893
|
+
nSegments: number,
|
|
2894
|
+
) => Int32Array;
|
|
2895
|
+
segmentAgglomerative: (
|
|
2896
|
+
data: Float32Array,
|
|
2897
|
+
rows: number,
|
|
2898
|
+
cols: number,
|
|
2899
|
+
k: number,
|
|
2900
|
+
linkage: string,
|
|
2901
|
+
) => Int32Array;
|
|
2902
|
+
segmentPathEnhance: (
|
|
2903
|
+
recurrence: Float32Array,
|
|
2904
|
+
n: number,
|
|
2905
|
+
win: number,
|
|
2906
|
+
maxRatio: number,
|
|
2907
|
+
minRatio: number,
|
|
2908
|
+
nFilters: number,
|
|
2909
|
+
) => WasmSegmentMatrixResult;
|
|
2910
|
+
|
|
2911
|
+
// Features - Inverse reconstruction
|
|
2912
|
+
melToStft: (
|
|
2913
|
+
melPower: Float32Array,
|
|
2914
|
+
nMels: number,
|
|
2915
|
+
nFrames: number,
|
|
2916
|
+
sampleRate: number,
|
|
2917
|
+
nFft: number,
|
|
2918
|
+
fmin: number,
|
|
2919
|
+
fmax: number,
|
|
2920
|
+
htk: boolean,
|
|
2921
|
+
) => WasmStftPowerResult;
|
|
2922
|
+
melToAudio: (
|
|
2923
|
+
melPower: Float32Array,
|
|
2924
|
+
nMels: number,
|
|
2925
|
+
nFrames: number,
|
|
2926
|
+
sampleRate: number,
|
|
2927
|
+
nFft: number,
|
|
2928
|
+
hopLength: number,
|
|
2929
|
+
fmin: number,
|
|
2930
|
+
fmax: number,
|
|
2931
|
+
nIter: number,
|
|
2932
|
+
htk: boolean,
|
|
2933
|
+
) => Float32Array;
|
|
2934
|
+
griffinLim: (
|
|
2935
|
+
magnitude: Float32Array,
|
|
2936
|
+
nBins: number,
|
|
2937
|
+
nFrames: number,
|
|
2938
|
+
sampleRate: number,
|
|
2939
|
+
nFft: number,
|
|
2940
|
+
hopLength: number,
|
|
2941
|
+
nIter: number,
|
|
2942
|
+
momentum: number,
|
|
2943
|
+
) => Float32Array;
|
|
2944
|
+
mfccToMel: (
|
|
2945
|
+
mfcc: Float32Array,
|
|
2946
|
+
nMfcc: number,
|
|
2947
|
+
nFrames: number,
|
|
2948
|
+
nMels: number,
|
|
2949
|
+
lifter: number,
|
|
2950
|
+
) => WasmMelPowerResult;
|
|
2951
|
+
mfccToAudio: (
|
|
2952
|
+
mfcc: Float32Array,
|
|
2953
|
+
nMfcc: number,
|
|
2954
|
+
nFrames: number,
|
|
2955
|
+
nMels: number,
|
|
2956
|
+
sampleRate: number,
|
|
2957
|
+
nFft: number,
|
|
2958
|
+
hopLength: number,
|
|
2959
|
+
fmin: number,
|
|
2960
|
+
fmax: number,
|
|
2961
|
+
nIter: number,
|
|
2962
|
+
htk: boolean,
|
|
2963
|
+
lifter: number,
|
|
2964
|
+
) => Float32Array;
|
|
2965
|
+
|
|
2966
|
+
// Features - Chroma
|
|
2967
|
+
chroma: (
|
|
2968
|
+
samples: Float32Array,
|
|
2969
|
+
sampleRate: number,
|
|
2970
|
+
nFft: number,
|
|
2971
|
+
hopLength: number,
|
|
2972
|
+
) => WasmChromaResult;
|
|
2973
|
+
|
|
2974
|
+
// Features - Spectral
|
|
2975
|
+
spectralCentroid: (
|
|
2976
|
+
samples: Float32Array,
|
|
2977
|
+
sampleRate: number,
|
|
2978
|
+
nFft: number,
|
|
2979
|
+
hopLength: number,
|
|
2980
|
+
) => Float32Array;
|
|
2981
|
+
spectralBandwidth: (
|
|
2982
|
+
samples: Float32Array,
|
|
2983
|
+
sampleRate: number,
|
|
2984
|
+
nFft: number,
|
|
2985
|
+
hopLength: number,
|
|
2986
|
+
p: number,
|
|
2987
|
+
) => Float32Array;
|
|
2988
|
+
spectralRolloff: (
|
|
2989
|
+
samples: Float32Array,
|
|
2990
|
+
sampleRate: number,
|
|
2991
|
+
nFft: number,
|
|
2992
|
+
hopLength: number,
|
|
2993
|
+
rollPercent: number,
|
|
2994
|
+
) => Float32Array;
|
|
2995
|
+
spectralFlatness: (
|
|
2996
|
+
samples: Float32Array,
|
|
2997
|
+
sampleRate: number,
|
|
2998
|
+
nFft: number,
|
|
2999
|
+
hopLength: number,
|
|
3000
|
+
) => Float32Array;
|
|
3001
|
+
spectralFlux: (
|
|
3002
|
+
samples: Float32Array,
|
|
3003
|
+
sampleRate: number,
|
|
3004
|
+
nFft: number,
|
|
3005
|
+
hopLength: number,
|
|
3006
|
+
lag: number,
|
|
3007
|
+
) => Float32Array;
|
|
3008
|
+
zeroCrossingRate: (
|
|
3009
|
+
samples: Float32Array,
|
|
3010
|
+
sampleRate: number,
|
|
3011
|
+
frameLength: number,
|
|
3012
|
+
hopLength: number,
|
|
3013
|
+
) => Float32Array;
|
|
3014
|
+
rmsEnergy: (
|
|
3015
|
+
samples: Float32Array,
|
|
3016
|
+
sampleRate: number,
|
|
3017
|
+
frameLength: number,
|
|
3018
|
+
hopLength: number,
|
|
3019
|
+
) => Float32Array;
|
|
3020
|
+
spectralContrast: (
|
|
3021
|
+
samples: Float32Array,
|
|
3022
|
+
sampleRate: number,
|
|
3023
|
+
nFft: number,
|
|
3024
|
+
hopLength: number,
|
|
3025
|
+
nBands: number,
|
|
3026
|
+
fmin: number,
|
|
3027
|
+
quantile: number,
|
|
3028
|
+
) => WasmMatrix2dResult;
|
|
3029
|
+
polyFeatures: (
|
|
3030
|
+
samples: Float32Array,
|
|
3031
|
+
sampleRate: number,
|
|
3032
|
+
nFft: number,
|
|
3033
|
+
hopLength: number,
|
|
3034
|
+
order: number,
|
|
3035
|
+
) => WasmMatrix2dResult;
|
|
3036
|
+
zeroCrossings: (
|
|
3037
|
+
samples: Float32Array,
|
|
3038
|
+
threshold: number,
|
|
3039
|
+
refMagnitude: boolean,
|
|
3040
|
+
pad: boolean,
|
|
3041
|
+
zeroPos: boolean,
|
|
3042
|
+
) => Int32Array;
|
|
3043
|
+
pitchTuning: (frequencies: Float32Array, resolution: number, binsPerOctave: number) => number;
|
|
3044
|
+
estimateTuning: (
|
|
3045
|
+
samples: Float32Array,
|
|
3046
|
+
sampleRate: number,
|
|
3047
|
+
nFft: number,
|
|
3048
|
+
hopLength: number,
|
|
3049
|
+
resolution: number,
|
|
3050
|
+
binsPerOctave: number,
|
|
3051
|
+
) => number;
|
|
3052
|
+
|
|
3053
|
+
// Features - Pitch
|
|
3054
|
+
pitchYin: (
|
|
3055
|
+
samples: Float32Array,
|
|
3056
|
+
sampleRate: number,
|
|
3057
|
+
frameLength: number,
|
|
3058
|
+
hopLength: number,
|
|
3059
|
+
fmin: number,
|
|
3060
|
+
fmax: number,
|
|
3061
|
+
threshold: number,
|
|
3062
|
+
fillNa: boolean,
|
|
3063
|
+
) => WasmPitchResult;
|
|
3064
|
+
pitchPyin: (
|
|
3065
|
+
samples: Float32Array,
|
|
3066
|
+
sampleRate: number,
|
|
3067
|
+
frameLength: number,
|
|
3068
|
+
hopLength: number,
|
|
3069
|
+
fmin: number,
|
|
3070
|
+
fmax: number,
|
|
3071
|
+
threshold: number,
|
|
3072
|
+
fillNa: boolean,
|
|
3073
|
+
) => WasmPitchResult;
|
|
3074
|
+
piptrack: (
|
|
3075
|
+
samples: Float32Array,
|
|
3076
|
+
sampleRate: number,
|
|
3077
|
+
nFft: number,
|
|
3078
|
+
hopLength: number,
|
|
3079
|
+
fmin: number,
|
|
3080
|
+
fmax: number,
|
|
3081
|
+
threshold: number,
|
|
3082
|
+
) => {
|
|
3083
|
+
nBins: number;
|
|
3084
|
+
nFrames: number;
|
|
3085
|
+
pitches: Float32Array;
|
|
3086
|
+
magnitudes: Float32Array;
|
|
3087
|
+
};
|
|
3088
|
+
noteSegments: (
|
|
3089
|
+
f0Hz: Float32Array,
|
|
3090
|
+
voicedProb: Float32Array,
|
|
3091
|
+
frameRate: number,
|
|
3092
|
+
options: {
|
|
3093
|
+
segmentationThresholdCents?: number;
|
|
3094
|
+
minNoteMs?: number;
|
|
3095
|
+
referenceHz?: number;
|
|
3096
|
+
voicedThreshold?: number;
|
|
3097
|
+
},
|
|
3098
|
+
) => WasmNoteSegment[];
|
|
3099
|
+
|
|
3100
|
+
// Core - Conversion
|
|
3101
|
+
hzToMel: (hz: number) => number;
|
|
3102
|
+
melToHz: (mel: number) => number;
|
|
3103
|
+
hzToMidi: (hz: number) => number;
|
|
3104
|
+
midiToHz: (midi: number) => number;
|
|
3105
|
+
hzToNote: (hz: number) => string;
|
|
3106
|
+
noteToHz: (note: string) => number;
|
|
3107
|
+
framesToTime: (frames: number, sr: number, hopLength: number) => number;
|
|
3108
|
+
timeToFrames: (time: number, sr: number, hopLength: number) => number;
|
|
3109
|
+
framesToSamples: (frames: number, hopLength: number, nFft: number) => number;
|
|
3110
|
+
samplesToFrames: (samples: number, hopLength: number, nFft: number) => number;
|
|
3111
|
+
powerToDb: (values: Float32Array, ref: number, amin: number, topDb: number) => Float32Array;
|
|
3112
|
+
amplitudeToDb: (values: Float32Array, ref: number, amin: number, topDb: number) => Float32Array;
|
|
3113
|
+
dbToPower: (values: Float32Array, ref: number) => Float32Array;
|
|
3114
|
+
dbToAmplitude: (values: Float32Array, ref: number) => Float32Array;
|
|
3115
|
+
preemphasis: (samples: Float32Array, coef: number, zi?: number | null) => Float32Array;
|
|
3116
|
+
deemphasis: (samples: Float32Array, coef: number, zi?: number | null) => Float32Array;
|
|
3117
|
+
trimSilence: (
|
|
3118
|
+
samples: Float32Array,
|
|
3119
|
+
topDb: number,
|
|
3120
|
+
frameLength: number,
|
|
3121
|
+
hopLength: number,
|
|
3122
|
+
) => WasmTrimResult;
|
|
3123
|
+
splitSilence: (
|
|
3124
|
+
samples: Float32Array,
|
|
3125
|
+
topDb: number,
|
|
3126
|
+
frameLength: number,
|
|
3127
|
+
hopLength: number,
|
|
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;
|
|
3141
|
+
frameSignal: (samples: Float32Array, frameLength: number, hopLength: number) => WasmFrameResult;
|
|
3142
|
+
tone: (
|
|
3143
|
+
frequency: number,
|
|
3144
|
+
sampleRate: number,
|
|
3145
|
+
duration: number,
|
|
3146
|
+
phase: number,
|
|
3147
|
+
amplitude: number,
|
|
3148
|
+
) => Float32Array;
|
|
3149
|
+
chirp: (
|
|
3150
|
+
fmin: number,
|
|
3151
|
+
fmax: number,
|
|
3152
|
+
sampleRate: number,
|
|
3153
|
+
duration: number,
|
|
3154
|
+
linear: boolean,
|
|
3155
|
+
) => Float32Array;
|
|
3156
|
+
clicks: (
|
|
3157
|
+
times: Float32Array,
|
|
3158
|
+
sampleRate: number,
|
|
3159
|
+
length: number,
|
|
3160
|
+
frequency: number,
|
|
3161
|
+
clickDuration: number,
|
|
3162
|
+
) => Float32Array;
|
|
3163
|
+
padCenter: (values: Float32Array, size: number, padValue: number) => Float32Array;
|
|
3164
|
+
fixLength: (values: Float32Array, size: number, padValue: number) => Float32Array;
|
|
3165
|
+
fixFrames: (frames: Int32Array, xMin: number, xMax: number, pad: boolean) => Int32Array;
|
|
3166
|
+
onsetBacktrack: (events: Int32Array, energy: Float32Array) => Int32Array;
|
|
3167
|
+
peakPick: (
|
|
3168
|
+
values: Float32Array,
|
|
3169
|
+
preMax: number,
|
|
3170
|
+
postMax: number,
|
|
3171
|
+
preAvg: number,
|
|
3172
|
+
postAvg: number,
|
|
3173
|
+
delta: number,
|
|
3174
|
+
wait: number,
|
|
3175
|
+
) => Int32Array;
|
|
3176
|
+
vectorNormalize: (values: Float32Array, normType: number, threshold: number) => Float32Array;
|
|
3177
|
+
pcen: (
|
|
3178
|
+
values: Float32Array,
|
|
3179
|
+
nBins: number,
|
|
3180
|
+
nFrames: number,
|
|
3181
|
+
options?: Record<string, number> | null,
|
|
3182
|
+
) => Float32Array;
|
|
3183
|
+
tonnetz: (chromagram: Float32Array, nChroma: number, nFrames: number) => Float32Array;
|
|
3184
|
+
tempogram: (
|
|
3185
|
+
onsetEnvelope: Float32Array,
|
|
3186
|
+
sampleRate: number,
|
|
3187
|
+
hopLength: number,
|
|
3188
|
+
winLength: number,
|
|
3189
|
+
mode: TempogramMode,
|
|
3190
|
+
center: boolean,
|
|
3191
|
+
norm: boolean,
|
|
3192
|
+
) => WasmTempogramResult;
|
|
3193
|
+
cyclicTempogram: (
|
|
3194
|
+
onsetEnvelope: Float32Array,
|
|
3195
|
+
sampleRate: number,
|
|
3196
|
+
hopLength: number,
|
|
3197
|
+
winLength: number,
|
|
3198
|
+
bpmMin: number,
|
|
3199
|
+
nBins: number,
|
|
3200
|
+
) => WasmCyclicTempogramResult;
|
|
3201
|
+
plp: (
|
|
3202
|
+
onsetEnvelope: Float32Array,
|
|
3203
|
+
sampleRate: number,
|
|
3204
|
+
hopLength: number,
|
|
3205
|
+
tempoMin: number,
|
|
3206
|
+
tempoMax: number,
|
|
3207
|
+
winLength: number,
|
|
3208
|
+
) => Float32Array;
|
|
3209
|
+
chromaCens: (
|
|
3210
|
+
samples: Float32Array,
|
|
3211
|
+
sampleRate: number,
|
|
3212
|
+
hopLength: number,
|
|
3213
|
+
nChroma: number,
|
|
3214
|
+
binsPerOctave: number,
|
|
3215
|
+
) => WasmChromaResult;
|
|
3216
|
+
chromaCqt: (
|
|
3217
|
+
samples: Float32Array,
|
|
3218
|
+
sampleRate: number,
|
|
3219
|
+
hopLength: number,
|
|
3220
|
+
nChroma: number,
|
|
3221
|
+
binsPerOctave: number,
|
|
3222
|
+
) => WasmChromaResult;
|
|
3223
|
+
bassChroma: (
|
|
3224
|
+
samples: Float32Array,
|
|
3225
|
+
sampleRate: number,
|
|
3226
|
+
hopLength: number,
|
|
3227
|
+
nChroma: number,
|
|
3228
|
+
) => WasmChromaResult;
|
|
3229
|
+
nnlsChroma: (
|
|
3230
|
+
samples: Float32Array,
|
|
3231
|
+
sampleRate: number,
|
|
3232
|
+
enableStftBlend: boolean,
|
|
3233
|
+
stftBlendWeight: number,
|
|
3234
|
+
stftBlendNFft: number,
|
|
3235
|
+
) => WasmNnlsChromaResult;
|
|
3236
|
+
nnlsChromaEx: (
|
|
3237
|
+
samples: Float32Array,
|
|
3238
|
+
sampleRate: number,
|
|
3239
|
+
enableStftBlend: boolean,
|
|
3240
|
+
stftBlendWeight: number,
|
|
3241
|
+
stftBlendNFft: number,
|
|
3242
|
+
hopLength: number,
|
|
3243
|
+
) => WasmNnlsChromaResult;
|
|
3244
|
+
cqt: (
|
|
3245
|
+
samples: Float32Array,
|
|
3246
|
+
sampleRate: number,
|
|
3247
|
+
hopLength: number,
|
|
3248
|
+
fmin: number,
|
|
3249
|
+
nBins: number,
|
|
3250
|
+
binsPerOctave: number,
|
|
3251
|
+
) => WasmCqtResult;
|
|
3252
|
+
pseudoCqt: (
|
|
3253
|
+
samples: Float32Array,
|
|
3254
|
+
sampleRate: number,
|
|
3255
|
+
hopLength: number,
|
|
3256
|
+
fmin: number,
|
|
3257
|
+
nBins: number,
|
|
3258
|
+
binsPerOctave: number,
|
|
3259
|
+
) => WasmCqtResult;
|
|
3260
|
+
hybridCqt: (
|
|
3261
|
+
samples: Float32Array,
|
|
3262
|
+
sampleRate: number,
|
|
3263
|
+
hopLength: number,
|
|
3264
|
+
fmin: number,
|
|
3265
|
+
nBins: number,
|
|
3266
|
+
binsPerOctave: number,
|
|
3267
|
+
) => WasmCqtResult;
|
|
3268
|
+
vqt: (
|
|
3269
|
+
samples: Float32Array,
|
|
3270
|
+
sampleRate: number,
|
|
3271
|
+
hopLength: number,
|
|
3272
|
+
fmin: number,
|
|
3273
|
+
nBins: number,
|
|
3274
|
+
binsPerOctave: number,
|
|
3275
|
+
gamma: number,
|
|
3276
|
+
) => WasmCqtResult;
|
|
3277
|
+
cqtToAudio: (
|
|
3278
|
+
magnitude: Float32Array,
|
|
3279
|
+
nBins: number,
|
|
3280
|
+
nFrames: number,
|
|
3281
|
+
sampleRate: number,
|
|
3282
|
+
hopLength: number,
|
|
3283
|
+
fmin: number,
|
|
3284
|
+
binsPerOctave: number,
|
|
3285
|
+
nIter: number,
|
|
3286
|
+
) => Float32Array;
|
|
3287
|
+
vqtToAudio: (
|
|
3288
|
+
magnitude: Float32Array,
|
|
3289
|
+
nBins: number,
|
|
3290
|
+
nFrames: number,
|
|
3291
|
+
sampleRate: number,
|
|
3292
|
+
hopLength: number,
|
|
3293
|
+
fmin: number,
|
|
3294
|
+
binsPerOctave: number,
|
|
3295
|
+
gamma: number,
|
|
3296
|
+
nIter: number,
|
|
3297
|
+
) => Float32Array;
|
|
3298
|
+
analyzeSections: (
|
|
3299
|
+
samples: Float32Array,
|
|
3300
|
+
sampleRate: number,
|
|
3301
|
+
nFft: number,
|
|
3302
|
+
hopLength: number,
|
|
3303
|
+
minSectionSec: number,
|
|
3304
|
+
) => WasmSectionResult[];
|
|
3305
|
+
detectBoundaries: (
|
|
3306
|
+
samples: Float32Array,
|
|
3307
|
+
sampleRate: number,
|
|
3308
|
+
options: WasmBoundaryOptions,
|
|
3309
|
+
) => WasmBoundaryResult;
|
|
3310
|
+
analyzeMelody: (
|
|
3311
|
+
samples: Float32Array,
|
|
3312
|
+
sampleRate: number,
|
|
3313
|
+
fmin: number,
|
|
3314
|
+
fmax: number,
|
|
3315
|
+
frameLength: number,
|
|
3316
|
+
hopLength: number,
|
|
3317
|
+
threshold: number,
|
|
3318
|
+
usePyin: boolean,
|
|
3319
|
+
center: boolean,
|
|
3320
|
+
) => WasmMelodyResult;
|
|
3321
|
+
onsetEnvelope: (
|
|
3322
|
+
samples: Float32Array,
|
|
3323
|
+
sampleRate: number,
|
|
3324
|
+
nFft: number,
|
|
3325
|
+
hopLength: number,
|
|
3326
|
+
nMels: number,
|
|
3327
|
+
) => Float32Array;
|
|
3328
|
+
onsetStrengthMulti: (
|
|
3329
|
+
samples: Float32Array,
|
|
3330
|
+
sampleRate: number,
|
|
3331
|
+
nFft: number,
|
|
3332
|
+
hopLength: number,
|
|
3333
|
+
nMels: number,
|
|
3334
|
+
nBands: number,
|
|
3335
|
+
) => WasmOnsetStrengthMultiResult;
|
|
3336
|
+
fourierTempogram: (
|
|
3337
|
+
onsetEnvelope: Float32Array,
|
|
3338
|
+
sampleRate: number,
|
|
3339
|
+
hopLength: number,
|
|
3340
|
+
winLength: number,
|
|
3341
|
+
center: boolean,
|
|
3342
|
+
norm: boolean,
|
|
3343
|
+
) => WasmFourierTempogramResult;
|
|
3344
|
+
tempogramRatio: (
|
|
3345
|
+
tempogramData: Float32Array,
|
|
3346
|
+
winLength: number,
|
|
3347
|
+
sampleRate: number,
|
|
3348
|
+
hopLength: number,
|
|
3349
|
+
factors?: Float32Array | number[],
|
|
3350
|
+
) => Float32Array;
|
|
3351
|
+
lufs: (samples: Float32Array, sampleRate: number) => WasmLufsResult;
|
|
3352
|
+
momentaryLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
3353
|
+
shortTermLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
3354
|
+
lufsInterleaved: (samples: Float32Array, channels: number, sampleRate: number) => WasmLufsResult;
|
|
3355
|
+
lufsSeriesInterleaved: (
|
|
3356
|
+
samples: Float32Array,
|
|
3357
|
+
channels: number,
|
|
3358
|
+
sampleRate: number,
|
|
3359
|
+
) => WasmLufsSeriesResult;
|
|
3360
|
+
ebur128LoudnessRange: (samples: Float32Array, sampleRate: number) => number;
|
|
3361
|
+
|
|
3362
|
+
// Core - Resample
|
|
3363
|
+
resample: (samples: Float32Array, srcSr: number, targetSr: number) => Float32Array;
|
|
3364
|
+
|
|
3365
|
+
// Embind-exposed enums
|
|
3366
|
+
PitchClass: {
|
|
3367
|
+
C: { value: 0 };
|
|
3368
|
+
Cs: { value: 1 };
|
|
3369
|
+
D: { value: 2 };
|
|
3370
|
+
Ds: { value: 3 };
|
|
3371
|
+
E: { value: 4 };
|
|
3372
|
+
F: { value: 5 };
|
|
3373
|
+
Fs: { value: 6 };
|
|
3374
|
+
G: { value: 7 };
|
|
3375
|
+
Gs: { value: 8 };
|
|
3376
|
+
A: { value: 9 };
|
|
3377
|
+
As: { value: 10 };
|
|
3378
|
+
B: { value: 11 };
|
|
3379
|
+
};
|
|
3380
|
+
Mode: {
|
|
3381
|
+
Major: { value: 0 };
|
|
3382
|
+
Minor: { value: 1 };
|
|
3383
|
+
};
|
|
3384
|
+
ChordQuality: {
|
|
3385
|
+
Major: { value: 0 };
|
|
3386
|
+
Minor: { value: 1 };
|
|
3387
|
+
Diminished: { value: 2 };
|
|
3388
|
+
Augmented: { value: 3 };
|
|
3389
|
+
Dominant7: { value: 4 };
|
|
3390
|
+
Major7: { value: 5 };
|
|
3391
|
+
Minor7: { value: 6 };
|
|
3392
|
+
Sus2: { value: 7 };
|
|
3393
|
+
Sus4: { value: 8 };
|
|
3394
|
+
Unknown: { value: 9 };
|
|
3395
|
+
Add9: { value: 10 };
|
|
3396
|
+
MinorAdd9: { value: 11 };
|
|
3397
|
+
Dim7: { value: 12 };
|
|
3398
|
+
HalfDim7: { value: 13 };
|
|
3399
|
+
Major9: { value: 14 };
|
|
3400
|
+
Dominant9: { value: 15 };
|
|
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 };
|
|
3410
|
+
};
|
|
3411
|
+
SectionType: {
|
|
3412
|
+
Intro: { value: 0 };
|
|
3413
|
+
Verse: { value: 1 };
|
|
3414
|
+
PreChorus: { value: 2 };
|
|
3415
|
+
Chorus: { value: 3 };
|
|
3416
|
+
Bridge: { value: 4 };
|
|
3417
|
+
Instrumental: { value: 5 };
|
|
3418
|
+
Outro: { value: 6 };
|
|
3419
|
+
Unknown: { value: 7 };
|
|
3420
|
+
};
|
|
3421
|
+
|
|
3422
|
+
// Streaming - StreamAnalyzer
|
|
3423
|
+
streamAnalyzerConfigDefault: () => WasmStreamConfigDefaults;
|
|
3424
|
+
StreamAnalyzer: new (
|
|
3425
|
+
sampleRate: number,
|
|
3426
|
+
nFft: number,
|
|
3427
|
+
hopLength: number,
|
|
3428
|
+
nMels: number,
|
|
3429
|
+
fmin: number,
|
|
3430
|
+
fmax: number,
|
|
3431
|
+
tuningRefHz: number,
|
|
3432
|
+
computeMagnitude: boolean,
|
|
3433
|
+
computeMel: boolean,
|
|
3434
|
+
computeChroma: boolean,
|
|
3435
|
+
computeOnset: boolean,
|
|
3436
|
+
computeSpectral: boolean,
|
|
3437
|
+
emitEveryNFrames: number,
|
|
3438
|
+
magnitudeDownsample: number,
|
|
3439
|
+
maxPendingFrames: number,
|
|
3440
|
+
maxProgressionEntries: number,
|
|
3441
|
+
keyUpdateIntervalSec: number,
|
|
3442
|
+
bpmUpdateIntervalSec: number,
|
|
3443
|
+
window: number,
|
|
3444
|
+
outputFormat: number,
|
|
3445
|
+
) => WasmStreamAnalyzer;
|
|
3446
|
+
|
|
3447
|
+
RealtimeEngine: new (
|
|
3448
|
+
sampleRate: number,
|
|
3449
|
+
maxBlockSize: number,
|
|
3450
|
+
commandCapacity: number,
|
|
3451
|
+
telemetryCapacity: number,
|
|
3452
|
+
maxChannels?: number,
|
|
3453
|
+
) => WasmRealtimeEngine;
|
|
3454
|
+
|
|
3455
|
+
// Streaming - StreamingMasteringChain
|
|
3456
|
+
createStreamingMasteringChain: (config: Record<string, unknown>) => WasmStreamingMasteringChain;
|
|
3457
|
+
|
|
3458
|
+
// Streaming - StreamingEqualizer
|
|
3459
|
+
createEqualizer: (config: Record<string, unknown>) => WasmStreamingEqualizer;
|
|
3460
|
+
|
|
3461
|
+
// Streaming - StreamingRetune
|
|
3462
|
+
createStreamingRetune: (config: Record<string, unknown>) => WasmStreamingRetune;
|
|
3463
|
+
createRealtimeVoiceChanger: (
|
|
3464
|
+
config: Record<string, unknown> | string,
|
|
3465
|
+
) => WasmRealtimeVoiceChanger;
|
|
3466
|
+
realtimeVoiceChangerPresetNames: () => string[];
|
|
3467
|
+
realtimeVoiceChangerPresetJson: (id: string) => string;
|
|
3468
|
+
validateRealtimeVoiceChangerPresetJson: (json: string) => {
|
|
3469
|
+
ok: boolean;
|
|
3470
|
+
normalizedJson?: string;
|
|
3471
|
+
error?: string;
|
|
3472
|
+
};
|
|
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
|
+
|
|
3491
|
+
// Mixing - scene-based Mixer
|
|
3492
|
+
createMixerFromSceneJson: (json: string, sampleRate: number, blockSize: number) => WasmMixer;
|
|
3493
|
+
|
|
3494
|
+
// Decodes a thrown native exception-object pointer (emscripten classic EH
|
|
3495
|
+
// surfaces a C++ throw as the raw pointer number) into a structured error.
|
|
3496
|
+
// Consumed by the module-error wrapper in module_state.ts.
|
|
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;
|
|
3520
|
+
}
|
|
3521
|
+
|
|
3522
|
+
export interface WasmStreamingMasteringChain {
|
|
3523
|
+
prepare: (sampleRate: number, maxBlockSize: number, numChannels: number) => void;
|
|
3524
|
+
processMono: (samples: Float32Array) => Float32Array;
|
|
3525
|
+
processStereo: (
|
|
3526
|
+
left: Float32Array,
|
|
3527
|
+
right: Float32Array,
|
|
3528
|
+
) => { left: Float32Array; right: Float32Array };
|
|
3529
|
+
flushMono: () => Float32Array;
|
|
3530
|
+
flushStereo: () => { left: Float32Array; right: Float32Array };
|
|
3531
|
+
reset: () => void;
|
|
3532
|
+
latencySamples: () => number;
|
|
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;
|
|
3538
|
+
delete: () => void;
|
|
3539
|
+
}
|
|
3540
|
+
|
|
3541
|
+
export interface WasmEqSpectrumSnapshot {
|
|
3542
|
+
preLeft: Float32Array;
|
|
3543
|
+
preRight: Float32Array;
|
|
3544
|
+
postLeft: Float32Array;
|
|
3545
|
+
postRight: Float32Array;
|
|
3546
|
+
bandGainDb: Float32Array;
|
|
3547
|
+
profileDb: Float32Array;
|
|
3548
|
+
lastAutoGainDb: number;
|
|
3549
|
+
seq: number;
|
|
3550
|
+
}
|
|
3551
|
+
|
|
3552
|
+
export interface WasmStreamingEqualizer {
|
|
3553
|
+
setBand: (index: number, band: Record<string, unknown>) => void;
|
|
3554
|
+
clear: () => void;
|
|
3555
|
+
setPhaseMode: (mode: number) => void;
|
|
3556
|
+
setAutoGain: (enabled: boolean) => void;
|
|
3557
|
+
setGainScale: (scale: number) => void;
|
|
3558
|
+
setOutputGainDb: (gainDb: number) => void;
|
|
3559
|
+
setOutputPan: (pan: number) => void;
|
|
3560
|
+
setSidechainMono: (samples: Float32Array) => void;
|
|
3561
|
+
setSidechainStereo: (left: Float32Array, right: Float32Array) => void;
|
|
3562
|
+
clearSidechain: () => void;
|
|
3563
|
+
lastAutoGainDb: () => number;
|
|
3564
|
+
latencySamples: () => number;
|
|
3565
|
+
nonFiniteDiscardCount: () => number;
|
|
3566
|
+
processMono: (samples: Float32Array) => Float32Array;
|
|
3567
|
+
processStereo: (
|
|
3568
|
+
left: Float32Array,
|
|
3569
|
+
right: Float32Array,
|
|
3570
|
+
) => { left: Float32Array; right: Float32Array };
|
|
3571
|
+
magnitudeResponse: (placement: number, frequenciesHz: Float32Array) => Float32Array;
|
|
3572
|
+
spectrum: () => WasmEqSpectrumSnapshot;
|
|
3573
|
+
match: (source: Float32Array, reference: Float32Array, options: Record<string, unknown>) => void;
|
|
3574
|
+
delete: () => void;
|
|
3575
|
+
}
|
|
3576
|
+
|
|
3577
|
+
export interface WasmStreamingRetune {
|
|
3578
|
+
prepare: (sampleRate: number, maxBlockSize: number) => void;
|
|
3579
|
+
reset: () => void;
|
|
3580
|
+
setConfig: (config: Record<string, unknown>) => void;
|
|
3581
|
+
config: () => { semitones: number; mix: number; grainSize: number };
|
|
3582
|
+
grainSize: () => number;
|
|
3583
|
+
latencySamples: () => number;
|
|
3584
|
+
processMono: (samples: Float32Array) => Float32Array;
|
|
3585
|
+
delete: () => void;
|
|
3586
|
+
}
|
|
3587
|
+
|
|
3588
|
+
export interface WasmRealtimeVoiceChanger {
|
|
3589
|
+
prepare: (sampleRate: number, maxBlockSize: number, channels: number) => void;
|
|
3590
|
+
reset: () => void;
|
|
3591
|
+
setConfig: (config: Record<string, unknown> | string) => void;
|
|
3592
|
+
setPodConfig: (config: WasmRealtimeVoiceChangerPodConfig) => void;
|
|
3593
|
+
configJson: () => string;
|
|
3594
|
+
latencySamples: () => number;
|
|
3595
|
+
nonFiniteDiscardCount: () => number;
|
|
3596
|
+
bufferGeneration: () => number;
|
|
3597
|
+
processMono: (samples: Float32Array) => Float32Array;
|
|
3598
|
+
processMonoInto: (samples: Float32Array, output: Float32Array) => void;
|
|
3599
|
+
processInterleaved: (samples: Float32Array, channels: number) => Float32Array;
|
|
3600
|
+
processInterleavedInto: (samples: Float32Array, channels: number, output: Float32Array) => void;
|
|
3601
|
+
// Zero-copy "prepared" path. The returned Float32Array is a typed_memory_view
|
|
3602
|
+
// backed by the WASM heap; it is only valid until the next call to a method
|
|
3603
|
+
// that may grow the underlying scratch buffer (i.e. another get*Buffer with a
|
|
3604
|
+
// larger length) or until delete().
|
|
3605
|
+
getMonoInputBuffer: (numSamples: number) => Float32Array;
|
|
3606
|
+
getMonoOutputBuffer: (numSamples: number) => Float32Array;
|
|
3607
|
+
processPreparedMono: (numSamples: number) => void;
|
|
3608
|
+
getInterleavedInputBuffer: (numFrames: number, numChannels: number) => Float32Array;
|
|
3609
|
+
getInterleavedOutputBuffer: (numFrames: number, numChannels: number) => Float32Array;
|
|
3610
|
+
processPreparedInterleaved: (numFrames: number, numChannels: number) => void;
|
|
3611
|
+
getPlanarChannelBuffer: (channel: number, numFrames: number) => Float32Array;
|
|
3612
|
+
processPreparedPlanar: (numFrames: number) => void;
|
|
3613
|
+
delete: () => void;
|
|
3614
|
+
}
|
|
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
|
+
|
|
3668
|
+
export interface WasmMixer {
|
|
3669
|
+
compile: () => void;
|
|
3670
|
+
processStereo: (
|
|
3671
|
+
leftChannels: Float32Array[],
|
|
3672
|
+
rightChannels: Float32Array[],
|
|
3673
|
+
) => { left: Float32Array; right: Float32Array; sampleRate: number };
|
|
3674
|
+
processStereoInto: (
|
|
3675
|
+
leftChannels: Float32Array[],
|
|
3676
|
+
rightChannels: Float32Array[],
|
|
3677
|
+
outLeft: Float32Array,
|
|
3678
|
+
outRight: Float32Array,
|
|
3679
|
+
) => void;
|
|
3680
|
+
inputLeftView: (index: number) => Float32Array;
|
|
3681
|
+
inputRightView: (index: number) => Float32Array;
|
|
3682
|
+
outputLeftView: () => Float32Array;
|
|
3683
|
+
outputRightView: () => Float32Array;
|
|
3684
|
+
processPreparedStereo: (numSamples: number) => void;
|
|
3685
|
+
configureMeter: (enabled: boolean, truePeakOversample: number) => void;
|
|
3686
|
+
meterSnapshot: () => WasmMixerMeterSnapshot;
|
|
3687
|
+
latchMeterSnapshot: () => boolean;
|
|
3688
|
+
meterScratchValue: (field: number) => number;
|
|
3689
|
+
stripCount: () => number;
|
|
3690
|
+
sceneWarnings: () => string[];
|
|
3691
|
+
scheduleInsertAutomation: (
|
|
3692
|
+
stripIndex: number,
|
|
3693
|
+
insertIndex: number,
|
|
3694
|
+
paramId: number,
|
|
3695
|
+
samplePos: number,
|
|
3696
|
+
value: number,
|
|
3697
|
+
curve: number,
|
|
3698
|
+
) => void;
|
|
3699
|
+
stripById: (id: string) => number;
|
|
3700
|
+
setInputTrimDb: (stripIndex: number, db: number) => void;
|
|
3701
|
+
setFaderDb: (stripIndex: number, db: number) => void;
|
|
3702
|
+
setPan: (stripIndex: number, pan: number, panMode: number) => void;
|
|
3703
|
+
setWidth: (stripIndex: number, width: number) => void;
|
|
3704
|
+
settle: (stripIndex: number) => void;
|
|
3705
|
+
setMuted: (stripIndex: number, muted: boolean) => void;
|
|
3706
|
+
setSoloed: (stripIndex: number, soloed: boolean) => void;
|
|
3707
|
+
setSoloSafe: (stripIndex: number, soloSafe: boolean) => void;
|
|
3708
|
+
setPolarityInvert: (stripIndex: number, invertLeft: boolean, invertRight: boolean) => void;
|
|
3709
|
+
setPanLaw: (stripIndex: number, panLaw: number) => void;
|
|
3710
|
+
setChannelDelaySamples: (stripIndex: number, delaySamples: number) => void;
|
|
3711
|
+
setVcaOffsetDb: (stripIndex: number, offsetDb: number) => void;
|
|
3712
|
+
setDualPan: (stripIndex: number, leftPan: number, rightPan: number) => void;
|
|
3713
|
+
setSurroundPan: (stripIndex: number, pan: SurroundPan) => void;
|
|
3714
|
+
addSend: (
|
|
3715
|
+
stripIndex: number,
|
|
3716
|
+
id: string,
|
|
3717
|
+
destinationBusId: string,
|
|
3718
|
+
sendDb: number,
|
|
3719
|
+
timing: number,
|
|
3720
|
+
) => number;
|
|
3721
|
+
setSendDb: (stripIndex: number, sendIndex: number, sendDb: number) => void;
|
|
3722
|
+
removeSend: (stripIndex: number, sendIndex: number) => void;
|
|
3723
|
+
meterTap: (stripIndex: number, tap: number) => WasmMixMeterSnapshot;
|
|
3724
|
+
stripMeter: (stripIndex: number) => WasmMixMeterSnapshot;
|
|
3725
|
+
busMeter: (busId: string) => WasmMixMeterSnapshot;
|
|
3726
|
+
stripNonFiniteDiscardCount: (stripIndex: number) => number;
|
|
3727
|
+
busNonFiniteDiscardCount: (busId: string) => number;
|
|
3728
|
+
scheduleFaderAutomation: (
|
|
3729
|
+
stripIndex: number,
|
|
3730
|
+
samplePos: number,
|
|
3731
|
+
faderDb: number,
|
|
3732
|
+
curve: number,
|
|
3733
|
+
) => void;
|
|
3734
|
+
schedulePanAutomation: (
|
|
3735
|
+
stripIndex: number,
|
|
3736
|
+
samplePos: number,
|
|
3737
|
+
pan: number,
|
|
3738
|
+
curve: number,
|
|
3739
|
+
) => void;
|
|
3740
|
+
scheduleWidthAutomation: (
|
|
3741
|
+
stripIndex: number,
|
|
3742
|
+
samplePos: number,
|
|
3743
|
+
width: number,
|
|
3744
|
+
curve: number,
|
|
3745
|
+
) => void;
|
|
3746
|
+
scheduleSendAutomation: (
|
|
3747
|
+
stripIndex: number,
|
|
3748
|
+
sendIndex: number,
|
|
3749
|
+
samplePos: number,
|
|
3750
|
+
db: number,
|
|
3751
|
+
curve: number,
|
|
3752
|
+
) => void;
|
|
3753
|
+
readGoniometerLatest: (stripIndex: number, maxPoints: number) => WasmGoniometerPoint[];
|
|
3754
|
+
addStrip: (id: string, metering: StripMeteringOptions) => void;
|
|
3755
|
+
addBus: (id: string, role: string) => void;
|
|
3756
|
+
removeBus: (id: string) => void;
|
|
3757
|
+
busCount: () => number;
|
|
3758
|
+
addVcaGroup: (id: string, gainDb: number, members: string[]) => void;
|
|
3759
|
+
setVcaGroupGainDb: (id: string, gainDb: number) => void;
|
|
3760
|
+
setVcaGroupMembers: (id: string, members: string[]) => void;
|
|
3761
|
+
removeVcaGroup: (id: string) => void;
|
|
3762
|
+
vcaGroupCount: () => number;
|
|
3763
|
+
toSceneJson: () => string;
|
|
3764
|
+
tailSamples: () => number;
|
|
3765
|
+
latencySamples: () => number;
|
|
3766
|
+
drainTailStereo: (numSamples: number) => {
|
|
3767
|
+
left: Float32Array;
|
|
3768
|
+
right: Float32Array;
|
|
3769
|
+
sampleRate: number;
|
|
3770
|
+
};
|
|
3771
|
+
delete: () => void;
|
|
3772
|
+
}
|
|
3773
|
+
|
|
3774
|
+
export interface WasmGoniometerPoint {
|
|
3775
|
+
left: number;
|
|
3776
|
+
right: number;
|
|
3777
|
+
}
|
|
3778
|
+
|
|
3779
|
+
// Streaming types for StreamAnalyzer
|
|
3780
|
+
export interface WasmChordChange {
|
|
3781
|
+
root: number;
|
|
3782
|
+
quality: number;
|
|
3783
|
+
startTime: number;
|
|
3784
|
+
confidence: number;
|
|
3785
|
+
}
|
|
3786
|
+
|
|
3787
|
+
export interface WasmBarChord {
|
|
3788
|
+
barIndex: number;
|
|
3789
|
+
root: number;
|
|
3790
|
+
quality: number;
|
|
3791
|
+
startTime: number;
|
|
3792
|
+
confidence: number;
|
|
3793
|
+
}
|
|
3794
|
+
|
|
3795
|
+
export interface WasmPatternScore {
|
|
3796
|
+
name: string;
|
|
3797
|
+
score: number;
|
|
3798
|
+
}
|
|
3799
|
+
|
|
3800
|
+
export interface WasmProgressiveEstimate {
|
|
3801
|
+
bpm: number;
|
|
3802
|
+
bpmConfidence: number;
|
|
3803
|
+
bpmCandidateCount: number;
|
|
3804
|
+
key: number;
|
|
3805
|
+
keyMinor: boolean;
|
|
3806
|
+
keyConfidence: number;
|
|
3807
|
+
chordRoot: number;
|
|
3808
|
+
chordQuality: number;
|
|
3809
|
+
chordConfidence: number;
|
|
3810
|
+
chordStartTime: number;
|
|
3811
|
+
chordProgression: WasmChordChange[];
|
|
3812
|
+
barChordProgression: WasmBarChord[];
|
|
3813
|
+
currentBar: number;
|
|
3814
|
+
barDuration: number;
|
|
3815
|
+
votedPattern: WasmBarChord[];
|
|
3816
|
+
patternLength: number;
|
|
3817
|
+
detectedPatternName: string;
|
|
3818
|
+
detectedPatternScore: number;
|
|
3819
|
+
allPatternScores: WasmPatternScore[];
|
|
3820
|
+
accumulatedSeconds: number;
|
|
3821
|
+
usedFrames: number;
|
|
3822
|
+
updated: boolean;
|
|
3823
|
+
}
|
|
3824
|
+
|
|
3825
|
+
export interface WasmAnalyzerStats {
|
|
3826
|
+
totalFrames: number;
|
|
3827
|
+
totalSamples: number;
|
|
3828
|
+
durationSeconds: number;
|
|
3829
|
+
pendingFrames: number;
|
|
3830
|
+
droppedOutputFrames: number;
|
|
3831
|
+
droppedChordProgressionEntries: number;
|
|
3832
|
+
droppedBarProgressionEntries: number;
|
|
3833
|
+
nonFiniteDiscardBlocks: number;
|
|
3834
|
+
estimate: WasmProgressiveEstimate;
|
|
3835
|
+
}
|
|
3836
|
+
|
|
3837
|
+
export interface WasmFrameBuffer {
|
|
3838
|
+
nFrames: number;
|
|
3839
|
+
/** Number of mel bands; flat `mel` is `[nFrames * nMels]` row-major. */
|
|
3840
|
+
nMels: number;
|
|
3841
|
+
nChroma: number;
|
|
3842
|
+
featureFlags: number;
|
|
3843
|
+
timestamps: Float32Array;
|
|
3844
|
+
mel: Float32Array;
|
|
3845
|
+
chroma: Float32Array;
|
|
3846
|
+
onsetStrength: Float32Array;
|
|
3847
|
+
rmsEnergy: Float32Array;
|
|
3848
|
+
spectralCentroid: Float32Array;
|
|
3849
|
+
spectralFlatness: Float32Array;
|
|
3850
|
+
chordRoot: Int32Array;
|
|
3851
|
+
chordQuality: Int32Array;
|
|
3852
|
+
chordConfidence: Float32Array;
|
|
3853
|
+
}
|
|
3854
|
+
|
|
3855
|
+
export interface WasmStreamFramesU8 {
|
|
3856
|
+
nFrames: number;
|
|
3857
|
+
nMels: number;
|
|
3858
|
+
nChroma: number;
|
|
3859
|
+
featureFlags: number;
|
|
3860
|
+
timestamps: Float32Array;
|
|
3861
|
+
mel: Uint8Array;
|
|
3862
|
+
chroma: Uint8Array;
|
|
3863
|
+
onsetStrength: Uint8Array;
|
|
3864
|
+
rmsEnergy: Uint8Array;
|
|
3865
|
+
spectralCentroid: Uint8Array;
|
|
3866
|
+
spectralFlatness: Uint8Array;
|
|
3867
|
+
}
|
|
3868
|
+
|
|
3869
|
+
export interface WasmStreamFramesI16 {
|
|
3870
|
+
nFrames: number;
|
|
3871
|
+
nMels: number;
|
|
3872
|
+
nChroma: number;
|
|
3873
|
+
featureFlags: number;
|
|
3874
|
+
timestamps: Float32Array;
|
|
3875
|
+
mel: Int16Array;
|
|
3876
|
+
chroma: Int16Array;
|
|
3877
|
+
onsetStrength: Int16Array;
|
|
3878
|
+
rmsEnergy: Int16Array;
|
|
3879
|
+
spectralCentroid: Int16Array;
|
|
3880
|
+
spectralFlatness: Int16Array;
|
|
3881
|
+
}
|
|
3882
|
+
|
|
3883
|
+
export interface WasmStreamAnalyzer {
|
|
3884
|
+
/** Throws (invalid state) when the stream was already finalized; reset first. */
|
|
3885
|
+
process: (samples: Float32Array) => void;
|
|
3886
|
+
/** Rejects a gap, a seek, a mode switch, and a chunk fed after finalize. */
|
|
3887
|
+
processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
|
|
3888
|
+
/** Idempotent on success; a failed call leaves the stream un-finalized. */
|
|
3889
|
+
finalize: () => void;
|
|
3890
|
+
availableFrames: () => number;
|
|
3891
|
+
readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
|
|
3892
|
+
readFramesU8: (maxFrames: number, quantizeConfig?: unknown) => WasmStreamFramesU8;
|
|
3893
|
+
readFramesI16: (maxFrames: number, quantizeConfig?: unknown) => WasmStreamFramesI16;
|
|
3894
|
+
reset: (baseSampleOffset?: number) => void;
|
|
3895
|
+
stats: () => WasmAnalyzerStats;
|
|
3896
|
+
frameCount: () => number;
|
|
3897
|
+
currentTime: () => number;
|
|
3898
|
+
sampleRate: () => number;
|
|
3899
|
+
setExpectedDuration: (durationSeconds: number) => void;
|
|
3900
|
+
/** Throws outside 0.01..100; the request is refused, never clamped. */
|
|
3901
|
+
setNormalizationGain: (gain: number) => void;
|
|
3902
|
+
/** Throws outside 220..880 Hz; the request is refused, never clamped. */
|
|
3903
|
+
setTuningRefHz: (refHz: number) => void;
|
|
3904
|
+
delete: () => void;
|
|
3905
|
+
}
|
|
3906
|
+
|
|
3907
|
+
declare function createModule(options?: SonareModuleOptions): Promise<SonareModule>;
|
|
3908
|
+
|
|
3909
|
+
export default createModule;
|