@libraz/libsonare 1.0.4 → 1.1.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/README.md +136 -1
- package/dist/index.d.ts +523 -180
- package/dist/index.js +998 -1001
- package/dist/index.js.map +1 -1
- package/dist/sonare.js +1 -1
- package/dist/sonare.wasm +0 -0
- package/package.json +13 -26
- package/src/index.ts +1838 -0
- package/src/public_types.ts +401 -0
- package/src/sonare.js.d.ts +624 -0
- package/src/stream_types.ts +98 -0
- package/src/wasm_types.ts +555 -0
- package/README.npm.md +0 -114
- package/dist/index.d.ts.map +0 -1
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pitch class enum (C=0, C#=1, ..., B=11)
|
|
3
|
+
*/
|
|
4
|
+
export const PitchClass = {
|
|
5
|
+
C: 0,
|
|
6
|
+
Cs: 1,
|
|
7
|
+
D: 2,
|
|
8
|
+
Ds: 3,
|
|
9
|
+
E: 4,
|
|
10
|
+
F: 5,
|
|
11
|
+
Fs: 6,
|
|
12
|
+
G: 7,
|
|
13
|
+
Gs: 8,
|
|
14
|
+
A: 9,
|
|
15
|
+
As: 10,
|
|
16
|
+
B: 11,
|
|
17
|
+
} as const;
|
|
18
|
+
|
|
19
|
+
export type PitchClass = (typeof PitchClass)[keyof typeof PitchClass];
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Musical mode
|
|
23
|
+
*/
|
|
24
|
+
export const Mode = {
|
|
25
|
+
Major: 0,
|
|
26
|
+
Minor: 1,
|
|
27
|
+
} as const;
|
|
28
|
+
|
|
29
|
+
export type Mode = (typeof Mode)[keyof typeof Mode];
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Chord quality
|
|
33
|
+
*/
|
|
34
|
+
export const ChordQuality = {
|
|
35
|
+
Major: 0,
|
|
36
|
+
Minor: 1,
|
|
37
|
+
Diminished: 2,
|
|
38
|
+
Augmented: 3,
|
|
39
|
+
Dominant7: 4,
|
|
40
|
+
Major7: 5,
|
|
41
|
+
Minor7: 6,
|
|
42
|
+
Sus2: 7,
|
|
43
|
+
Sus4: 8,
|
|
44
|
+
} as const;
|
|
45
|
+
|
|
46
|
+
export type ChordQuality = (typeof ChordQuality)[keyof typeof ChordQuality];
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Section type
|
|
50
|
+
*/
|
|
51
|
+
export const SectionType = {
|
|
52
|
+
Intro: 0,
|
|
53
|
+
Verse: 1,
|
|
54
|
+
PreChorus: 2,
|
|
55
|
+
Chorus: 3,
|
|
56
|
+
Bridge: 4,
|
|
57
|
+
Instrumental: 5,
|
|
58
|
+
Outro: 6,
|
|
59
|
+
} as const;
|
|
60
|
+
|
|
61
|
+
export type SectionType = (typeof SectionType)[keyof typeof SectionType];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Detected musical key
|
|
65
|
+
*/
|
|
66
|
+
export interface Key {
|
|
67
|
+
root: PitchClass;
|
|
68
|
+
mode: Mode;
|
|
69
|
+
confidence: number;
|
|
70
|
+
name: string;
|
|
71
|
+
shortName: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Detected beat
|
|
76
|
+
*/
|
|
77
|
+
export interface Beat {
|
|
78
|
+
time: number;
|
|
79
|
+
strength: number;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Detected chord
|
|
84
|
+
*/
|
|
85
|
+
export interface Chord {
|
|
86
|
+
root: PitchClass;
|
|
87
|
+
quality: ChordQuality;
|
|
88
|
+
start: number;
|
|
89
|
+
end: number;
|
|
90
|
+
confidence: number;
|
|
91
|
+
name: string;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Detected section
|
|
96
|
+
*/
|
|
97
|
+
export interface Section {
|
|
98
|
+
type: SectionType;
|
|
99
|
+
start: number;
|
|
100
|
+
end: number;
|
|
101
|
+
energyLevel: number;
|
|
102
|
+
confidence: number;
|
|
103
|
+
name: string;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Timbre characteristics
|
|
108
|
+
*/
|
|
109
|
+
export interface Timbre {
|
|
110
|
+
brightness: number;
|
|
111
|
+
warmth: number;
|
|
112
|
+
density: number;
|
|
113
|
+
roughness: number;
|
|
114
|
+
complexity: number;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Dynamics characteristics
|
|
119
|
+
*/
|
|
120
|
+
export interface Dynamics {
|
|
121
|
+
dynamicRangeDb: number;
|
|
122
|
+
loudnessRangeDb: number;
|
|
123
|
+
crestFactor: number;
|
|
124
|
+
isCompressed: boolean;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Time signature
|
|
129
|
+
*/
|
|
130
|
+
export interface TimeSignature {
|
|
131
|
+
numerator: number;
|
|
132
|
+
denominator: number;
|
|
133
|
+
confidence: number;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Rhythm features
|
|
138
|
+
*/
|
|
139
|
+
export interface RhythmFeatures {
|
|
140
|
+
syncopation: number;
|
|
141
|
+
grooveType: string;
|
|
142
|
+
patternRegularity: number;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Complete analysis result
|
|
147
|
+
*/
|
|
148
|
+
export interface AnalysisResult {
|
|
149
|
+
bpm: number;
|
|
150
|
+
bpmConfidence: number;
|
|
151
|
+
key: Key;
|
|
152
|
+
timeSignature: TimeSignature;
|
|
153
|
+
beatTimes: Float32Array;
|
|
154
|
+
beats: Beat[];
|
|
155
|
+
chords: Chord[];
|
|
156
|
+
sections: Section[];
|
|
157
|
+
timbre: Timbre;
|
|
158
|
+
dynamics: Dynamics;
|
|
159
|
+
rhythm: RhythmFeatures;
|
|
160
|
+
form: string;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* HPSS (Harmonic-Percussive Source Separation) result
|
|
165
|
+
*/
|
|
166
|
+
export interface HpssResult {
|
|
167
|
+
harmonic: Float32Array;
|
|
168
|
+
percussive: Float32Array;
|
|
169
|
+
sampleRate: number;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Mastering loudness/true-peak processing result
|
|
174
|
+
*/
|
|
175
|
+
export interface MasteringResult {
|
|
176
|
+
samples: Float32Array;
|
|
177
|
+
sampleRate: number;
|
|
178
|
+
inputLufs: number;
|
|
179
|
+
outputLufs: number;
|
|
180
|
+
appliedGainDb: number;
|
|
181
|
+
latencySamples?: number;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export type MasteringProcessorParams = Record<string, number | boolean>;
|
|
185
|
+
|
|
186
|
+
export interface MasteringChainConfig {
|
|
187
|
+
repair?: {
|
|
188
|
+
denoise?: boolean;
|
|
189
|
+
nFft?: number;
|
|
190
|
+
hopLength?: number;
|
|
191
|
+
ddAlpha?: number;
|
|
192
|
+
gainFloor?: number;
|
|
193
|
+
declick?: {
|
|
194
|
+
threshold?: number;
|
|
195
|
+
neighborRatio?: number;
|
|
196
|
+
maxClickSamples?: number;
|
|
197
|
+
lpcOrder?: number;
|
|
198
|
+
residualRatio?: number;
|
|
199
|
+
};
|
|
200
|
+
dereverb?: {
|
|
201
|
+
threshold?: number;
|
|
202
|
+
attenuation?: number;
|
|
203
|
+
nFft?: number;
|
|
204
|
+
hopLength?: number;
|
|
205
|
+
t60Sec?: number;
|
|
206
|
+
lateDelayMs?: number;
|
|
207
|
+
overSubtraction?: number;
|
|
208
|
+
spectralFloor?: number;
|
|
209
|
+
wpeEnabled?: boolean;
|
|
210
|
+
wpeIterations?: number;
|
|
211
|
+
wpeTaps?: number;
|
|
212
|
+
wpeStrength?: number;
|
|
213
|
+
};
|
|
214
|
+
};
|
|
215
|
+
eq?: {
|
|
216
|
+
tiltDb?: number;
|
|
217
|
+
pivotHz?: number;
|
|
218
|
+
};
|
|
219
|
+
dynamics?: {
|
|
220
|
+
compressor?: {
|
|
221
|
+
thresholdDb?: number;
|
|
222
|
+
ratio?: number;
|
|
223
|
+
attackMs?: number;
|
|
224
|
+
releaseMs?: number;
|
|
225
|
+
kneeDb?: number;
|
|
226
|
+
makeupGainDb?: number;
|
|
227
|
+
autoMakeup?: boolean;
|
|
228
|
+
};
|
|
229
|
+
deesser?: {
|
|
230
|
+
frequencyHz?: number;
|
|
231
|
+
thresholdDb?: number;
|
|
232
|
+
ratio?: number;
|
|
233
|
+
attackMs?: number;
|
|
234
|
+
releaseMs?: number;
|
|
235
|
+
rangeDb?: number;
|
|
236
|
+
};
|
|
237
|
+
transientShaper?: {
|
|
238
|
+
attackGainDb?: number;
|
|
239
|
+
sustainGainDb?: number;
|
|
240
|
+
fastAttackMs?: number;
|
|
241
|
+
fastReleaseMs?: number;
|
|
242
|
+
slowAttackMs?: number;
|
|
243
|
+
slowReleaseMs?: number;
|
|
244
|
+
sensitivity?: number;
|
|
245
|
+
maxGainDb?: number;
|
|
246
|
+
gainSmoothingMs?: number;
|
|
247
|
+
lookaheadMs?: number;
|
|
248
|
+
};
|
|
249
|
+
multibandComp?: {
|
|
250
|
+
lowCutoffHz?: number;
|
|
251
|
+
highCutoffHz?: number;
|
|
252
|
+
lowThresholdDb?: number;
|
|
253
|
+
lowRatio?: number;
|
|
254
|
+
lowAttackMs?: number;
|
|
255
|
+
lowReleaseMs?: number;
|
|
256
|
+
midThresholdDb?: number;
|
|
257
|
+
midRatio?: number;
|
|
258
|
+
midAttackMs?: number;
|
|
259
|
+
midReleaseMs?: number;
|
|
260
|
+
highThresholdDb?: number;
|
|
261
|
+
highRatio?: number;
|
|
262
|
+
highAttackMs?: number;
|
|
263
|
+
highReleaseMs?: number;
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
saturation?: {
|
|
267
|
+
tape?: {
|
|
268
|
+
driveDb?: number;
|
|
269
|
+
saturation?: number;
|
|
270
|
+
hysteresis?: number;
|
|
271
|
+
outputGainDb?: number;
|
|
272
|
+
speedIps?: number;
|
|
273
|
+
headBumpDb?: number;
|
|
274
|
+
bias?: number;
|
|
275
|
+
gapLoss?: number;
|
|
276
|
+
};
|
|
277
|
+
exciter?: {
|
|
278
|
+
frequencyHz?: number;
|
|
279
|
+
driveDb?: number;
|
|
280
|
+
amount?: number;
|
|
281
|
+
q?: number;
|
|
282
|
+
evenOddMix?: number;
|
|
283
|
+
};
|
|
284
|
+
};
|
|
285
|
+
spectral?: {
|
|
286
|
+
airBand?: {
|
|
287
|
+
amount?: number;
|
|
288
|
+
shelfFrequencyHz?: number;
|
|
289
|
+
dynamicThresholdDb?: number;
|
|
290
|
+
dynamicRangeDb?: number;
|
|
291
|
+
};
|
|
292
|
+
};
|
|
293
|
+
stereo?: {
|
|
294
|
+
imager?: {
|
|
295
|
+
width?: number;
|
|
296
|
+
outputGainDb?: number;
|
|
297
|
+
decorrelationAmount?: number;
|
|
298
|
+
preserveEnergy?: boolean;
|
|
299
|
+
};
|
|
300
|
+
monoMaker?: {
|
|
301
|
+
amount?: number;
|
|
302
|
+
};
|
|
303
|
+
};
|
|
304
|
+
maximizer?: {
|
|
305
|
+
truePeakLimiter?: {
|
|
306
|
+
ceilingDb?: number;
|
|
307
|
+
lookaheadMs?: number;
|
|
308
|
+
releaseMs?: number;
|
|
309
|
+
oversampleFactor?: number;
|
|
310
|
+
applyGainAtInputRate?: boolean;
|
|
311
|
+
};
|
|
312
|
+
};
|
|
313
|
+
loudness?: {
|
|
314
|
+
targetLufs?: number;
|
|
315
|
+
ceilingDb?: number;
|
|
316
|
+
truePeakOversample?: number;
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export interface MasteringChainResult extends MasteringResult {
|
|
321
|
+
stages: string[];
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export interface MasteringStereoChainResult {
|
|
325
|
+
left: Float32Array;
|
|
326
|
+
right: Float32Array;
|
|
327
|
+
sampleRate: number;
|
|
328
|
+
inputLufs: number;
|
|
329
|
+
outputLufs: number;
|
|
330
|
+
appliedGainDb: number;
|
|
331
|
+
stages: string[];
|
|
332
|
+
latencySamples?: number;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
export interface MasteringStereoResult {
|
|
336
|
+
left: Float32Array;
|
|
337
|
+
right: Float32Array;
|
|
338
|
+
sampleRate: number;
|
|
339
|
+
inputLufs: number;
|
|
340
|
+
outputLufs: number;
|
|
341
|
+
appliedGainDb: number;
|
|
342
|
+
latencySamples: number;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* STFT (Short-Time Fourier Transform) result
|
|
347
|
+
*/
|
|
348
|
+
export interface StftResult {
|
|
349
|
+
nBins: number;
|
|
350
|
+
nFrames: number;
|
|
351
|
+
nFft: number;
|
|
352
|
+
hopLength: number;
|
|
353
|
+
sampleRate: number;
|
|
354
|
+
magnitude: Float32Array;
|
|
355
|
+
power: Float32Array;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Mel spectrogram result
|
|
360
|
+
*/
|
|
361
|
+
export interface MelSpectrogramResult {
|
|
362
|
+
nMels: number;
|
|
363
|
+
nFrames: number;
|
|
364
|
+
sampleRate: number;
|
|
365
|
+
hopLength: number;
|
|
366
|
+
power: Float32Array;
|
|
367
|
+
db: Float32Array;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* MFCC result
|
|
372
|
+
*/
|
|
373
|
+
export interface MfccResult {
|
|
374
|
+
nMfcc: number;
|
|
375
|
+
nFrames: number;
|
|
376
|
+
coefficients: Float32Array;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Chroma features result
|
|
381
|
+
*/
|
|
382
|
+
export interface ChromaResult {
|
|
383
|
+
nChroma: number;
|
|
384
|
+
nFrames: number;
|
|
385
|
+
sampleRate: number;
|
|
386
|
+
hopLength: number;
|
|
387
|
+
features: Float32Array;
|
|
388
|
+
meanEnergy: number[];
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Pitch detection result
|
|
393
|
+
*/
|
|
394
|
+
export interface PitchResult {
|
|
395
|
+
f0: Float32Array;
|
|
396
|
+
voicedProb: Float32Array;
|
|
397
|
+
voicedFlag: boolean[];
|
|
398
|
+
nFrames: number;
|
|
399
|
+
medianF0: number;
|
|
400
|
+
meanF0: number;
|
|
401
|
+
}
|