@libraz/libsonare 1.5.1 → 1.5.3
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/README.md +18 -3
- package/dist/index.d.ts +1165 -178
- package/dist/index.js +4830 -3871
- package/dist/index.js.map +1 -1
- package/dist/sonare.js +1 -1
- package/dist/sonare.wasm +0 -0
- package/dist/worklet.d.ts +29 -1
- package/dist/worklet.js +1068 -974
- package/dist/worklet.js.map +1 -1
- package/package.json +2 -1
- package/src/_chain_config.ts +46 -0
- package/src/audio.ts +24 -4
- package/src/effects_mastering.ts +25 -1
- package/src/effects_transform.ts +283 -43
- package/src/effects_voice_change.ts +46 -53
- package/src/feature_core.ts +316 -12
- package/src/feature_music.ts +462 -0
- package/src/feature_pitch.ts +61 -0
- package/src/feature_resample.ts +17 -2
- package/src/feature_spectral.ts +349 -2
- package/src/feature_spectrogram.ts +336 -0
- package/src/features.ts +2 -0
- package/src/index.ts +133 -1
- package/src/mastering_chain.ts +305 -50
- package/src/mastering_core.ts +242 -16
- package/src/mastering_dynamics.ts +66 -10
- package/src/mastering_repair.ts +119 -7
- package/src/metering.ts +366 -81
- package/src/mixer.ts +10 -3
- package/src/mixing_oneshot.ts +25 -5
- package/src/module_state.ts +1 -1
- package/src/project_class.ts +17 -6
- package/src/project_internal.ts +10 -2
- package/src/project_types.ts +25 -2
- package/src/public_types_mastering.ts +114 -4
- package/src/public_types_music.ts +1 -0
- package/src/public_types_spectral.ts +7 -0
- package/src/quick_analysis.ts +325 -117
- package/src/realtime_engine.ts +8 -0
- package/src/sonare.js.d.ts +56 -0
- package/src/stream_analyzer.ts +25 -2
- package/src/stream_types.ts +16 -1
- package/src/validation.ts +17 -2
- package/src/worklet/engine-clips.ts +67 -2
- package/src/worklet/engine-processor.ts +33 -5
- package/src/worklet/engine.ts +7 -3
- package/src/worklet/guards.ts +3 -0
- package/src/worklet/messages.ts +27 -0
package/src/mastering_repair.ts
CHANGED
|
@@ -17,6 +17,10 @@ export interface DeclickOptions {
|
|
|
17
17
|
lpcOrder?: number;
|
|
18
18
|
residualRatio?: number;
|
|
19
19
|
}
|
|
20
|
+
export interface MasteringRepairDeclickRequest extends DeclickOptions {
|
|
21
|
+
samples: Float32Array;
|
|
22
|
+
sampleRate: number;
|
|
23
|
+
}
|
|
20
24
|
|
|
21
25
|
/** Algorithms accepted by `masteringRepairDenoiseClassical`. */
|
|
22
26
|
export type DenoiseClassicalMode = 'logMmse' | 'mmseStsa' | 'spectralSubtraction';
|
|
@@ -38,23 +42,53 @@ export interface DenoiseClassicalOptions {
|
|
|
38
42
|
speechPresenceGain?: boolean;
|
|
39
43
|
gainSmoothing?: boolean;
|
|
40
44
|
}
|
|
45
|
+
export interface MasteringRepairDenoiseClassicalRequest extends DenoiseClassicalOptions {
|
|
46
|
+
samples: Float32Array;
|
|
47
|
+
sampleRate: number;
|
|
48
|
+
}
|
|
41
49
|
|
|
42
50
|
/** Offline LPC-based declicker. */
|
|
51
|
+
export function masteringRepairDeclick(request: MasteringRepairDeclickRequest): Float32Array;
|
|
43
52
|
export function masteringRepairDeclick(
|
|
44
53
|
samples: Float32Array,
|
|
45
54
|
sampleRate: number,
|
|
55
|
+
options?: DeclickOptions,
|
|
56
|
+
): Float32Array;
|
|
57
|
+
export function masteringRepairDeclick(
|
|
58
|
+
samples: Float32Array | MasteringRepairDeclickRequest,
|
|
59
|
+
sampleRate?: number,
|
|
46
60
|
options: DeclickOptions = {},
|
|
47
61
|
): Float32Array {
|
|
48
|
-
|
|
62
|
+
const request =
|
|
63
|
+
samples instanceof Float32Array
|
|
64
|
+
? { samples, sampleRate: sampleRate as number, ...options }
|
|
65
|
+
: samples;
|
|
66
|
+
return requireModule().masteringRepairDeclick(request.samples, request.sampleRate, request);
|
|
49
67
|
}
|
|
50
68
|
|
|
51
69
|
/** Offline STFT-domain classical denoiser (LogMMSE / MMSE-STSA / SpectralSubtraction). */
|
|
70
|
+
export function masteringRepairDenoiseClassical(
|
|
71
|
+
request: MasteringRepairDenoiseClassicalRequest,
|
|
72
|
+
): Float32Array;
|
|
52
73
|
export function masteringRepairDenoiseClassical(
|
|
53
74
|
samples: Float32Array,
|
|
54
75
|
sampleRate: number,
|
|
76
|
+
options?: DenoiseClassicalOptions,
|
|
77
|
+
): Float32Array;
|
|
78
|
+
export function masteringRepairDenoiseClassical(
|
|
79
|
+
samples: Float32Array | MasteringRepairDenoiseClassicalRequest,
|
|
80
|
+
sampleRate?: number,
|
|
55
81
|
options: DenoiseClassicalOptions = {},
|
|
56
82
|
): Float32Array {
|
|
57
|
-
|
|
83
|
+
const request =
|
|
84
|
+
samples instanceof Float32Array
|
|
85
|
+
? { samples, sampleRate: sampleRate as number, ...options }
|
|
86
|
+
: samples;
|
|
87
|
+
return requireModule().masteringRepairDenoiseClassical(
|
|
88
|
+
request.samples,
|
|
89
|
+
request.sampleRate,
|
|
90
|
+
request,
|
|
91
|
+
);
|
|
58
92
|
}
|
|
59
93
|
|
|
60
94
|
/** Options for `masteringRepairDeclip`. */
|
|
@@ -64,6 +98,10 @@ export interface DeclipOptions {
|
|
|
64
98
|
iterations?: number;
|
|
65
99
|
lpcBlend?: number;
|
|
66
100
|
}
|
|
101
|
+
export interface MasteringRepairDeclipRequest extends DeclipOptions {
|
|
102
|
+
samples: Float32Array;
|
|
103
|
+
sampleRate: number;
|
|
104
|
+
}
|
|
67
105
|
|
|
68
106
|
/** Algorithms accepted by `masteringRepairDecrackle`. */
|
|
69
107
|
export type DecrackleMode = 'median' | 'waveletShrinkage';
|
|
@@ -74,6 +112,10 @@ export interface DecrackleOptions {
|
|
|
74
112
|
mode?: DecrackleMode;
|
|
75
113
|
levels?: number;
|
|
76
114
|
}
|
|
115
|
+
export interface MasteringRepairDecrackleRequest extends DecrackleOptions {
|
|
116
|
+
samples: Float32Array;
|
|
117
|
+
sampleRate: number;
|
|
118
|
+
}
|
|
77
119
|
|
|
78
120
|
/** Options for `masteringRepairDehum`. */
|
|
79
121
|
export interface DehumOptions {
|
|
@@ -86,6 +128,10 @@ export interface DehumOptions {
|
|
|
86
128
|
frameSize?: number;
|
|
87
129
|
pllBandwidth?: number;
|
|
88
130
|
}
|
|
131
|
+
export interface MasteringRepairDehumRequest extends DehumOptions {
|
|
132
|
+
samples: Float32Array;
|
|
133
|
+
sampleRate: number;
|
|
134
|
+
}
|
|
89
135
|
|
|
90
136
|
/** Options for `masteringRepairDereverbClassical`. */
|
|
91
137
|
export interface DereverbClassicalOptions {
|
|
@@ -102,6 +148,10 @@ export interface DereverbClassicalOptions {
|
|
|
102
148
|
wpeTaps?: number;
|
|
103
149
|
wpeStrength?: number;
|
|
104
150
|
}
|
|
151
|
+
export interface MasteringRepairDereverbClassicalRequest extends DereverbClassicalOptions {
|
|
152
|
+
samples: Float32Array;
|
|
153
|
+
sampleRate: number;
|
|
154
|
+
}
|
|
105
155
|
|
|
106
156
|
/** Trimming modes accepted by `masteringRepairTrimSilence`. */
|
|
107
157
|
export type TrimSilenceMode = 'peak' | 'lufsGated';
|
|
@@ -114,48 +164,110 @@ export interface TrimSilenceOptions {
|
|
|
114
164
|
gateLufs?: number;
|
|
115
165
|
windowMs?: number;
|
|
116
166
|
}
|
|
167
|
+
export interface MasteringRepairTrimSilenceRequest extends TrimSilenceOptions {
|
|
168
|
+
samples: Float32Array;
|
|
169
|
+
sampleRate: number;
|
|
170
|
+
}
|
|
117
171
|
|
|
118
172
|
/** Offline LPC-based declipper. */
|
|
173
|
+
export function masteringRepairDeclip(request: MasteringRepairDeclipRequest): Float32Array;
|
|
119
174
|
export function masteringRepairDeclip(
|
|
120
175
|
samples: Float32Array,
|
|
121
176
|
sampleRate: number,
|
|
177
|
+
options?: DeclipOptions,
|
|
178
|
+
): Float32Array;
|
|
179
|
+
export function masteringRepairDeclip(
|
|
180
|
+
samples: Float32Array | MasteringRepairDeclipRequest,
|
|
181
|
+
sampleRate?: number,
|
|
122
182
|
options: DeclipOptions = {},
|
|
123
183
|
): Float32Array {
|
|
124
|
-
|
|
184
|
+
const request =
|
|
185
|
+
samples instanceof Float32Array
|
|
186
|
+
? { samples, sampleRate: sampleRate as number, ...options }
|
|
187
|
+
: samples;
|
|
188
|
+
return requireModule().masteringRepairDeclip(request.samples, request.sampleRate, request);
|
|
125
189
|
}
|
|
126
190
|
|
|
127
191
|
/** Offline crackle suppressor (median or wavelet-shrinkage). */
|
|
192
|
+
export function masteringRepairDecrackle(request: MasteringRepairDecrackleRequest): Float32Array;
|
|
128
193
|
export function masteringRepairDecrackle(
|
|
129
194
|
samples: Float32Array,
|
|
130
195
|
sampleRate: number,
|
|
196
|
+
options?: DecrackleOptions,
|
|
197
|
+
): Float32Array;
|
|
198
|
+
export function masteringRepairDecrackle(
|
|
199
|
+
samples: Float32Array | MasteringRepairDecrackleRequest,
|
|
200
|
+
sampleRate?: number,
|
|
131
201
|
options: DecrackleOptions = {},
|
|
132
202
|
): Float32Array {
|
|
133
|
-
|
|
203
|
+
const request =
|
|
204
|
+
samples instanceof Float32Array
|
|
205
|
+
? { samples, sampleRate: sampleRate as number, ...options }
|
|
206
|
+
: samples;
|
|
207
|
+
return requireModule().masteringRepairDecrackle(request.samples, request.sampleRate, request);
|
|
134
208
|
}
|
|
135
209
|
|
|
136
210
|
/** Offline mains-hum remover. */
|
|
211
|
+
export function masteringRepairDehum(request: MasteringRepairDehumRequest): Float32Array;
|
|
137
212
|
export function masteringRepairDehum(
|
|
138
213
|
samples: Float32Array,
|
|
139
214
|
sampleRate: number,
|
|
215
|
+
options?: DehumOptions,
|
|
216
|
+
): Float32Array;
|
|
217
|
+
export function masteringRepairDehum(
|
|
218
|
+
samples: Float32Array | MasteringRepairDehumRequest,
|
|
219
|
+
sampleRate?: number,
|
|
140
220
|
options: DehumOptions = {},
|
|
141
221
|
): Float32Array {
|
|
142
|
-
|
|
222
|
+
const request =
|
|
223
|
+
samples instanceof Float32Array
|
|
224
|
+
? { samples, sampleRate: sampleRate as number, ...options }
|
|
225
|
+
: samples;
|
|
226
|
+
return requireModule().masteringRepairDehum(request.samples, request.sampleRate, request);
|
|
143
227
|
}
|
|
144
228
|
|
|
145
229
|
/** Offline classical dereverberator (spectral subtraction + optional WPE). */
|
|
230
|
+
export function masteringRepairDereverbClassical(
|
|
231
|
+
request: MasteringRepairDereverbClassicalRequest,
|
|
232
|
+
): Float32Array;
|
|
146
233
|
export function masteringRepairDereverbClassical(
|
|
147
234
|
samples: Float32Array,
|
|
148
235
|
sampleRate: number,
|
|
236
|
+
options?: DereverbClassicalOptions,
|
|
237
|
+
): Float32Array;
|
|
238
|
+
export function masteringRepairDereverbClassical(
|
|
239
|
+
samples: Float32Array | MasteringRepairDereverbClassicalRequest,
|
|
240
|
+
sampleRate?: number,
|
|
149
241
|
options: DereverbClassicalOptions = {},
|
|
150
242
|
): Float32Array {
|
|
151
|
-
|
|
243
|
+
const request =
|
|
244
|
+
samples instanceof Float32Array
|
|
245
|
+
? { samples, sampleRate: sampleRate as number, ...options }
|
|
246
|
+
: samples;
|
|
247
|
+
return requireModule().masteringRepairDereverbClassical(
|
|
248
|
+
request.samples,
|
|
249
|
+
request.sampleRate,
|
|
250
|
+
request,
|
|
251
|
+
);
|
|
152
252
|
}
|
|
153
253
|
|
|
154
254
|
/** Offline silence trimmer (peak threshold or LUFS-gated). */
|
|
255
|
+
export function masteringRepairTrimSilence(
|
|
256
|
+
request: MasteringRepairTrimSilenceRequest,
|
|
257
|
+
): Float32Array;
|
|
155
258
|
export function masteringRepairTrimSilence(
|
|
156
259
|
samples: Float32Array,
|
|
157
260
|
sampleRate: number,
|
|
261
|
+
options?: TrimSilenceOptions,
|
|
262
|
+
): Float32Array;
|
|
263
|
+
export function masteringRepairTrimSilence(
|
|
264
|
+
samples: Float32Array | MasteringRepairTrimSilenceRequest,
|
|
265
|
+
sampleRate?: number,
|
|
158
266
|
options: TrimSilenceOptions = {},
|
|
159
267
|
): Float32Array {
|
|
160
|
-
|
|
268
|
+
const request =
|
|
269
|
+
samples instanceof Float32Array
|
|
270
|
+
? { samples, sampleRate: sampleRate as number, ...options }
|
|
271
|
+
: samples;
|
|
272
|
+
return requireModule().masteringRepairTrimSilence(request.samples, request.sampleRate, request);
|
|
161
273
|
}
|