@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime_engine.d.ts","sourceRoot":"","sources":["../src/realtime_engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { RealtimeVoiceChangerConfigInput, RealtimeVoiceChangerPodConfig, VoicePresetId } from './public_types';
|
|
2
|
+
/**
|
|
3
|
+
* Zero-copy realtime buffer pair for {@link RealtimeVoiceChanger} mono
|
|
4
|
+
* processing. The `input` / `output` `Float32Array`s are typed-memory views
|
|
5
|
+
* onto the WASM heap — write samples into `input`, call `process()`, then
|
|
6
|
+
* read from `output`. The views are owned by the {@link RealtimeVoiceChanger}
|
|
7
|
+
* and remain valid until `delete()` is called on it.
|
|
8
|
+
*/
|
|
9
|
+
export interface RealtimeVoiceChangerMonoBuffer {
|
|
10
|
+
input: Float32Array;
|
|
11
|
+
output: Float32Array;
|
|
12
|
+
process: () => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Zero-copy realtime buffer pair for {@link RealtimeVoiceChanger} interleaved
|
|
16
|
+
* multi-channel processing. Layout is L0,R0,L1,R1,... for stereo. The views
|
|
17
|
+
* are owned by the {@link RealtimeVoiceChanger}.
|
|
18
|
+
*/
|
|
19
|
+
export interface RealtimeVoiceChangerInterleavedBuffer {
|
|
20
|
+
input: Float32Array;
|
|
21
|
+
output: Float32Array;
|
|
22
|
+
channels: number;
|
|
23
|
+
process: () => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Zero-copy realtime buffer for {@link RealtimeVoiceChanger} planar stereo
|
|
27
|
+
* processing. Each entry in `channels` is a heap-backed `Float32Array` for one
|
|
28
|
+
* channel (matching AudioWorklet's native layout). Process happens in place:
|
|
29
|
+
* write samples into each channel view, call `process()`, then read back from
|
|
30
|
+
* the same views.
|
|
31
|
+
*/
|
|
32
|
+
export interface RealtimeVoiceChangerPlanarBuffer {
|
|
33
|
+
channels: Float32Array[];
|
|
34
|
+
process: () => void;
|
|
35
|
+
}
|
|
36
|
+
export declare class RealtimeVoiceChanger {
|
|
37
|
+
private changer;
|
|
38
|
+
private released;
|
|
39
|
+
/**
|
|
40
|
+
* Creates a voice changer. Supplying `sampleRate` prepares it immediately,
|
|
41
|
+
* matching the Node and Python constructors; omitting it preserves the
|
|
42
|
+
* explicit {@link prepare} lifecycle for callers that configure later.
|
|
43
|
+
*/
|
|
44
|
+
constructor(config?: RealtimeVoiceChangerConfigInput | RealtimeVoiceChangerPodConfig, sampleRate?: number, maxBlockSize?: number, channels?: number);
|
|
45
|
+
prepare(sampleRate: number, maxBlockSize?: number, channels?: number): void;
|
|
46
|
+
reset(): void;
|
|
47
|
+
setConfig(config: RealtimeVoiceChangerConfigInput | RealtimeVoiceChangerPodConfig): void;
|
|
48
|
+
/**
|
|
49
|
+
* Apply a flat, pre-normalized config without JSON serialization. Intended
|
|
50
|
+
* for AudioWorklet control messages whose sender prepared the POD on the
|
|
51
|
+
* main thread.
|
|
52
|
+
*/
|
|
53
|
+
setPodConfig(config: RealtimeVoiceChangerPodConfig): void;
|
|
54
|
+
configJson(): string;
|
|
55
|
+
latencySamples(): number;
|
|
56
|
+
/**
|
|
57
|
+
* Channel-blocks in which the chain discarded its own state because a
|
|
58
|
+
* non-finite value had reached it.
|
|
59
|
+
*
|
|
60
|
+
* Advisory telemetry, and the only thing that separates a degraded stream
|
|
61
|
+
* from a clean one. Every stage of this chain leaves an in-domain finite
|
|
62
|
+
* value where a non-finite one was — the input scrub and the
|
|
63
|
+
* inter-sample-peak limiter substitute silence, the sample-domain limiter
|
|
64
|
+
* folds an infinity onto its ceiling — so the output stays finite, in range
|
|
65
|
+
* and free of any error while carrying samples unrelated to the input. A
|
|
66
|
+
* non-zero count is what says the samples in between were not computed from
|
|
67
|
+
* what you supplied.
|
|
68
|
+
*
|
|
69
|
+
* Monotonic for the lifetime of the instance. The unit is one processed
|
|
70
|
+
* block, never a channel, so a stereo block that discards on both channels
|
|
71
|
+
* adds one and the number does not depend on a dimension you did not choose.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* changer.processInterleaved(block, 2);
|
|
76
|
+
* if (changer.nonFiniteDiscardCount() > 0) {
|
|
77
|
+
* // the audio just produced is not a function of `block`
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
nonFiniteDiscardCount(): number;
|
|
82
|
+
/**
|
|
83
|
+
* Monotonically increases whenever {@link prepare} can replace the native
|
|
84
|
+
* scratch buffers. Cached WASM heap views must be reacquired after it changes.
|
|
85
|
+
*/
|
|
86
|
+
bufferGeneration(): number;
|
|
87
|
+
processMono(samples: Float32Array): Float32Array;
|
|
88
|
+
processMonoInto(samples: Float32Array, output: Float32Array): void;
|
|
89
|
+
processInterleaved(samples: Float32Array, channels: number): Float32Array;
|
|
90
|
+
processInterleavedInto(samples: Float32Array, channels: number, output: Float32Array): void;
|
|
91
|
+
/**
|
|
92
|
+
* Acquire a typed-memory view onto the WASM heap for mono input.
|
|
93
|
+
*
|
|
94
|
+
* Write your input samples into the returned `Float32Array` directly (e.g.
|
|
95
|
+
* via `input.set(source)`); no copy crosses the JS↔C++ bridge until
|
|
96
|
+
* {@link processPreparedMono} is called. The view is owned by this
|
|
97
|
+
* RealtimeVoiceChanger and becomes invalid after {@link delete}; it may
|
|
98
|
+
* also be invalidated if you later call this method with a larger
|
|
99
|
+
* `numSamples` value (the underlying buffer may be reallocated).
|
|
100
|
+
*/
|
|
101
|
+
getMonoInputBuffer(numSamples: number): Float32Array;
|
|
102
|
+
/** Mono output view counterpart to {@link getMonoInputBuffer}. */
|
|
103
|
+
getMonoOutputBuffer(numSamples: number): Float32Array;
|
|
104
|
+
/**
|
|
105
|
+
* Process the previously-acquired mono input buffer in place. The output
|
|
106
|
+
* appears in the buffer returned by {@link getMonoOutputBuffer}. No JS↔C++
|
|
107
|
+
* sample-level crossings happen on this call — it just hands control to
|
|
108
|
+
* the underlying DSP on already-on-heap data.
|
|
109
|
+
*/
|
|
110
|
+
processPreparedMono(numSamples: number): void;
|
|
111
|
+
/** Interleaved input view (layout L0,R0,L1,R1,...). */
|
|
112
|
+
getInterleavedInputBuffer(numFrames: number, numChannels: number): Float32Array;
|
|
113
|
+
/** Interleaved output view counterpart. */
|
|
114
|
+
getInterleavedOutputBuffer(numFrames: number, numChannels: number): Float32Array;
|
|
115
|
+
/**
|
|
116
|
+
* Process the previously-acquired interleaved buffer in place. Output
|
|
117
|
+
* appears in the buffer returned by {@link getInterleavedOutputBuffer}.
|
|
118
|
+
*/
|
|
119
|
+
processPreparedInterleaved(numFrames: number, numChannels: number): void;
|
|
120
|
+
/**
|
|
121
|
+
* Planar-channel input/output view (one Float32Array per channel). Matches
|
|
122
|
+
* AudioWorklet's native layout; processing happens in place.
|
|
123
|
+
*/
|
|
124
|
+
getPlanarChannelBuffer(channel: number, numFrames: number): Float32Array;
|
|
125
|
+
/**
|
|
126
|
+
* Process the previously-acquired planar channel buffers in place. Each
|
|
127
|
+
* channel must have been obtained from {@link getPlanarChannelBuffer}
|
|
128
|
+
* with the same `numFrames`. Output replaces input in the same buffers.
|
|
129
|
+
*/
|
|
130
|
+
processPreparedPlanar(numFrames: number): void;
|
|
131
|
+
/**
|
|
132
|
+
* Convenience factory for the mono zero-copy path: returns the input/output
|
|
133
|
+
* heap views plus a `process()` thunk wired to the same `numSamples`. The
|
|
134
|
+
* views are reused across calls and become invalid after {@link delete}.
|
|
135
|
+
*/
|
|
136
|
+
createRealtimeMonoBuffer(numSamples: number): RealtimeVoiceChangerMonoBuffer;
|
|
137
|
+
/** Same as {@link createRealtimeMonoBuffer} but for interleaved I/O. */
|
|
138
|
+
createRealtimeInterleavedBuffer(numFrames: number, numChannels: number): RealtimeVoiceChangerInterleavedBuffer;
|
|
139
|
+
/**
|
|
140
|
+
* Convenience factory for the planar zero-copy path. Acquires one
|
|
141
|
+
* heap-backed Float32Array per channel and returns a `process()` thunk
|
|
142
|
+
* wired to the same `numFrames`. Buffers are reused across calls and
|
|
143
|
+
* become invalid after {@link delete}.
|
|
144
|
+
*/
|
|
145
|
+
createRealtimePlanarBuffer(numFrames: number, numChannels: number): RealtimeVoiceChangerPlanarBuffer;
|
|
146
|
+
/** Releases the native handle. Idempotent, as the Node facade is. */
|
|
147
|
+
delete(): void;
|
|
148
|
+
/** Alias for {@link delete}, provided for cross-binding (Node) compatibility. */
|
|
149
|
+
destroy(): void;
|
|
150
|
+
}
|
|
151
|
+
export declare function realtimeVoiceChangerPresetNames(): VoicePresetId[];
|
|
152
|
+
export declare function realtimeVoiceChangerPresetJson(name: VoicePresetId): string;
|
|
153
|
+
export declare function validateRealtimeVoiceChangerPresetJson(json: string): {
|
|
154
|
+
ok: boolean;
|
|
155
|
+
normalizedJson?: string;
|
|
156
|
+
error?: string;
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=realtime_voice_changer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime_voice_changer.d.ts","sourceRoot":"","sources":["../src/realtime_voice_changer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reverberation repair, with its detector and the room-driven configuration.
|
|
3
|
+
*/
|
|
4
|
+
import type { RoomEstimateResult } from './public_types_acoustic';
|
|
5
|
+
import type { MasteringRepairDereverbClassicalLinkedResult, MasteringRepairDereverbClassicalStereoResult, ReverbDetection } from './public_types_repair';
|
|
6
|
+
/** Options for `masteringRepairDereverbClassical`. */
|
|
7
|
+
export interface DereverbClassicalOptions {
|
|
8
|
+
threshold?: number;
|
|
9
|
+
attenuation?: number;
|
|
10
|
+
nFft?: number;
|
|
11
|
+
hopLength?: number;
|
|
12
|
+
t60Sec?: number;
|
|
13
|
+
lateDelayMs?: number;
|
|
14
|
+
overSubtraction?: number;
|
|
15
|
+
spectralFloor?: number;
|
|
16
|
+
wpeEnabled?: boolean;
|
|
17
|
+
wpeIterations?: number;
|
|
18
|
+
wpeTaps?: number;
|
|
19
|
+
wpeStrength?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface MasteringRepairDereverbClassicalRequest extends DereverbClassicalOptions {
|
|
22
|
+
samples: Float32Array;
|
|
23
|
+
sampleRate: number;
|
|
24
|
+
}
|
|
25
|
+
/** Request form of `masteringRepairDereverbClassicalStereo`. */
|
|
26
|
+
export interface MasteringRepairDereverbClassicalStereoRequest extends DereverbClassicalOptions {
|
|
27
|
+
left: Float32Array;
|
|
28
|
+
right: Float32Array;
|
|
29
|
+
sampleRate?: number;
|
|
30
|
+
}
|
|
31
|
+
/** Request form of `masteringRepairDereverbClassicalLinked`. */
|
|
32
|
+
export interface MasteringRepairDereverbClassicalLinkedRequest extends DereverbClassicalOptions {
|
|
33
|
+
/** At least one channel; all the same length. */
|
|
34
|
+
channels: Float32Array[];
|
|
35
|
+
sampleRate?: number;
|
|
36
|
+
}
|
|
37
|
+
/** Request form of `masteringRepairDereverbConfigForRoom`. */
|
|
38
|
+
export interface MasteringRepairDereverbConfigForRoomRequest extends DereverbClassicalOptions {
|
|
39
|
+
/** The measured room, from `estimateRoom`. Only `volume` and `rt60Bands` are read. */
|
|
40
|
+
estimate: RoomEstimateResult;
|
|
41
|
+
}
|
|
42
|
+
/** Offline classical dereverberator (spectral subtraction + optional WPE). */
|
|
43
|
+
export declare function masteringRepairDereverbClassical(request: MasteringRepairDereverbClassicalRequest): Float32Array;
|
|
44
|
+
export declare function masteringRepairDereverbClassical(samples: Float32Array, sampleRate: number, options?: DereverbClassicalOptions): Float32Array;
|
|
45
|
+
/**
|
|
46
|
+
* Offline classical dereverberator for a stereo pair (spectral subtraction plus an optional
|
|
47
|
+
* WPE pre-stage), driven by one channel-linked mask.
|
|
48
|
+
*
|
|
49
|
+
* The mask is built from the channel-summed power, and the WPE stage accumulates over both
|
|
50
|
+
* channels and applies one predictor set to each, so neither stage can move an interchannel
|
|
51
|
+
* level or phase difference. That is also why the result carries a single `report` rather than
|
|
52
|
+
* one per channel.
|
|
53
|
+
*
|
|
54
|
+
* Every field of that report is a ratio or a fraction, so unlike the denoise pair nothing in
|
|
55
|
+
* it shifts with the channel count: a stereo figure here is comparable against a mono one.
|
|
56
|
+
*
|
|
57
|
+
* An input shorter than `nFft` is PADDED for analysis rather than rejected, the opposite of
|
|
58
|
+
* {@link masteringRepairDenoiseClassicalStereo}.
|
|
59
|
+
*
|
|
60
|
+
* Two report fields are gated on the WPE stage, which is off unless `wpeEnabled` is set:
|
|
61
|
+
* `detected.latePredictability` and `wpePredictorNorm` are then both exactly 0, which is the
|
|
62
|
+
* measurement rather than an unset field. `detected.lateDecayRatioDb` runs the other way from
|
|
63
|
+
* what its name suggests — less negative means the material sustains across the module's late
|
|
64
|
+
* lag, so a reverberant input reads *higher* than the same material dry.
|
|
65
|
+
*
|
|
66
|
+
* `threshold` and `attenuation` are both validated to `[0, 1]`, so the strongest gate this
|
|
67
|
+
* accepts is `threshold: 0.99`, not an arbitrarily large number.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const { left, right, report } = masteringRepairDereverbClassicalStereo({
|
|
72
|
+
* left: leftSamples,
|
|
73
|
+
* right: rightSamples,
|
|
74
|
+
* sampleRate: 48000,
|
|
75
|
+
* wpeEnabled: true,
|
|
76
|
+
* });
|
|
77
|
+
* console.log(report.detected.lateDecayRatioDb, report.wpePredictorNorm);
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function masteringRepairDereverbClassicalStereo(request: MasteringRepairDereverbClassicalStereoRequest): MasteringRepairDereverbClassicalStereoResult;
|
|
81
|
+
export declare function masteringRepairDereverbClassicalStereo(left: Float32Array, right: Float32Array, sampleRate: number, config?: DereverbClassicalOptions): MasteringRepairDereverbClassicalStereoResult;
|
|
82
|
+
/**
|
|
83
|
+
* Offline classical dereverberator for any number of channels (spectral subtraction plus an
|
|
84
|
+
* optional WPE pre-stage), driven by one channel-linked mask.
|
|
85
|
+
*
|
|
86
|
+
* The N-channel form of {@link masteringRepairDereverbClassicalStereo}: the mask is built from
|
|
87
|
+
* the channel-summed power and the WPE stage accumulates over every channel and applies one
|
|
88
|
+
* predictor set to each, so neither stage can move an interchannel level or phase difference
|
|
89
|
+
* however many channels there are. One `report` for the set, and one output per input channel in
|
|
90
|
+
* input order.
|
|
91
|
+
*
|
|
92
|
+
* A single channel reproduces {@link masteringRepairDereverbClassical} bit for bit, and two
|
|
93
|
+
* reproduce {@link masteringRepairDereverbClassicalStereo} plane for plane — `channels[0]` is the
|
|
94
|
+
* left plane and `channels[1]` the right.
|
|
95
|
+
*
|
|
96
|
+
* Every field of the report is a ratio or a fraction, so nothing in it shifts with the channel
|
|
97
|
+
* count: a figure measured over a set is comparable against a mono one. That is the opposite of
|
|
98
|
+
* {@link masteringRepairDenoiseClassicalLinked}, whose `detected` levels are absolute and move by
|
|
99
|
+
* `10*log10(N)`.
|
|
100
|
+
*
|
|
101
|
+
* An input shorter than `nFft` is PADDED for analysis rather than rejected — again the opposite
|
|
102
|
+
* of that entry, which refuses one.
|
|
103
|
+
*
|
|
104
|
+
* Two report fields are gated on the WPE stage, which is off unless `wpeEnabled` is set:
|
|
105
|
+
* `detected.latePredictability` and `wpePredictorNorm` are then both exactly 0, which is the
|
|
106
|
+
* measurement rather than an unset field.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* const { channels, report } = masteringRepairDereverbClassicalLinked({
|
|
111
|
+
* channels: [frontLeft, frontRight, centre],
|
|
112
|
+
* sampleRate: 48000,
|
|
113
|
+
* wpeEnabled: true,
|
|
114
|
+
* });
|
|
115
|
+
* console.log(channels.length, report.detected.lateDecayRatioDb);
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export declare function masteringRepairDereverbClassicalLinked(request: MasteringRepairDereverbClassicalLinkedRequest): MasteringRepairDereverbClassicalLinkedResult;
|
|
119
|
+
export declare function masteringRepairDereverbClassicalLinked(channels: Float32Array[], sampleRate: number, config?: DereverbClassicalOptions): MasteringRepairDereverbClassicalLinkedResult;
|
|
120
|
+
/**
|
|
121
|
+
* Point a dereverb config at a measured room.
|
|
122
|
+
*
|
|
123
|
+
* The pair to {@link estimateRoom}, which measures a recording blind. Returns a complete
|
|
124
|
+
* config for {@link masteringRepairDereverbClassical}, so the caller does not have to know
|
|
125
|
+
* which reverberation-time band to use or how the late delay relates to room size.
|
|
126
|
+
*
|
|
127
|
+
* What the room decides is *where* the tail is. Exactly two fields come back changed from
|
|
128
|
+
* what was passed in:
|
|
129
|
+
*
|
|
130
|
+
* - `t60Sec` — the mid-frequency reverberation time, the average of the 500 Hz and 1 kHz
|
|
131
|
+
* octaves an ISO 3382 room is quoted by.
|
|
132
|
+
* - `lateDelayMs` — Polack's mixing time, sqrt(volume) in milliseconds, past which the
|
|
133
|
+
* response is a diffuse tail rather than separable early reflections.
|
|
134
|
+
*
|
|
135
|
+
* How *much* to remove is taste rather than measurement, so `attenuation`, `threshold`,
|
|
136
|
+
* `overSubtraction` and `spectralFloor` are never written. A measurement that did not
|
|
137
|
+
* converge leaves its own field alone, so a partial estimate still configures the half it
|
|
138
|
+
* measured; a low-`confidence` estimate is still applied, because whether to trust it is
|
|
139
|
+
* the caller's call.
|
|
140
|
+
*
|
|
141
|
+
* Every field of `config` that is omitted falls back to the library's own dereverb default,
|
|
142
|
+
* matching {@link masteringRepairDereverbClassical}, so calling this with only an estimate
|
|
143
|
+
* returns a config that is ready to run. The C ABI underneath reads and writes the whole
|
|
144
|
+
* config and takes every field literally — it has no "zero means default" rule — which is
|
|
145
|
+
* why an omitted field resolves to its default here rather than to zero.
|
|
146
|
+
*
|
|
147
|
+
* @param estimate - The measured room, from {@link estimateRoom}. Only `volume` and
|
|
148
|
+
* `rt60Bands` are read. The request form carries it as `estimate` alongside the config
|
|
149
|
+
* fields.
|
|
150
|
+
* @param config - The config to point at the room; omitted fields take the library default.
|
|
151
|
+
* @returns A complete dereverb config.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* const estimate = estimateRoom(samples, sampleRate);
|
|
156
|
+
* const config = masteringRepairDereverbConfigForRoom(estimate);
|
|
157
|
+
* const clean = masteringRepairDereverbClassical(samples, sampleRate, config);
|
|
158
|
+
* ```
|
|
159
|
+
*
|
|
160
|
+
* When NEITHER mid band converged, `t60Sec` falls back to the average of whatever
|
|
161
|
+
* bands did, so a low-band-only estimate configures something rather than nothing --
|
|
162
|
+
* that value is no longer a mid-frequency figure. Only `volume`, `rt60Bands` and the
|
|
163
|
+
* band count are read; the rest of the estimate is ignored.
|
|
164
|
+
*/
|
|
165
|
+
export declare function masteringRepairDereverbConfigForRoom(request: MasteringRepairDereverbConfigForRoomRequest): Required<DereverbClassicalOptions>;
|
|
166
|
+
export declare function masteringRepairDereverbConfigForRoom(estimate: RoomEstimateResult, config?: DereverbClassicalOptions): Required<DereverbClassicalOptions>;
|
|
167
|
+
/** Request form of `masteringRepairDetectReverb`. */
|
|
168
|
+
export interface MasteringRepairDetectReverbRequest extends DereverbClassicalOptions {
|
|
169
|
+
samples: Float32Array;
|
|
170
|
+
sampleRate: number;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Measures reverberation without dereverberating.
|
|
174
|
+
*
|
|
175
|
+
* NOT an ISO 3382 reverberation time — use `estimateRoom` for a graded RT60. This reports what
|
|
176
|
+
* {@link masteringRepairDereverbClassical} itself measures while deciding how much to subtract.
|
|
177
|
+
*
|
|
178
|
+
* A buffer shorter than `nFft` is PADDED for analysis, as the repair pads it, which is the
|
|
179
|
+
* opposite of {@link masteringRepairDetectNoiseFloor}.
|
|
180
|
+
*
|
|
181
|
+
* `latePredictability` comes from the WPE stage, which runs only under `wpeEnabled` — clear by
|
|
182
|
+
* default — and then only its covariance and solve; the prediction is never subtracted. A
|
|
183
|
+
* default-config call therefore reports exactly 0 there as its measurement.
|
|
184
|
+
*/
|
|
185
|
+
export declare function masteringRepairDetectReverb(request: MasteringRepairDetectReverbRequest): ReverbDetection;
|
|
186
|
+
export declare function masteringRepairDetectReverb(samples: Float32Array, sampleRate: number, options?: DereverbClassicalOptions): ReverbDetection;
|
|
187
|
+
//# sourceMappingURL=repair_dereverb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair_dereverb.d.ts","sourceRoot":"","sources":["../src/repair_dereverb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Impulsive-defect repair: declick, declip and decrackle, with their detectors.
|
|
3
|
+
*/
|
|
4
|
+
import type { ClickDetection, ClipDetection, CrackleDetection, MasteringRepairDeclickStereoResult, MasteringRepairDeclipStereoResult, MasteringRepairDecrackleStereoResult } from './public_types_repair';
|
|
5
|
+
/** Options for `masteringRepairDeclick`. */
|
|
6
|
+
export interface DeclickOptions {
|
|
7
|
+
threshold?: number;
|
|
8
|
+
neighborRatio?: number;
|
|
9
|
+
maxClickSamples?: number;
|
|
10
|
+
lpcOrder?: number;
|
|
11
|
+
residualRatio?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface MasteringRepairDeclickRequest extends DeclickOptions {
|
|
14
|
+
samples: Float32Array;
|
|
15
|
+
sampleRate: number;
|
|
16
|
+
}
|
|
17
|
+
/** Request form of `masteringRepairDeclickStereo`. */
|
|
18
|
+
export interface MasteringRepairDeclickStereoRequest extends DeclickOptions {
|
|
19
|
+
left: Float32Array;
|
|
20
|
+
right: Float32Array;
|
|
21
|
+
sampleRate?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Offline LPC-based declicker for a stereo pair.
|
|
25
|
+
*
|
|
26
|
+
* A run either channel's own detection selects is repaired in BOTH channels —
|
|
27
|
+
* a common-mode click repaired on one side only would move the stereo image.
|
|
28
|
+
* Only the selection is shared: each channel's fill is computed from its own
|
|
29
|
+
* samples and its own AR model, which is why `leftReport` and `rightReport`
|
|
30
|
+
* genuinely differ. Prefer this over calling `masteringRepairDeclick` on each
|
|
31
|
+
* channel separately whenever a click may land in only one channel — a
|
|
32
|
+
* per-channel pass never repairs the other side's image-shifting click.
|
|
33
|
+
*/
|
|
34
|
+
export declare function masteringRepairDeclickStereo(request: MasteringRepairDeclickStereoRequest): MasteringRepairDeclickStereoResult;
|
|
35
|
+
export declare function masteringRepairDeclickStereo(left: Float32Array, right: Float32Array, sampleRate: number, config?: DeclickOptions): MasteringRepairDeclickStereoResult;
|
|
36
|
+
/** Offline LPC-based declicker. */
|
|
37
|
+
export declare function masteringRepairDeclick(request: MasteringRepairDeclickRequest): Float32Array;
|
|
38
|
+
export declare function masteringRepairDeclick(samples: Float32Array, sampleRate: number, options?: DeclickOptions): Float32Array;
|
|
39
|
+
/** Options for `masteringRepairDeclip`. */
|
|
40
|
+
export interface DeclipOptions {
|
|
41
|
+
clipThreshold?: number;
|
|
42
|
+
lpcOrder?: number;
|
|
43
|
+
iterations?: number;
|
|
44
|
+
lpcBlend?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface MasteringRepairDeclipRequest extends DeclipOptions {
|
|
47
|
+
samples: Float32Array;
|
|
48
|
+
sampleRate: number;
|
|
49
|
+
}
|
|
50
|
+
/** Request form of `masteringRepairDeclipStereo`. */
|
|
51
|
+
export interface MasteringRepairDeclipStereoRequest extends DeclipOptions {
|
|
52
|
+
left: Float32Array;
|
|
53
|
+
right: Float32Array;
|
|
54
|
+
sampleRate?: number;
|
|
55
|
+
}
|
|
56
|
+
/** Algorithms accepted by `masteringRepairDecrackle`. */
|
|
57
|
+
export type DecrackleMode = 'median' | 'waveletShrinkage';
|
|
58
|
+
/** Options for `masteringRepairDecrackle`. */
|
|
59
|
+
export interface DecrackleOptions {
|
|
60
|
+
threshold?: number;
|
|
61
|
+
mode?: DecrackleMode;
|
|
62
|
+
levels?: number;
|
|
63
|
+
}
|
|
64
|
+
export interface MasteringRepairDecrackleRequest extends DecrackleOptions {
|
|
65
|
+
samples: Float32Array;
|
|
66
|
+
sampleRate: number;
|
|
67
|
+
}
|
|
68
|
+
/** Request form of `masteringRepairDecrackleStereo`. */
|
|
69
|
+
export interface MasteringRepairDecrackleStereoRequest extends DecrackleOptions {
|
|
70
|
+
left: Float32Array;
|
|
71
|
+
right: Float32Array;
|
|
72
|
+
sampleRate?: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Offline LPC-based declipper.
|
|
76
|
+
*
|
|
77
|
+
* Only clipped runs of at most 512 consecutive samples are reconstructed with the LPC solver.
|
|
78
|
+
* The cap is a fixed sample count: it is not derived from `lpcOrder`, from `sampleRate`, or from
|
|
79
|
+
* any other option, so its duration depends on the rate (~10.7 ms at 48 kHz). A longer run is
|
|
80
|
+
* filled with cubic / linear interpolation instead, which keeps the solver's dense matrices
|
|
81
|
+
* bounded by the cap rather than by the input. Exceeding the cap silently changes the
|
|
82
|
+
* reconstruction method rather than throwing: `lpcOrder`, `iterations` and `lpcBlend` have no
|
|
83
|
+
* effect on the interpolated run.
|
|
84
|
+
*/
|
|
85
|
+
export declare function masteringRepairDeclip(request: MasteringRepairDeclipRequest): Float32Array;
|
|
86
|
+
export declare function masteringRepairDeclip(samples: Float32Array, sampleRate: number, options?: DeclipOptions): Float32Array;
|
|
87
|
+
/**
|
|
88
|
+
* Offline LPC-based declipper for a stereo pair.
|
|
89
|
+
*
|
|
90
|
+
* Takes the union of both channels' clipped runs. Each channel reconstructs
|
|
91
|
+
* the whole of every union run it has at least one clipped sample in; a
|
|
92
|
+
* channel with none is left untouched there — reconstructing unclipped audio
|
|
93
|
+
* to match the other side would replace real samples with an estimate. A
|
|
94
|
+
* plateau clipped in only one channel therefore produces no linking:
|
|
95
|
+
* `linkedRuns` is non-zero only where both channels are clipped in the same
|
|
96
|
+
* region with different extents.
|
|
97
|
+
*/
|
|
98
|
+
export declare function masteringRepairDeclipStereo(request: MasteringRepairDeclipStereoRequest): MasteringRepairDeclipStereoResult;
|
|
99
|
+
export declare function masteringRepairDeclipStereo(left: Float32Array, right: Float32Array, sampleRate: number, config?: DeclipOptions): MasteringRepairDeclipStereoResult;
|
|
100
|
+
/** Offline crackle suppressor (median or wavelet-shrinkage). */
|
|
101
|
+
export declare function masteringRepairDecrackle(request: MasteringRepairDecrackleRequest): Float32Array;
|
|
102
|
+
export declare function masteringRepairDecrackle(samples: Float32Array, sampleRate: number, options?: DecrackleOptions): Float32Array;
|
|
103
|
+
/**
|
|
104
|
+
* Offline crackle suppressor (median or wavelet-shrinkage) for a stereo pair.
|
|
105
|
+
*
|
|
106
|
+
* Crackle is surface damage: the two channels carry different scratches at different instants,
|
|
107
|
+
* so there is no common event for a shared decision to agree about. Each channel is decrackled
|
|
108
|
+
* on its own -- there is no linking, unlike {@link masteringRepairDeclickStereo} and
|
|
109
|
+
* {@link masteringRepairDeclipStereo} -- and this entry point exists to keep the reports and
|
|
110
|
+
* the channel-length contract in one place.
|
|
111
|
+
*/
|
|
112
|
+
export declare function masteringRepairDecrackleStereo(request: MasteringRepairDecrackleStereoRequest): MasteringRepairDecrackleStereoResult;
|
|
113
|
+
export declare function masteringRepairDecrackleStereo(left: Float32Array, right: Float32Array, sampleRate: number, config?: DecrackleOptions): MasteringRepairDecrackleStereoResult;
|
|
114
|
+
/** Request form of `masteringRepairDetectClicks`. */
|
|
115
|
+
export interface MasteringRepairDetectClicksRequest extends DeclickOptions {
|
|
116
|
+
samples: Float32Array;
|
|
117
|
+
sampleRate: number;
|
|
118
|
+
}
|
|
119
|
+
/** Request form of `masteringRepairDetectClipping`. */
|
|
120
|
+
export interface MasteringRepairDetectClippingRequest extends DeclipOptions {
|
|
121
|
+
samples: Float32Array;
|
|
122
|
+
sampleRate: number;
|
|
123
|
+
}
|
|
124
|
+
/** Request form of `masteringRepairDetectCrackle`. */
|
|
125
|
+
export interface MasteringRepairDetectCrackleRequest extends DecrackleOptions {
|
|
126
|
+
samples: Float32Array;
|
|
127
|
+
sampleRate: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Measures clicks without repairing.
|
|
131
|
+
*
|
|
132
|
+
* Runs the same LPC analysis {@link masteringRepairDeclick} runs, so a run counted here is one
|
|
133
|
+
* the repair would act on — a cheaper threshold-only scan would report runs it leaves alone.
|
|
134
|
+
* That also means the options that shape the repair shape the count: a large `rejected` says
|
|
135
|
+
* `maxClickSamples` or `neighborRatio` is too tight for this material, not that the material is
|
|
136
|
+
* clean.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* const detected = masteringRepairDetectClicks({ samples, sampleRate: 48000 });
|
|
141
|
+
* if (detected.perSecond > 1) samples = masteringRepairDeclick({ samples, sampleRate: 48000 });
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare function masteringRepairDetectClicks(request: MasteringRepairDetectClicksRequest): ClickDetection;
|
|
145
|
+
export declare function masteringRepairDetectClicks(samples: Float32Array, sampleRate: number, options?: DeclickOptions): ClickDetection;
|
|
146
|
+
/**
|
|
147
|
+
* Measures clipping without repairing.
|
|
148
|
+
*
|
|
149
|
+
* Counts samples at or past `clipThreshold`. No other option reaches the result — `lpcOrder`,
|
|
150
|
+
* `iterations` and `lpcBlend` are validated and then unread, since nothing here is
|
|
151
|
+
* reconstructed. `sampleRate` is validated without being read for the same reason: no field of
|
|
152
|
+
* the result is a rate.
|
|
153
|
+
*
|
|
154
|
+
* Compare `longestRunSamples` against the 512-sample LPC cap to tell in advance which runs
|
|
155
|
+
* {@link masteringRepairDeclip} would fill by interpolation rather than with the solver.
|
|
156
|
+
*
|
|
157
|
+
* `flatRunCount`, `longestFlatRunSamples`, `flatSampleCount` and `flatLevel` answer a different
|
|
158
|
+
* question from the four fields above: those are read against `clipThreshold`, so they count the
|
|
159
|
+
* apex of any waveform that reaches it — a full-scale sine reports thousands of "clipped" samples
|
|
160
|
+
* having never been clipped — and they miss material clipped in one tool and attenuated in the
|
|
161
|
+
* next, which leaves nothing at the threshold. The flat-top fields instead count runs of at least
|
|
162
|
+
* 3 consecutive bit-identical samples whose level sits within 1 dB of the signal's peak, so they
|
|
163
|
+
* catch a clipped-then-attenuated waveform that `sampleCount` reports as clean.
|
|
164
|
+
*
|
|
165
|
+
* Two opposite errors follow from what a flat top actually is. A genuinely flat-topped waveform —
|
|
166
|
+
* a square or pulse train, a fully limited master — counts as clipped here too and cannot be told
|
|
167
|
+
* apart from clipping in the time domain: a false positive. In the other direction, anything that
|
|
168
|
+
* moves the two channels' samples independently before this runs erases a real flat top, so a
|
|
169
|
+
* zero reading is not proof the material was never clipped — a stereo downmix does this, and so
|
|
170
|
+
* do resampling and lossy coding, because the plateau stops being exactly level once each sample
|
|
171
|
+
* is nudged on its own. **Detect each channel of a stereo signal separately, before any downmix,
|
|
172
|
+
* never on the mixed-down result.**
|
|
173
|
+
*/
|
|
174
|
+
export declare function masteringRepairDetectClipping(request: MasteringRepairDetectClippingRequest): ClipDetection;
|
|
175
|
+
export declare function masteringRepairDetectClipping(samples: Float32Array, sampleRate: number, options?: DeclipOptions): ClipDetection;
|
|
176
|
+
/**
|
|
177
|
+
* Measures crackle without repairing.
|
|
178
|
+
*
|
|
179
|
+
* Measured by the median criterion whatever `mode` is set to: wavelet shrinkage removes crackle
|
|
180
|
+
* without ever deciding that a sample is crackle, so these counts do not describe what a
|
|
181
|
+
* wavelet-mode repair would remove. A caller therefore gets the same answer before choosing a
|
|
182
|
+
* mode.
|
|
183
|
+
*/
|
|
184
|
+
export declare function masteringRepairDetectCrackle(request: MasteringRepairDetectCrackleRequest): CrackleDetection;
|
|
185
|
+
export declare function masteringRepairDetectCrackle(samples: Float32Array, sampleRate: number, options?: DecrackleOptions): CrackleDetection;
|
|
186
|
+
//# sourceMappingURL=repair_impulsive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair_impulsive.d.ts","sourceRoot":"","sources":["../src/repair_impulsive.ts"],"names":[],"mappings":"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"}
|