@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,424 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defect detection and repair report types: declick, declip, decrackle,
|
|
3
|
+
* denoise, dehum, dereverb and silence trim.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* What a declick analysis found in one channel of a
|
|
7
|
+
* {@link MasteringRepairDeclickStereoResult}. Runs, not samples.
|
|
8
|
+
*/
|
|
9
|
+
export interface ClickDetection {
|
|
10
|
+
/** Runs meeting the repair criteria. */
|
|
11
|
+
count: number;
|
|
12
|
+
/**
|
|
13
|
+
* Outlier runs the criteria excluded. A large value says `maxClickSamples`
|
|
14
|
+
* or `neighborRatio` is too tight for this material, not that the material
|
|
15
|
+
* is clean.
|
|
16
|
+
*/
|
|
17
|
+
rejected: number;
|
|
18
|
+
/** Over the counted runs. */
|
|
19
|
+
longestRunSamples: number;
|
|
20
|
+
/** `count` divided by the input duration. */
|
|
21
|
+
perSecond: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* What a declick pass found in one channel of a
|
|
25
|
+
* {@link MasteringRepairDeclickStereoResult} and what it did to it.
|
|
26
|
+
*/
|
|
27
|
+
export interface DeclickReport {
|
|
28
|
+
/** This channel's own analysis of the input. */
|
|
29
|
+
detected: ClickDetection;
|
|
30
|
+
/**
|
|
31
|
+
* Runs interpolated. Larger than `detected.count` only under linked stereo
|
|
32
|
+
* detection.
|
|
33
|
+
*/
|
|
34
|
+
repairedRuns: number;
|
|
35
|
+
/** Samples overwritten by interpolation. */
|
|
36
|
+
repairedSamples: number;
|
|
37
|
+
/**
|
|
38
|
+
* Of `repairedRuns`, those whose extent this channel's own detection did
|
|
39
|
+
* not produce. Always 0 from the mono `masteringRepairDeclick`.
|
|
40
|
+
*/
|
|
41
|
+
linkedRuns: number;
|
|
42
|
+
/**
|
|
43
|
+
* False when the input was too short for `lpcOrder`: every fill then
|
|
44
|
+
* reduces to linear interpolation.
|
|
45
|
+
*/
|
|
46
|
+
lpcModelUsed: boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A declicked stereo pair and what each channel's pass found and did.
|
|
50
|
+
*
|
|
51
|
+
* A run either channel's detector selects is repaired in BOTH channels — a
|
|
52
|
+
* common-mode click repaired on one side only would move the stereo image.
|
|
53
|
+
* Only the selection is shared: each channel's fill is computed from its own
|
|
54
|
+
* samples and its own AR model, which is why `leftReport` and `rightReport`
|
|
55
|
+
* genuinely differ. `linkedRuns` is the part of `repairedRuns` this channel's
|
|
56
|
+
* own detection did not produce, so it is normally non-zero here. Merged runs
|
|
57
|
+
* can exceed `maxClickSamples`: that cap governs what may be selected, not
|
|
58
|
+
* how far a selection reaches once both channels agree a click is there.
|
|
59
|
+
*/
|
|
60
|
+
export interface MasteringRepairDeclickStereoResult {
|
|
61
|
+
left: Float32Array;
|
|
62
|
+
right: Float32Array;
|
|
63
|
+
leftReport: DeclickReport;
|
|
64
|
+
rightReport: DeclickReport;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* What a declip analysis found in one channel of a
|
|
68
|
+
* {@link MasteringRepairDeclipStereoResult}.
|
|
69
|
+
*/
|
|
70
|
+
export interface ClipDetection {
|
|
71
|
+
/** Samples at or past `clipThreshold`. */
|
|
72
|
+
sampleCount: number;
|
|
73
|
+
/** `sampleCount` divided by the input length. */
|
|
74
|
+
sampleFraction: number;
|
|
75
|
+
/** Runs of consecutive clipped samples. */
|
|
76
|
+
runCount: number;
|
|
77
|
+
/** A run past the 512-sample cap takes the interpolation fallback instead of the solver. */
|
|
78
|
+
longestRunSamples: number;
|
|
79
|
+
/**
|
|
80
|
+
* Runs of at least 3 bit-identical samples sitting within 1 dB of the signal's peak. Reads
|
|
81
|
+
* clipping that survived a later gain change and so no longer reaches `clipThreshold` — the
|
|
82
|
+
* fields above see none of it. A genuinely flat-topped waveform (a square or pulse train, a
|
|
83
|
+
* fully limited master) counts here too and cannot be told apart from clipping in the time
|
|
84
|
+
* domain.
|
|
85
|
+
*/
|
|
86
|
+
flatRunCount: number;
|
|
87
|
+
/** Over the counted flat-top runs. */
|
|
88
|
+
longestFlatRunSamples: number;
|
|
89
|
+
/** Samples belonging to a counted flat-top run. */
|
|
90
|
+
flatSampleCount: number;
|
|
91
|
+
/** The magnitude the counted runs sit at; 0 when there are none. */
|
|
92
|
+
flatLevel: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* What a declip pass found in one channel of a
|
|
96
|
+
* {@link MasteringRepairDeclipStereoResult} and what it did to it.
|
|
97
|
+
*/
|
|
98
|
+
export interface DeclipReport {
|
|
99
|
+
/** This channel's own analysis of the input. */
|
|
100
|
+
detected: ClipDetection;
|
|
101
|
+
/** Runs the Janssen solver filled. */
|
|
102
|
+
lpcReconstructedRuns: number;
|
|
103
|
+
/**
|
|
104
|
+
* Runs past the LPC gap cap, filled by interpolation instead: for these,
|
|
105
|
+
* `lpcOrder`, `iterations` and `lpcBlend` had no effect.
|
|
106
|
+
*/
|
|
107
|
+
interpolatedRuns: number;
|
|
108
|
+
/** Samples overwritten by either fill. */
|
|
109
|
+
repairedSamples: number;
|
|
110
|
+
/**
|
|
111
|
+
* Of the repaired runs, those reaching past this channel's own clipped
|
|
112
|
+
* samples because the other channel's run was wider. Always 0 from the
|
|
113
|
+
* mono `masteringRepairDeclip`.
|
|
114
|
+
*/
|
|
115
|
+
linkedRuns: number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* A declipped stereo pair and what each channel's pass found and did.
|
|
119
|
+
*
|
|
120
|
+
* Declip takes the union of both channels' clipped runs. Each channel
|
|
121
|
+
* reconstructs the whole of every union run it has at least one clipped
|
|
122
|
+
* sample in; a channel with none is left untouched there. `linkedRuns` is
|
|
123
|
+
* therefore 0 for a plateau clipped in only one channel, and non-zero only
|
|
124
|
+
* where both channels are clipped in the same region with different
|
|
125
|
+
* extents — the narrower channel is what reaches past its own clipped
|
|
126
|
+
* samples.
|
|
127
|
+
*/
|
|
128
|
+
export interface MasteringRepairDeclipStereoResult {
|
|
129
|
+
left: Float32Array;
|
|
130
|
+
right: Float32Array;
|
|
131
|
+
leftReport: DeclipReport;
|
|
132
|
+
rightReport: DeclipReport;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* What a decrackle analysis found in one channel of a
|
|
136
|
+
* {@link MasteringRepairDecrackleStereoResult}.
|
|
137
|
+
*
|
|
138
|
+
* Crackle is measured by the median criterion regardless of the configured `DecrackleMode` --
|
|
139
|
+
* wavelet shrinkage is a removal method, not a detection method, so this is the module's only
|
|
140
|
+
* definition of the defect.
|
|
141
|
+
*/
|
|
142
|
+
export interface CrackleDetection {
|
|
143
|
+
/** Samples deviating from the local median by more than `threshold`. */
|
|
144
|
+
sampleCount: number;
|
|
145
|
+
/** `sampleCount` divided by the input length. */
|
|
146
|
+
sampleFraction: number;
|
|
147
|
+
/** `sampleCount` divided by the input duration. */
|
|
148
|
+
perSecond: number;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* What a decrackle pass found in one channel of a
|
|
152
|
+
* {@link MasteringRepairDecrackleStereoResult} and what it did to it.
|
|
153
|
+
*
|
|
154
|
+
* The two modes remove crackle by different means and report through different fields. A field
|
|
155
|
+
* belonging to the other mode reads zero because that mode did not run -- the caller knows this
|
|
156
|
+
* from the config it passed, so it is not an unfilled value.
|
|
157
|
+
*/
|
|
158
|
+
export interface DecrackleReport {
|
|
159
|
+
/** This channel's own analysis of the input. */
|
|
160
|
+
detected: CrackleDetection;
|
|
161
|
+
/** Median mode: samples the filter overwrote. Equal to `detected.sampleCount`. */
|
|
162
|
+
replacedSamples: number;
|
|
163
|
+
/** Wavelet mode: detail coefficients examined by the unshifted pass, not by every pass the mode averages. */
|
|
164
|
+
detailCoefficients: number;
|
|
165
|
+
/** Wavelet mode: of those, driven to zero. */
|
|
166
|
+
shrunkCoefficients: number;
|
|
167
|
+
/** Wavelet mode: the MAD noise estimate that set every level's threshold. The configured
|
|
168
|
+
* `threshold` is only a cap on it. */
|
|
169
|
+
noiseSigma: number;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* A decrackled stereo pair and what each channel's pass found and did.
|
|
173
|
+
*
|
|
174
|
+
* Crackle is surface damage: the two channels carry different scratches at different instants,
|
|
175
|
+
* so there is no common event for a shared decision to agree about. Both modes are memoryless
|
|
176
|
+
* across channels, so the pair is processed independently and there is no `linkedRuns` field,
|
|
177
|
+
* unlike {@link MasteringRepairDeclickStereoResult} and {@link MasteringRepairDeclipStereoResult}.
|
|
178
|
+
*/
|
|
179
|
+
export interface MasteringRepairDecrackleStereoResult {
|
|
180
|
+
left: Float32Array;
|
|
181
|
+
right: Float32Array;
|
|
182
|
+
leftReport: DecrackleReport;
|
|
183
|
+
rightReport: DecrackleReport;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* What a dehum analysis found in one channel of a
|
|
187
|
+
* {@link MasteringRepairDehumStereoResult}.
|
|
188
|
+
*
|
|
189
|
+
* Always measured through the estimation path, whatever `DehumOptions.adaptive` says: the
|
|
190
|
+
* fixed path notches the configured frequency without ever looking for hum, so a detector
|
|
191
|
+
* following the flag would hand back its own input.
|
|
192
|
+
*/
|
|
193
|
+
export interface HumDetection {
|
|
194
|
+
/** Tracked fundamental; the configured value when adaptive tracking is off. */
|
|
195
|
+
fundamentalHz: number;
|
|
196
|
+
/** Winning candidate's projected energy over the median candidate; 1.0 means no peak
|
|
197
|
+
* was found at all. Not a lock flag. */
|
|
198
|
+
fundamentalProminence: number;
|
|
199
|
+
/** Harmonics found above the floor, not necessarily a contiguous run from the first. */
|
|
200
|
+
harmonics: number;
|
|
201
|
+
/** Input level at each k*f0, k ascending, length 16. Measured for every k the sample
|
|
202
|
+
* rate carries, not only the notched ones; a k*f0 at or past Nyquist reads the dB floor
|
|
203
|
+
* because nothing is there to measure. */
|
|
204
|
+
harmonicDbfs: Float32Array;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* What a dehum pass found in one channel of a
|
|
208
|
+
* {@link MasteringRepairDehumStereoResult} and what it did to it.
|
|
209
|
+
*/
|
|
210
|
+
export interface DehumReport {
|
|
211
|
+
/** This channel's own analysis, before filtering. */
|
|
212
|
+
detected: HumDetection;
|
|
213
|
+
/** Harmonics the cascade reached; fewer than the configured `harmonics` once k*f0
|
|
214
|
+
* hits Nyquist. */
|
|
215
|
+
notchedHarmonics: number;
|
|
216
|
+
/** Frequency the last notch refresh used. */
|
|
217
|
+
appliedFundamentalHz: number;
|
|
218
|
+
/** Largest excursion of the tracked frequency from the configured one. Zero without
|
|
219
|
+
* adaptive tracking, which is the measurement rather than an unset field. */
|
|
220
|
+
fundamentalDriftHz: number;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* A dehummed stereo pair and what each channel's pass found and did.
|
|
224
|
+
*
|
|
225
|
+
* Mains hum is one physical source, so with `DehumOptions.adaptive` set the tracker reads
|
|
226
|
+
* the channel mean and both cascades follow the one frequency it finds: `appliedFundamentalHz`
|
|
227
|
+
* and `fundamentalDriftHz` are therefore identical in both reports by construction, while each
|
|
228
|
+
* report's `detected` still measures that channel's own input and each channel keeps its own
|
|
229
|
+
* filter state. With `adaptive` clear, which is the default, nothing is shared and the two
|
|
230
|
+
* channels are filtered independently at the configured frequency.
|
|
231
|
+
*/
|
|
232
|
+
export interface MasteringRepairDehumStereoResult {
|
|
233
|
+
left: Float32Array;
|
|
234
|
+
right: Float32Array;
|
|
235
|
+
leftReport: DehumReport;
|
|
236
|
+
rightReport: DehumReport;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* What a denoise analysis found in a
|
|
240
|
+
* {@link MasteringRepairDenoiseClassicalStereoResult}.
|
|
241
|
+
*
|
|
242
|
+
* A pair-level measurement, and the only absolute one in that result: the estimator runs on
|
|
243
|
+
* the channel-summed power, so two identical channels read `10*log10(2)` -- about
|
|
244
|
+
* 3.01 dB -- above the same material through `masteringRepairDenoiseClassical`. Compare a stereo
|
|
245
|
+
* floor only against another stereo floor.
|
|
246
|
+
*/
|
|
247
|
+
export interface NoiseDetection {
|
|
248
|
+
/** Broadband estimated noise floor, in dBFS. */
|
|
249
|
+
floorDbfs: number;
|
|
250
|
+
/** The floor's shape, low band to high, length 32. A geometric grid from 20 Hz to Nyquist --
|
|
251
|
+
* the same axis the mastering report's `bandEnergyDeltaDb` uses, so a noise floor and a
|
|
252
|
+
* tonal-balance change can be read together. */
|
|
253
|
+
bandFloorDbfs: Float32Array;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* What a denoise pass found in a
|
|
257
|
+
* {@link MasteringRepairDenoiseClassicalStereoResult} and what it removed.
|
|
258
|
+
*/
|
|
259
|
+
export interface DenoiseReport {
|
|
260
|
+
/** The pair's analysis, before the mask. */
|
|
261
|
+
detected: NoiseDetection;
|
|
262
|
+
/** Mean attenuation the gain mask applied. Zero reads the same whether the mask was
|
|
263
|
+
* transparent or no mask ran at all. */
|
|
264
|
+
meanReductionDb: number;
|
|
265
|
+
/** Deepest attenuation any cell applied; at `reductionDb` the floor set the depth rather
|
|
266
|
+
* than the estimate. */
|
|
267
|
+
maxReductionDb: number;
|
|
268
|
+
/** Fraction of cells sitting on that floor. Always 0 in `spectralSubtraction` mode, which
|
|
269
|
+
* floors on `spectralFloor` instead, so 0 from that mode is the mode and not a
|
|
270
|
+
* measurement. */
|
|
271
|
+
floorLimitedFraction: number;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* A denoised stereo pair and the one mask that produced it.
|
|
275
|
+
*
|
|
276
|
+
* One `report` rather than a per-channel pair: the gain mask is built from the channel-summed
|
|
277
|
+
* power and applied unchanged to both channels, so the pass cannot move an interchannel level
|
|
278
|
+
* or phase difference, and a pair would be two copies of one measurement.
|
|
279
|
+
*
|
|
280
|
+
* Needs at least `nFft` samples and REJECTS a shorter input, the opposite of
|
|
281
|
+
* {@link MasteringRepairDereverbClassicalStereoResult}'s entry point, which pads one.
|
|
282
|
+
*/
|
|
283
|
+
export interface MasteringRepairDenoiseClassicalStereoResult {
|
|
284
|
+
left: Float32Array;
|
|
285
|
+
right: Float32Array;
|
|
286
|
+
report: DenoiseReport;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* A denoised channel set and the one mask that produced it.
|
|
290
|
+
*
|
|
291
|
+
* The N-channel form of {@link MasteringRepairDenoiseClassicalStereoResult}: one mask over the
|
|
292
|
+
* channel-summed power, applied unchanged to every channel, so no interchannel level or phase
|
|
293
|
+
* difference moves however many channels there are. One channel reproduces
|
|
294
|
+
* `masteringRepairDenoiseClassical` bit for bit; two reproduce the stereo entry plane for plane.
|
|
295
|
+
*
|
|
296
|
+
* `report.detected` is the SET's and absolute: N identical channels read `10*log10(N)` above one
|
|
297
|
+
* of them — about 3.01 dB for a pair and 4.77 dB for three. Every other field of the report is a
|
|
298
|
+
* fraction and does not move with the channel count.
|
|
299
|
+
*/
|
|
300
|
+
export interface MasteringRepairDenoiseClassicalLinkedResult {
|
|
301
|
+
/** One output per input channel, in input order. */
|
|
302
|
+
channels: Float32Array[];
|
|
303
|
+
report: DenoiseReport;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* What a dereverb analysis found in a
|
|
307
|
+
* {@link MasteringRepairDereverbClassicalStereoResult}.
|
|
308
|
+
*
|
|
309
|
+
* NOT an ISO 3382 reverberation time: no Schroeder integration, no noise-floor truncation,
|
|
310
|
+
* STFT bins rather than octave bands, and music is not a free decay. Use `estimateRoom` for a
|
|
311
|
+
* graded RT60; this reports what the module itself measured while deciding how much to
|
|
312
|
+
* subtract.
|
|
313
|
+
*/
|
|
314
|
+
export interface ReverbDetection {
|
|
315
|
+
/** Decay across the module's own late lag, in dB. Less negative means the material sustains
|
|
316
|
+
* across that lag, which a late tail does and a dry offset does not -- so a reverberant
|
|
317
|
+
* input reads HIGHER here than the same material dry. */
|
|
318
|
+
lateDecayRatioDb: number;
|
|
319
|
+
/** Mean WPE predictor norm, before the clamp. Exactly 0 whenever the WPE stage did not run,
|
|
320
|
+
* which is the case unless `wpeEnabled` is set -- and it is clear by default, so a
|
|
321
|
+
* default-config pass reports 0 here as its measurement. */
|
|
322
|
+
latePredictability: number;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* What a dereverb pass found in a
|
|
326
|
+
* {@link MasteringRepairDereverbClassicalStereoResult} and what it removed.
|
|
327
|
+
*/
|
|
328
|
+
export interface DereverbReport {
|
|
329
|
+
/** The pair's analysis. */
|
|
330
|
+
detected: ReverbDetection;
|
|
331
|
+
/** Mean attenuation the subtraction applied. */
|
|
332
|
+
meanReductionDb: number;
|
|
333
|
+
/** Fraction of cells the `threshold` gate admitted as late reverberation. The only
|
|
334
|
+
* observation of that knob: 0 alongside a nonzero `meanReductionDb` says the gate admitted
|
|
335
|
+
* nothing. */
|
|
336
|
+
suppressedFraction: number;
|
|
337
|
+
/** Mean predictor norm actually applied, after the clamp. Below
|
|
338
|
+
* `detected.latePredictability` says the clamp acted, an otherwise silent branch. Zero when
|
|
339
|
+
* the WPE stage did not run, so 0 by default. */
|
|
340
|
+
wpePredictorNorm: number;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* A dereverberated stereo pair and the one mask that produced it.
|
|
344
|
+
*
|
|
345
|
+
* One `report` rather than a per-channel pair: the mask is built from the channel-summed power
|
|
346
|
+
* and the WPE stage accumulates over both channels and applies one predictor set to each, so
|
|
347
|
+
* neither stage can move an interchannel level or phase difference.
|
|
348
|
+
*
|
|
349
|
+
* Every field of that report is a ratio or a fraction, so unlike {@link NoiseDetection}
|
|
350
|
+
* nothing here shifts with the channel count and a stereo figure is comparable against a mono
|
|
351
|
+
* one. An input shorter than `nFft` is PADDED for analysis rather than rejected, which is the
|
|
352
|
+
* opposite of {@link MasteringRepairDenoiseClassicalStereoResult}'s entry point.
|
|
353
|
+
*/
|
|
354
|
+
export interface MasteringRepairDereverbClassicalStereoResult {
|
|
355
|
+
left: Float32Array;
|
|
356
|
+
right: Float32Array;
|
|
357
|
+
report: DereverbReport;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* A dereverberated channel set and the one mask that produced it.
|
|
361
|
+
*
|
|
362
|
+
* The N-channel form of {@link MasteringRepairDereverbClassicalStereoResult}: one mask over the
|
|
363
|
+
* channel-summed power, and one WPE predictor set fitted over every channel's statistics, so
|
|
364
|
+
* neither stage can move an interchannel level or phase difference. One channel reproduces
|
|
365
|
+
* `masteringRepairDereverbClassical` bit for bit; two reproduce the stereo entry plane for plane.
|
|
366
|
+
*
|
|
367
|
+
* Every field of the report is a ratio or a fraction, so unlike
|
|
368
|
+
* {@link MasteringRepairDenoiseClassicalLinkedResult} nothing here shifts with the channel count.
|
|
369
|
+
* An input shorter than `nFft` is PADDED for analysis rather than rejected, again the opposite of
|
|
370
|
+
* that entry.
|
|
371
|
+
*/
|
|
372
|
+
export interface MasteringRepairDereverbClassicalLinkedResult {
|
|
373
|
+
/** One output per input channel, in input order. */
|
|
374
|
+
channels: Float32Array[];
|
|
375
|
+
report: DereverbReport;
|
|
376
|
+
}
|
|
377
|
+
/** One half-open sample range, in INPUT-buffer coordinates. */
|
|
378
|
+
export interface TrimRange {
|
|
379
|
+
/** First kept sample. */
|
|
380
|
+
first: number;
|
|
381
|
+
/** One past the last kept sample. An empty range has `first >= lastExclusive`. */
|
|
382
|
+
lastExclusive: number;
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* What a trim pass kept and what it dropped.
|
|
386
|
+
*
|
|
387
|
+
* A pass that kept nothing reports `range` as `(inputLength, inputLength)`, which counts the
|
|
388
|
+
* whole buffer as removed head and leaves `removedTailSamples` at 0. The two still sum to the
|
|
389
|
+
* input length, so a caller reporting how much went reads the right total; only the split
|
|
390
|
+
* between the ends is arbitrary there.
|
|
391
|
+
*/
|
|
392
|
+
export interface TrimReport {
|
|
393
|
+
/** The kept range, padding included. */
|
|
394
|
+
range: TrimRange;
|
|
395
|
+
/** Samples dropped before `range.first`. */
|
|
396
|
+
removedHeadSamples: number;
|
|
397
|
+
/** Samples dropped after `range.lastExclusive`. */
|
|
398
|
+
removedTailSamples: number;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* A trimmed stereo pair, the range both channels were cut to, and the two per-channel scans
|
|
402
|
+
* that range is the union of.
|
|
403
|
+
*
|
|
404
|
+
* The only repair stereo result whose arrays are SHORTER than the input, so `left.length` is
|
|
405
|
+
* the output length and the input's says nothing about it. Both channels come back the same
|
|
406
|
+
* length, because one range cuts both.
|
|
407
|
+
*
|
|
408
|
+
* A pair in which NEITHER channel carries signal comes back as two empty arrays and a success,
|
|
409
|
+
* not an error.
|
|
410
|
+
*
|
|
411
|
+
* One `report` plus two ranges, which is neither of the earlier repair stereo shapes:
|
|
412
|
+
* `report.range` is the union that was applied to both channels, while `leftRange` and
|
|
413
|
+
* `rightRange` are the per-channel scans it was formed from, so a caller can see which channel
|
|
414
|
+
* decided each edge. A channel carrying nothing reports an empty range and contributes nothing
|
|
415
|
+
* to the union.
|
|
416
|
+
*/
|
|
417
|
+
export interface MasteringRepairTrimSilenceStereoResult {
|
|
418
|
+
left: Float32Array;
|
|
419
|
+
right: Float32Array;
|
|
420
|
+
report: TrimReport;
|
|
421
|
+
leftRange: TrimRange;
|
|
422
|
+
rightRange: TrimRange;
|
|
423
|
+
}
|
|
424
|
+
//# sourceMappingURL=public_types_repair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_types_repair.d.ts","sourceRoot":"","sources":["../src/public_types_repair.ts"],"names":[],"mappings":"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"}
|