@libraz/libsonare 1.0.3 → 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.
@@ -0,0 +1,555 @@
1
+ export type ProgressCallback = (progress: number, stage: string) => void;
2
+
3
+ export interface WasmKeyResult {
4
+ root: number;
5
+ mode: number;
6
+ confidence: number;
7
+ name: string;
8
+ shortName: string;
9
+ }
10
+
11
+ export interface WasmBeatResult {
12
+ time: number;
13
+ strength: number;
14
+ }
15
+
16
+ export interface WasmChordResult {
17
+ root: number;
18
+ quality: number;
19
+ start: number;
20
+ end: number;
21
+ confidence: number;
22
+ name: string;
23
+ }
24
+
25
+ export interface WasmSectionResult {
26
+ type: number;
27
+ start: number;
28
+ end: number;
29
+ energyLevel: number;
30
+ confidence: number;
31
+ name: string;
32
+ }
33
+
34
+ export interface WasmTimbreResult {
35
+ brightness: number;
36
+ warmth: number;
37
+ density: number;
38
+ roughness: number;
39
+ complexity: number;
40
+ }
41
+
42
+ export interface WasmDynamicsResult {
43
+ dynamicRangeDb: number;
44
+ loudnessRangeDb: number;
45
+ crestFactor: number;
46
+ isCompressed: boolean;
47
+ }
48
+
49
+ export interface WasmRhythmResult {
50
+ syncopation: number;
51
+ grooveType: string;
52
+ patternRegularity: number;
53
+ }
54
+
55
+ export interface WasmTimeSignatureResult {
56
+ numerator: number;
57
+ denominator: number;
58
+ confidence: number;
59
+ }
60
+
61
+ export interface WasmAnalysisResult {
62
+ bpm: number;
63
+ bpmConfidence: number;
64
+ key: WasmKeyResult;
65
+ timeSignature: WasmTimeSignatureResult;
66
+ beats: WasmBeatResult[];
67
+ chords: WasmChordResult[];
68
+ sections: WasmSectionResult[];
69
+ timbre: WasmTimbreResult;
70
+ dynamics: WasmDynamicsResult;
71
+ rhythm: WasmRhythmResult;
72
+ form: string;
73
+ }
74
+
75
+ export interface WasmHpssResult {
76
+ harmonic: Float32Array;
77
+ percussive: Float32Array;
78
+ sampleRate: number;
79
+ }
80
+
81
+ export interface WasmMasteringResult {
82
+ samples: Float32Array;
83
+ sampleRate: number;
84
+ inputLufs: number;
85
+ outputLufs: number;
86
+ appliedGainDb: number;
87
+ latencySamples?: number;
88
+ }
89
+
90
+ export interface WasmMasteringChainResult extends WasmMasteringResult {
91
+ stages: string[];
92
+ }
93
+
94
+ export interface WasmMasteringStereoResult {
95
+ left: Float32Array;
96
+ right: Float32Array;
97
+ sampleRate: number;
98
+ inputLufs: number;
99
+ outputLufs: number;
100
+ appliedGainDb: number;
101
+ latencySamples: number;
102
+ }
103
+
104
+ export interface WasmMasteringStereoChainResult {
105
+ left: Float32Array;
106
+ right: Float32Array;
107
+ sampleRate: number;
108
+ inputLufs: number;
109
+ outputLufs: number;
110
+ appliedGainDb: number;
111
+ stages: string[];
112
+ }
113
+
114
+ export interface WasmStftResult {
115
+ nBins: number;
116
+ nFrames: number;
117
+ nFft: number;
118
+ hopLength: number;
119
+ sampleRate: number;
120
+ magnitude: Float32Array;
121
+ power: Float32Array;
122
+ }
123
+
124
+ export interface WasmStftDbResult {
125
+ nBins: number;
126
+ nFrames: number;
127
+ db: Float32Array;
128
+ }
129
+
130
+ export interface WasmMelResult {
131
+ nMels: number;
132
+ nFrames: number;
133
+ sampleRate: number;
134
+ hopLength: number;
135
+ power: Float32Array;
136
+ db: Float32Array;
137
+ }
138
+
139
+ export interface WasmMfccResult {
140
+ nMfcc: number;
141
+ nFrames: number;
142
+ coefficients: Float32Array;
143
+ }
144
+
145
+ export interface WasmChromaResult {
146
+ nChroma: number;
147
+ nFrames: number;
148
+ sampleRate: number;
149
+ hopLength: number;
150
+ features: Float32Array;
151
+ meanEnergy: number[];
152
+ }
153
+
154
+ export interface WasmPitchResult {
155
+ f0: Float32Array;
156
+ voicedProb: Float32Array;
157
+ voicedFlag: boolean[];
158
+ nFrames: number;
159
+ medianF0: number;
160
+ meanF0: number;
161
+ }
162
+
163
+ export interface WasmTrimResult {
164
+ audio: Float32Array;
165
+ startSample: number;
166
+ endSample: number;
167
+ }
168
+
169
+ export interface WasmFrameResult {
170
+ nFrames: number;
171
+ frames: Float32Array;
172
+ }
173
+
174
+ export interface WasmTempogramResult {
175
+ nFrames: number;
176
+ winLength: number;
177
+ data: Float32Array;
178
+ }
179
+
180
+ export interface WasmChordChange {
181
+ root: number;
182
+ quality: number;
183
+ startTime: number;
184
+ confidence: number;
185
+ }
186
+
187
+ export interface WasmBarChord {
188
+ barIndex: number;
189
+ root: number;
190
+ quality: number;
191
+ startTime: number;
192
+ confidence: number;
193
+ }
194
+
195
+ export interface WasmPatternScore {
196
+ name: string;
197
+ score: number;
198
+ }
199
+
200
+ export interface WasmProgressiveEstimate {
201
+ bpm: number;
202
+ bpmConfidence: number;
203
+ bpmCandidateCount: number;
204
+ key: number;
205
+ keyMinor: boolean;
206
+ keyConfidence: number;
207
+ chordRoot: number;
208
+ chordQuality: number;
209
+ chordConfidence: number;
210
+ chordProgression: WasmChordChange[];
211
+ barChordProgression: WasmBarChord[];
212
+ currentBar: number;
213
+ barDuration: number;
214
+ votedPattern: WasmBarChord[];
215
+ patternLength: number;
216
+ detectedPatternName: string;
217
+ detectedPatternScore: number;
218
+ allPatternScores: WasmPatternScore[];
219
+ accumulatedSeconds: number;
220
+ usedFrames: number;
221
+ updated: boolean;
222
+ }
223
+
224
+ export interface WasmAnalyzerStats {
225
+ totalFrames: number;
226
+ totalSamples: number;
227
+ durationSeconds: number;
228
+ estimate: WasmProgressiveEstimate;
229
+ }
230
+
231
+ export interface WasmFrameBuffer {
232
+ nFrames: number;
233
+ timestamps: Float32Array;
234
+ mel: Float32Array;
235
+ chroma: Float32Array;
236
+ onsetStrength: Float32Array;
237
+ rmsEnergy: Float32Array;
238
+ spectralCentroid: Float32Array;
239
+ spectralFlatness: Float32Array;
240
+ chordRoot: Int32Array;
241
+ chordQuality: Int32Array;
242
+ chordConfidence: Float32Array;
243
+ }
244
+
245
+ export interface WasmStreamingMasteringChain {
246
+ prepare: (sampleRate: number, maxBlockSize: number, numChannels: number) => void;
247
+ processMono: (samples: Float32Array) => Float32Array;
248
+ processStereo: (
249
+ left: Float32Array,
250
+ right: Float32Array,
251
+ ) => { left: Float32Array; right: Float32Array };
252
+ reset: () => void;
253
+ latencySamples: () => number;
254
+ stageNames: () => string[];
255
+ delete: () => void;
256
+ }
257
+
258
+ export interface WasmStreamAnalyzer {
259
+ process: (samples: Float32Array) => void;
260
+ processWithOffset: (samples: Float32Array, sampleOffset: number) => void;
261
+ availableFrames: () => number;
262
+ readFramesSoa: (maxFrames: number) => WasmFrameBuffer;
263
+ readFramesU8: (maxFrames: number) => unknown;
264
+ readFramesI16: (maxFrames: number) => unknown;
265
+ reset: (baseSampleOffset?: number) => void;
266
+ stats: () => WasmAnalyzerStats;
267
+ frameCount: () => number;
268
+ currentTime: () => number;
269
+ sampleRate: () => number;
270
+ setExpectedDuration: (durationSeconds: number) => void;
271
+ setNormalizationGain: (gain: number) => void;
272
+ setTuningRefHz: (refHz: number) => void;
273
+ delete: () => void;
274
+ }
275
+
276
+ export interface SonareModule {
277
+ detectBpm: (samples: Float32Array, sampleRate: number) => number;
278
+ detectKey: (samples: Float32Array, sampleRate: number) => WasmKeyResult;
279
+ detectOnsets: (samples: Float32Array, sampleRate: number) => Float32Array;
280
+ detectBeats: (samples: Float32Array, sampleRate: number) => Float32Array;
281
+ analyze: (samples: Float32Array, sampleRate: number) => WasmAnalysisResult;
282
+ analyzeWithProgress: (
283
+ samples: Float32Array,
284
+ sampleRate: number,
285
+ progressCallback: ProgressCallback | null,
286
+ ) => WasmAnalysisResult;
287
+ version: () => string;
288
+
289
+ hpss: (
290
+ samples: Float32Array,
291
+ sampleRate: number,
292
+ kernelHarmonic: number,
293
+ kernelPercussive: number,
294
+ ) => WasmHpssResult;
295
+ harmonic: (samples: Float32Array, sampleRate: number) => Float32Array;
296
+ percussive: (samples: Float32Array, sampleRate: number) => Float32Array;
297
+ timeStretch: (samples: Float32Array, sampleRate: number, rate: number) => Float32Array;
298
+ pitchShift: (samples: Float32Array, sampleRate: number, semitones: number) => Float32Array;
299
+ normalize: (samples: Float32Array, sampleRate: number, targetDb: number) => Float32Array;
300
+ mastering: (
301
+ samples: Float32Array,
302
+ sampleRate: number,
303
+ targetLufs: number,
304
+ ceilingDb: number,
305
+ truePeakOversample: number,
306
+ ) => WasmMasteringResult;
307
+ masteringProcessorNames: () => string[];
308
+ masteringPairProcessorNames: () => string[];
309
+ masteringPairAnalysisNames: () => string[];
310
+ masteringStereoAnalysisNames: () => string[];
311
+ masteringProcess: (
312
+ processorName: string,
313
+ samples: Float32Array,
314
+ sampleRate: number,
315
+ params: Record<string, number | boolean>,
316
+ ) => WasmMasteringResult;
317
+ masteringProcessStereo: (
318
+ processorName: string,
319
+ left: Float32Array,
320
+ right: Float32Array,
321
+ sampleRate: number,
322
+ params: Record<string, number | boolean>,
323
+ ) => WasmMasteringStereoResult;
324
+ masteringPairProcess: (
325
+ processorName: string,
326
+ source: Float32Array,
327
+ reference: Float32Array,
328
+ sampleRate: number,
329
+ params: Record<string, number | boolean>,
330
+ ) => WasmMasteringResult;
331
+ masteringPairAnalyze: (
332
+ analysisName: string,
333
+ source: Float32Array,
334
+ reference: Float32Array,
335
+ sampleRate: number,
336
+ params: Record<string, number | boolean>,
337
+ ) => string;
338
+ masteringStereoAnalyze: (
339
+ analysisName: string,
340
+ left: Float32Array,
341
+ right: Float32Array,
342
+ sampleRate: number,
343
+ params: Record<string, number | boolean>,
344
+ ) => string;
345
+ masteringChain: (
346
+ samples: Float32Array,
347
+ sampleRate: number,
348
+ config: Record<string, unknown>,
349
+ ) => WasmMasteringChainResult;
350
+ masteringChainStereo: (
351
+ left: Float32Array,
352
+ right: Float32Array,
353
+ sampleRate: number,
354
+ config: Record<string, unknown>,
355
+ ) => WasmMasteringStereoChainResult;
356
+ masteringChainWithProgress: (
357
+ samples: Float32Array,
358
+ sampleRate: number,
359
+ config: Record<string, unknown>,
360
+ progressCallback: ProgressCallback | null,
361
+ ) => WasmMasteringChainResult;
362
+ masteringChainStereoWithProgress: (
363
+ left: Float32Array,
364
+ right: Float32Array,
365
+ sampleRate: number,
366
+ config: Record<string, unknown>,
367
+ progressCallback: ProgressCallback | null,
368
+ ) => WasmMasteringStereoChainResult;
369
+ masteringPresetNames: () => string[];
370
+ masterAudio: (
371
+ presetName: string,
372
+ samples: Float32Array,
373
+ sampleRate: number,
374
+ overrides: Record<string, number | boolean> | null,
375
+ ) => WasmMasteringChainResult;
376
+ masterAudioStereo: (
377
+ presetName: string,
378
+ left: Float32Array,
379
+ right: Float32Array,
380
+ sampleRate: number,
381
+ overrides: Record<string, number | boolean> | null,
382
+ ) => WasmMasteringStereoChainResult;
383
+ trim: (samples: Float32Array, sampleRate: number, thresholdDb: number) => Float32Array;
384
+
385
+ stft: (
386
+ samples: Float32Array,
387
+ sampleRate: number,
388
+ nFft: number,
389
+ hopLength: number,
390
+ ) => WasmStftResult;
391
+ stftDb: (
392
+ samples: Float32Array,
393
+ sampleRate: number,
394
+ nFft: number,
395
+ hopLength: number,
396
+ ) => WasmStftDbResult;
397
+
398
+ melSpectrogram: (
399
+ samples: Float32Array,
400
+ sampleRate: number,
401
+ nFft: number,
402
+ hopLength: number,
403
+ nMels: number,
404
+ ) => WasmMelResult;
405
+ mfcc: (
406
+ samples: Float32Array,
407
+ sampleRate: number,
408
+ nFft: number,
409
+ hopLength: number,
410
+ nMels: number,
411
+ nMfcc: number,
412
+ ) => WasmMfccResult;
413
+
414
+ chroma: (
415
+ samples: Float32Array,
416
+ sampleRate: number,
417
+ nFft: number,
418
+ hopLength: number,
419
+ ) => WasmChromaResult;
420
+
421
+ spectralCentroid: (
422
+ samples: Float32Array,
423
+ sampleRate: number,
424
+ nFft: number,
425
+ hopLength: number,
426
+ ) => Float32Array;
427
+ spectralBandwidth: (
428
+ samples: Float32Array,
429
+ sampleRate: number,
430
+ nFft: number,
431
+ hopLength: number,
432
+ ) => Float32Array;
433
+ spectralRolloff: (
434
+ samples: Float32Array,
435
+ sampleRate: number,
436
+ nFft: number,
437
+ hopLength: number,
438
+ rollPercent: number,
439
+ ) => Float32Array;
440
+ spectralFlatness: (
441
+ samples: Float32Array,
442
+ sampleRate: number,
443
+ nFft: number,
444
+ hopLength: number,
445
+ ) => Float32Array;
446
+ zeroCrossingRate: (
447
+ samples: Float32Array,
448
+ sampleRate: number,
449
+ frameLength: number,
450
+ hopLength: number,
451
+ ) => Float32Array;
452
+ rmsEnergy: (
453
+ samples: Float32Array,
454
+ sampleRate: number,
455
+ frameLength: number,
456
+ hopLength: number,
457
+ ) => Float32Array;
458
+
459
+ pitchYin: (
460
+ samples: Float32Array,
461
+ sampleRate: number,
462
+ frameLength: number,
463
+ hopLength: number,
464
+ fmin: number,
465
+ fmax: number,
466
+ threshold: number,
467
+ ) => WasmPitchResult;
468
+ pitchPyin: (
469
+ samples: Float32Array,
470
+ sampleRate: number,
471
+ frameLength: number,
472
+ hopLength: number,
473
+ fmin: number,
474
+ fmax: number,
475
+ threshold: number,
476
+ ) => WasmPitchResult;
477
+
478
+ hzToMel: (hz: number) => number;
479
+ melToHz: (mel: number) => number;
480
+ hzToMidi: (hz: number) => number;
481
+ midiToHz: (midi: number) => number;
482
+ hzToNote: (hz: number) => string;
483
+ noteToHz: (note: string) => number;
484
+ framesToTime: (frames: number, sr: number, hopLength: number) => number;
485
+ timeToFrames: (time: number, sr: number, hopLength: number) => number;
486
+ framesToSamples: (frames: number, hopLength: number, nFft: number) => number;
487
+ samplesToFrames: (samples: number, hopLength: number, nFft: number) => number;
488
+ powerToDb: (values: Float32Array, ref: number, amin: number, topDb: number) => Float32Array;
489
+ amplitudeToDb: (values: Float32Array, ref: number, amin: number, topDb: number) => Float32Array;
490
+ dbToPower: (values: Float32Array, ref: number) => Float32Array;
491
+ dbToAmplitude: (values: Float32Array, ref: number) => Float32Array;
492
+ preemphasis: (samples: Float32Array, coef: number, zi?: number | null) => Float32Array;
493
+ deemphasis: (samples: Float32Array, coef: number, zi?: number | null) => Float32Array;
494
+ trimSilence: (
495
+ samples: Float32Array,
496
+ topDb: number,
497
+ frameLength: number,
498
+ hopLength: number,
499
+ ) => WasmTrimResult;
500
+ splitSilence: (
501
+ samples: Float32Array,
502
+ topDb: number,
503
+ frameLength: number,
504
+ hopLength: number,
505
+ ) => Int32Array;
506
+ frameSignal: (samples: Float32Array, frameLength: number, hopLength: number) => WasmFrameResult;
507
+ padCenter: (values: Float32Array, size: number, padValue: number) => Float32Array;
508
+ fixLength: (values: Float32Array, size: number, padValue: number) => Float32Array;
509
+ fixFrames: (frames: Int32Array, xMin: number, xMax: number, pad: boolean) => Int32Array;
510
+ peakPick: (
511
+ values: Float32Array,
512
+ preMax: number,
513
+ postMax: number,
514
+ preAvg: number,
515
+ postAvg: number,
516
+ delta: number,
517
+ wait: number,
518
+ ) => Int32Array;
519
+ vectorNormalize: (values: Float32Array, normType: number, threshold: number) => Float32Array;
520
+ pcen: (
521
+ values: Float32Array,
522
+ nBins: number,
523
+ nFrames: number,
524
+ options?: Record<string, number> | null,
525
+ ) => Float32Array;
526
+ tonnetz: (chromagram: Float32Array, nChroma: number, nFrames: number) => Float32Array;
527
+ tempogram: (
528
+ onsetEnvelope: Float32Array,
529
+ sampleRate: number,
530
+ hopLength: number,
531
+ winLength: number,
532
+ ) => WasmTempogramResult;
533
+ plp: (
534
+ onsetEnvelope: Float32Array,
535
+ sampleRate: number,
536
+ hopLength: number,
537
+ tempoMin: number,
538
+ tempoMax: number,
539
+ winLength: number,
540
+ ) => Float32Array;
541
+ resample: (samples: Float32Array, srcSr: number, targetSr: number) => Float32Array;
542
+
543
+ StreamAnalyzer: new (
544
+ sampleRate: number,
545
+ nFft: number,
546
+ hopLength: number,
547
+ nMels: number,
548
+ computeMel: boolean,
549
+ computeChroma: boolean,
550
+ computeOnset: boolean,
551
+ emitEveryNFrames: number,
552
+ ) => WasmStreamAnalyzer;
553
+
554
+ createStreamingMasteringChain: (config: Record<string, unknown>) => WasmStreamingMasteringChain;
555
+ }
package/README.npm.md DELETED
@@ -1,90 +0,0 @@
1
- # libsonare
2
-
3
- [![CI](https://img.shields.io/github/actions/workflow/status/libraz/libsonare/ci.yml?branch=main&label=CI)](https://github.com/libraz/libsonare/actions)
4
- [![npm](https://img.shields.io/npm/v/@libraz/libsonare)](https://www.npmjs.com/package/@libraz/libsonare)
5
- [![PyPI](https://img.shields.io/pypi/v/libsonare)](https://pypi.org/project/libsonare/)
6
- [![License](https://img.shields.io/github/license/libraz/libsonare)](https://github.com/libraz/libsonare/blob/main/LICENSE)
7
-
8
- Fast, dependency-free audio analysis library for browser and Node.js via WebAssembly.
9
-
10
- ## Installation
11
-
12
- ```bash
13
- npm install @libraz/libsonare
14
- ```
15
-
16
- ## Usage
17
-
18
- ```typescript
19
- import { init, detectBpm, detectKey, analyze, Audio } from '@libraz/libsonare';
20
-
21
- await init();
22
-
23
- // Function API
24
- const bpm = detectBpm(samples, sampleRate);
25
- const key = detectKey(samples, sampleRate);
26
- const result = analyze(samples, sampleRate);
27
- console.log(`BPM: ${result.bpm}, Key: ${result.key.name}`);
28
-
29
- // Audio class API
30
- const audio = Audio.fromBuffer(samples, sampleRate);
31
- console.log(`BPM: ${audio.detectBpm()}`);
32
- console.log(`Key: ${audio.detectKey().name}`);
33
- ```
34
-
35
- ### Browser (CDN)
36
-
37
- ```html
38
- <script type="module">
39
- import { init, analyze } from 'https://esm.sh/@libraz/libsonare';
40
-
41
- await init();
42
- // ... use with Web Audio API
43
- </script>
44
- ```
45
-
46
- ### Bundlers (Vite, webpack, Next.js, etc.)
47
-
48
- If your bundler doesn't automatically resolve the `.wasm` file, specify its path:
49
-
50
- ```typescript
51
- import wasmUrl from '@libraz/libsonare/wasm?url'; // Vite
52
- import { init } from '@libraz/libsonare';
53
-
54
- await init({ wasmPath: wasmUrl });
55
- ```
56
-
57
- ### Real-time Streaming
58
-
59
- ```typescript
60
- import { init, StreamAnalyzer } from '@libraz/libsonare';
61
-
62
- await init();
63
-
64
- const analyzer = new StreamAnalyzer({ sampleRate: 44100 });
65
-
66
- // In audio processing callback
67
- analyzer.process(audioChunk);
68
-
69
- const stats = analyzer.stats();
70
- console.log(`BPM: ${stats.estimate.bpm}, Key: ${stats.estimate.key}`);
71
- ```
72
-
73
- ## Features
74
-
75
- - **Detection**: BPM, key, beats, onsets, chords, sections
76
- - **Effects**: HPSS, time stretch, pitch shift, normalize, trim
77
- - **Features**: STFT, mel spectrogram, MFCC, chroma, CQT/VQT, spectral features
78
- - **Pitch**: YIN, pYIN algorithms
79
- - **Streaming**: Real-time analysis with progressive estimates
80
- - **Conversions**: Hz/mel/MIDI/note, frames/time, resample
81
-
82
- ## Also available
83
-
84
- ```bash
85
- pip install libsonare # Python bindings with CLI
86
- ```
87
-
88
- ## License
89
-
90
- [Apache License 2.0](https://github.com/libraz/libsonare/blob/main/LICENSE)
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../js/index.ts"],"names":[],"mappings":"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"}