@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.
Files changed (48) hide show
  1. package/README.md +18 -3
  2. package/dist/index.d.ts +1165 -178
  3. package/dist/index.js +4830 -3871
  4. package/dist/index.js.map +1 -1
  5. package/dist/sonare.js +1 -1
  6. package/dist/sonare.wasm +0 -0
  7. package/dist/worklet.d.ts +29 -1
  8. package/dist/worklet.js +1068 -974
  9. package/dist/worklet.js.map +1 -1
  10. package/package.json +2 -1
  11. package/src/_chain_config.ts +46 -0
  12. package/src/audio.ts +24 -4
  13. package/src/effects_mastering.ts +25 -1
  14. package/src/effects_transform.ts +283 -43
  15. package/src/effects_voice_change.ts +46 -53
  16. package/src/feature_core.ts +316 -12
  17. package/src/feature_music.ts +462 -0
  18. package/src/feature_pitch.ts +61 -0
  19. package/src/feature_resample.ts +17 -2
  20. package/src/feature_spectral.ts +349 -2
  21. package/src/feature_spectrogram.ts +336 -0
  22. package/src/features.ts +2 -0
  23. package/src/index.ts +133 -1
  24. package/src/mastering_chain.ts +305 -50
  25. package/src/mastering_core.ts +242 -16
  26. package/src/mastering_dynamics.ts +66 -10
  27. package/src/mastering_repair.ts +119 -7
  28. package/src/metering.ts +366 -81
  29. package/src/mixer.ts +10 -3
  30. package/src/mixing_oneshot.ts +25 -5
  31. package/src/module_state.ts +1 -1
  32. package/src/project_class.ts +17 -6
  33. package/src/project_internal.ts +10 -2
  34. package/src/project_types.ts +25 -2
  35. package/src/public_types_mastering.ts +114 -4
  36. package/src/public_types_music.ts +1 -0
  37. package/src/public_types_spectral.ts +7 -0
  38. package/src/quick_analysis.ts +325 -117
  39. package/src/realtime_engine.ts +8 -0
  40. package/src/sonare.js.d.ts +56 -0
  41. package/src/stream_analyzer.ts +25 -2
  42. package/src/stream_types.ts +16 -1
  43. package/src/validation.ts +17 -2
  44. package/src/worklet/engine-clips.ts +67 -2
  45. package/src/worklet/engine-processor.ts +33 -5
  46. package/src/worklet/engine.ts +7 -3
  47. package/src/worklet/guards.ts +3 -0
  48. package/src/worklet/messages.ts +27 -0
@@ -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
- return requireModule().masteringRepairDeclick(samples, sampleRate, options);
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
- return requireModule().masteringRepairDenoiseClassical(samples, sampleRate, options);
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
- return requireModule().masteringRepairDeclip(samples, sampleRate, options);
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
- return requireModule().masteringRepairDecrackle(samples, sampleRate, options);
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
- return requireModule().masteringRepairDehum(samples, sampleRate, options);
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
- return requireModule().masteringRepairDereverbClassical(samples, sampleRate, options);
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
- return requireModule().masteringRepairTrimSilence(samples, sampleRate, options);
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
  }