@libraz/libsonare 1.3.1 → 1.3.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 +277 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +333 -55
- package/dist/index.js.map +1 -1
- package/dist/sonare-rt-module.js +1 -1
- package/dist/sonare-rt.js +1 -1
- package/dist/sonare-rt.wasm +0 -0
- package/dist/sonare.js +1 -1
- package/dist/sonare.wasm +0 -0
- package/dist/worklet.d.ts +397 -9
- package/dist/worklet.js +1259 -87
- package/dist/worklet.js.map +1 -1
- package/package.json +1 -1
- package/src/effects_mastering.ts +16 -0
- package/src/errors.ts +44 -0
- package/src/index.ts +15 -1
- package/src/mixer.ts +11 -0
- package/src/module_state.ts +180 -4
- package/src/opfs_clip_pages.ts +43 -9
- package/src/realtime_engine.ts +174 -109
- package/src/sonare.js.d.ts +65 -0
- package/src/web_midi.ts +15 -11
- package/src/worklet.ts +1402 -66
package/README.md
CHANGED
|
@@ -21,6 +21,11 @@ no model weights.
|
|
|
21
21
|
> If you need to read WAV/MP3/M4A files directly in Node, use the native
|
|
22
22
|
> N-API package [`@libraz/libsonare-native`](https://github.com/libraz/libsonare/tree/main/bindings/node) instead.
|
|
23
23
|
|
|
24
|
+
> **Platform constraints:** the WebAssembly build is single-threaded (analysis
|
|
25
|
+
> runs to completion on the calling thread — there is no non-blocking variant),
|
|
26
|
+
> has no host filesystem access, and expects pre-decoded `Float32Array` sample
|
|
27
|
+
> buffers. Drive long-running calls from a Web Worker to keep the UI responsive.
|
|
28
|
+
|
|
24
29
|
## Installation
|
|
25
30
|
|
|
26
31
|
```bash
|
|
@@ -124,6 +129,54 @@ const room = analyzeImpulseResponse(irSamples, sampleRate);
|
|
|
124
129
|
console.log(blind.rt60, room.c50);
|
|
125
130
|
```
|
|
126
131
|
|
|
132
|
+
Acoustic simulation adds `synthesizeRir` (synthesize a shoebox-room impulse
|
|
133
|
+
response from geometry), `estimateRoom` (recover an equivalent room from a
|
|
134
|
+
recording or IR), and `roomMorph` (creatively re-reverberate audio toward a
|
|
135
|
+
target room — not dereverberation).
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
import { init, synthesizeRir, estimateRoom, roomMorph } from '@libraz/libsonare';
|
|
139
|
+
|
|
140
|
+
await init();
|
|
141
|
+
|
|
142
|
+
const { rir, hasError } = synthesizeRir({
|
|
143
|
+
lengthM: 6,
|
|
144
|
+
widthM: 4,
|
|
145
|
+
heightM: 3,
|
|
146
|
+
absorption: 0.2,
|
|
147
|
+
sampleRate: 48000,
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const room = estimateRoom(samples, 48000); // { volume, length, width, height, ... }
|
|
151
|
+
const morphed = roomMorph(samples, sampleRate, { lengthM: 12, widthM: 9, wet: 0.5 });
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Error handling
|
|
155
|
+
|
|
156
|
+
Native (C++) failures are thrown as a `SonareError` carrying a numeric `code`
|
|
157
|
+
(an `ErrorCode` value) and its canonical `codeName`, so you can branch on the
|
|
158
|
+
cause instead of matching message text. Use the `isSonareError` type guard in a
|
|
159
|
+
`catch`:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
import { init, analyze, ErrorCode, isSonareError } from '@libraz/libsonare';
|
|
163
|
+
|
|
164
|
+
await init();
|
|
165
|
+
|
|
166
|
+
try {
|
|
167
|
+
const result = analyze(samples, sampleRate);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
if (isSonareError(error)) {
|
|
170
|
+
console.error(`${error.codeName} (${error.code}): ${error.message}`);
|
|
171
|
+
if (error.code === ErrorCode.InvalidParameter) {
|
|
172
|
+
// recover...
|
|
173
|
+
}
|
|
174
|
+
} else {
|
|
175
|
+
throw error;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
127
180
|
### Decoding files in the browser
|
|
128
181
|
|
|
129
182
|
```typescript
|
|
@@ -331,6 +384,149 @@ try {
|
|
|
331
384
|
}
|
|
332
385
|
```
|
|
333
386
|
|
|
387
|
+
#### Clip warp
|
|
388
|
+
|
|
389
|
+
A clip can be time-warped during an offline `bounce`. `setClipWarpMode` selects
|
|
390
|
+
the playback mode (`ProjectWarpMode`: `'off'` | `'repitch'` | `'tempo-sync'`),
|
|
391
|
+
`setClipWarpRef` binds it to a warp map, and `setWarpMap` registers a first-class
|
|
392
|
+
warp map (anchors mapping warp-timeline samples to source samples).
|
|
393
|
+
|
|
394
|
+
```typescript
|
|
395
|
+
project.setWarpMap({
|
|
396
|
+
id: 1,
|
|
397
|
+
name: 'main',
|
|
398
|
+
anchors: [
|
|
399
|
+
{ warpSample: 0, sourceSample: 0 },
|
|
400
|
+
{ warpSample: 48000, sourceSample: 24000 },
|
|
401
|
+
],
|
|
402
|
+
});
|
|
403
|
+
project.setClipWarpRef(clipId, 1);
|
|
404
|
+
project.setClipWarpMode(clipId, 'tempo-sync');
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
> Warp is an offline `Project.bounce` feature only. Realtime warp playback is
|
|
408
|
+
> **not** available in `RealtimeEngine`.
|
|
409
|
+
|
|
410
|
+
### Instruments and synthesis
|
|
411
|
+
|
|
412
|
+
MIDI tracks bounce silently unless an instrument is bound. `Project` offers
|
|
413
|
+
three instrument backends, each as a `bounceWith…` variant that takes a binding
|
|
414
|
+
(or array of bindings) plus the usual `ProjectBounceOptions`:
|
|
415
|
+
|
|
416
|
+
- `bounceWithBuiltinInstrument(binding?, options?)` — simple built-in oscillator
|
|
417
|
+
synth (`BuiltinSynthConfig` / `BuiltinSynthBinding`: waveform + ADSR + gain).
|
|
418
|
+
- `bounceWithSynthInstrument(patchOrName?, options?)` — patch-driven NativeSynth
|
|
419
|
+
(`SynthPatch`, or a preset-name string like `'saw-lead'`).
|
|
420
|
+
- `bounceWithSf2Instrument(config?, options?)` — GS-compatible SoundFont player
|
|
421
|
+
(`Sf2InstrumentConfig`), fed by `loadSoundFont()`.
|
|
422
|
+
|
|
423
|
+
Discover NativeSynth presets with `synthPresetNames()` and fetch one as an
|
|
424
|
+
editable patch with `synthPresetPatch(name)`.
|
|
425
|
+
|
|
426
|
+
```typescript
|
|
427
|
+
import { init, Project, synthPresetNames, synthPresetPatch } from '@libraz/libsonare';
|
|
428
|
+
|
|
429
|
+
await init();
|
|
430
|
+
|
|
431
|
+
const project = new Project();
|
|
432
|
+
try {
|
|
433
|
+
const { clipId } = project.addMidiClip(0, 4);
|
|
434
|
+
project.setMidiEvents(clipId, [
|
|
435
|
+
Project.midiNoteOn(0, 0, 0, 60, 100),
|
|
436
|
+
Project.midiNoteOff(1, 0, 0, 60),
|
|
437
|
+
]);
|
|
438
|
+
|
|
439
|
+
// Built-in oscillator synth.
|
|
440
|
+
const a = project.bounceWithBuiltinInstrument({ waveform: 'saw' }, { numChannels: 2 });
|
|
441
|
+
|
|
442
|
+
// NativeSynth from a named preset, tweaked.
|
|
443
|
+
const patch = synthPresetPatch(synthPresetNames()[0]);
|
|
444
|
+
patch.cutoffHz = 4000;
|
|
445
|
+
const b = project.bounceWithSynthInstrument(patch, { numChannels: 2 });
|
|
446
|
+
|
|
447
|
+
// SoundFont player (requires loadSoundFont first).
|
|
448
|
+
project.loadSoundFont(sf2Bytes);
|
|
449
|
+
const c = project.bounceWithSf2Instrument({ gain: 0.6 }, { numChannels: 2 });
|
|
450
|
+
} finally {
|
|
451
|
+
project.delete();
|
|
452
|
+
}
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
### Real-time engine
|
|
456
|
+
|
|
457
|
+
`RealtimeEngine` is a control-thread-driven transport + render engine: it plays
|
|
458
|
+
a clip/automation timeline, hosts MIDI instruments, accepts live MIDI, and
|
|
459
|
+
renders blocks (or bounces offline). Bind it to an AudioWorklet for browser
|
|
460
|
+
playback — see the [AudioWorklet bridge](#audioworklet-bridge) below; the engine
|
|
461
|
+
is the offline/headless half, the worklet is the audio-thread half.
|
|
462
|
+
|
|
463
|
+
```typescript
|
|
464
|
+
import { init, RealtimeEngine } from '@libraz/libsonare';
|
|
465
|
+
|
|
466
|
+
await init();
|
|
467
|
+
|
|
468
|
+
const engine = new RealtimeEngine(48000, 128); // sampleRate, maxBlockSize
|
|
469
|
+
try {
|
|
470
|
+
engine.setSynthInstrument('saw-lead', 0); // patch (or name), destinationId
|
|
471
|
+
engine.play();
|
|
472
|
+
engine.pushMidiNoteOn(0, 0, 0, 60, 100); // destination, group, channel, note, velocity
|
|
473
|
+
engine.pushMidiNoteOff(0, 0, 0, 60);
|
|
474
|
+
|
|
475
|
+
const blockL = new Float32Array(128);
|
|
476
|
+
const blockR = new Float32Array(128);
|
|
477
|
+
const out = engine.process([blockL, blockR]); // Float32Array[] per channel
|
|
478
|
+
const telemetry = engine.drainTelemetry();
|
|
479
|
+
} finally {
|
|
480
|
+
engine.destroy();
|
|
481
|
+
}
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
Capabilities:
|
|
485
|
+
|
|
486
|
+
- **Transport**: `play` / `stop` / `seekSample` / `seekPpq` / `setTempo` /
|
|
487
|
+
`setTimeSignature` / `setLoop`, plus `getTransportState`.
|
|
488
|
+
- **Instruments**: `setBuiltinInstrument` / `setSynthInstrument` /
|
|
489
|
+
`setSf2Instrument` (+ `loadSoundFont`) per MIDI destination id.
|
|
490
|
+
- **Live MIDI**: `pushMidiNoteOn` / `pushMidiNoteOff` / `pushMidiCc` /
|
|
491
|
+
`pushMidiPanic`, and `bindMidiCc(channel, controller, paramId, options?)` to
|
|
492
|
+
map a CC to an automation parameter.
|
|
493
|
+
- **Process / bounce**: `process` (real-time blocks), the allocation-free
|
|
494
|
+
`prepareChannels` + `getChannelBuffer` + `processPrepared` worklet path,
|
|
495
|
+
`renderOffline`, `bounceOffline`, `freezeOffline`.
|
|
496
|
+
- **Clip page providers**: `createClipPageProvider` + `supplyClipPage` for
|
|
497
|
+
streaming large clip audio in pages; pair with the OPFS helpers
|
|
498
|
+
(`createOpfsClipPageProvider`).
|
|
499
|
+
- **Telemetry**: `drainTelemetry` / `drainMeterTelemetry`. Inspect runtime
|
|
500
|
+
capabilities (ABI compatibility, SharedArrayBuffer/Atomics) via
|
|
501
|
+
`engineCapabilities()`.
|
|
502
|
+
|
|
503
|
+
### Real-time voice changer
|
|
504
|
+
|
|
505
|
+
`RealtimeVoiceChanger` runs a block-by-block voice transformation chain (retune,
|
|
506
|
+
formant shaping, EQ, gate, compressor). Construct it from a preset id (see
|
|
507
|
+
`realtimeVoiceChangerPresetNames()`) or a full config object, then process blocks.
|
|
508
|
+
|
|
509
|
+
```typescript
|
|
510
|
+
import { init, RealtimeVoiceChanger, voiceChangeRealtime } from '@libraz/libsonare';
|
|
511
|
+
|
|
512
|
+
await init();
|
|
513
|
+
|
|
514
|
+
const changer = new RealtimeVoiceChanger('bright-idol');
|
|
515
|
+
try {
|
|
516
|
+
changer.prepare(48000, 128, 1); // sampleRate, maxBlockSize, channels
|
|
517
|
+
const out = changer.processMono(block);
|
|
518
|
+
} finally {
|
|
519
|
+
changer.delete();
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// Whole-buffer convenience wrapper (constructs/prepares/disposes internally).
|
|
523
|
+
const processed = voiceChangeRealtime(samples, { preset: 'deep-narrator', sampleRate: 48000 });
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
For a simple offline pitch + formant shift without the full chain, use
|
|
527
|
+
`voiceChange(samples, sampleRate, { pitchSemitones: -2, formantFactor: 1.1 })`.
|
|
528
|
+
Inspect a preset with `realtimeVoiceChangerPresetJson(name)`.
|
|
529
|
+
|
|
334
530
|
### AudioWorklet bridge
|
|
335
531
|
|
|
336
532
|
The package exposes an optional worklet entry that uses the same `sonare.wasm`
|
|
@@ -427,6 +623,51 @@ function readMeters() {
|
|
|
427
623
|
}
|
|
428
624
|
```
|
|
429
625
|
|
|
626
|
+
#### RealtimeEngine AudioWorklet facade
|
|
627
|
+
|
|
628
|
+
For browser DAW-style playback, `SonareEngine` keeps a main-thread
|
|
629
|
+
`RealtimeEngine` mirror for offline renders and synchronizes the live worklet
|
|
630
|
+
engine through control messages. The default runtime target is the embind engine;
|
|
631
|
+
the `sonare-rt` runtime remains a transport-focused fallback.
|
|
632
|
+
|
|
633
|
+
```typescript
|
|
634
|
+
import { init } from '@libraz/libsonare';
|
|
635
|
+
import { init as initWorklet, SonareEngine } from '@libraz/libsonare/worklet';
|
|
636
|
+
|
|
637
|
+
await init();
|
|
638
|
+
await audioContext.audioWorklet.addModule('/worklet.js');
|
|
639
|
+
await initWorklet();
|
|
640
|
+
|
|
641
|
+
const engine = await SonareEngine.create(audioContext, { mode: 'sab' });
|
|
642
|
+
engine.setTrackLanes([{ trackId: 1 }]);
|
|
643
|
+
engine.setTrackStripJson(1, trackSceneJson);
|
|
644
|
+
engine.addClip(1, [clipL, clipR], 0);
|
|
645
|
+
engine.setTempoSegments([{ startPpq: 0, bpm: 120 }]);
|
|
646
|
+
engine.setTimeSignatureSegments([{ startPpq: 0, numerator: 4, denominator: 4 }]);
|
|
647
|
+
engine.transport.play();
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
| Need | Facade/API |
|
|
651
|
+
|---|---|
|
|
652
|
+
| Track routing, fader, pan, solo/mute | `setTrackLanes`, `setStripGain`, `setStripPan`, `setSoloMute` |
|
|
653
|
+
| Track/master inserts and EQ | `setTrackStripJson`, `setMasterStripJson`, `setTrackStripEqBand`, `setMasterStripEqBand`, insert bypass methods |
|
|
654
|
+
| Sends and buses | `setSends`, `setBusGain`, `setBusStripJson` |
|
|
655
|
+
| MIDI clips and live MIDI | `setMidiClips`, `pushMidiNoteOn`, `pushMidiNoteOff`, `pushMidiCc`, `pushMidiPanic` |
|
|
656
|
+
| Instruments | `setBuiltinInstrument`, `setSynthInstrument`, `loadSoundFont`, `setSf2Instrument` |
|
|
657
|
+
| Recording and monitoring | `configureCapture` (incl. the `inputMonitor` option), `armRecord`, `punch`, `capturedAudio`, `captureStatus` |
|
|
658
|
+
| Transport, tempo, markers | `getTransportState`, `cachedTransportState`, `setTempoSegments`, `setTimeSignatureSegments`, marker methods, `setLoopFromMarkers` |
|
|
659
|
+
| Clip updates | `addClip`, `removeClip`; the facade sends clip deltas while the processor keeps full-sync compatibility |
|
|
660
|
+
| Meters | `onMeter` messages or the meter SharedArrayBuffer ring; records include master, lane, bus, and input target ids |
|
|
661
|
+
|
|
662
|
+
Studio integration notes:
|
|
663
|
+
|
|
664
|
+
- If a host worklet entry filters message names before forwarding, add every
|
|
665
|
+
`sync*`, `captureRequest`, and `transportRequest` message used above to that
|
|
666
|
+
allowlist; otherwise the host may silently drop the new control messages.
|
|
667
|
+
- If a host vendors built worklet bundles, regenerate and reimport
|
|
668
|
+
`worklet.js`, `worklet.d.ts`, `sonare.js`, `sonare.wasm`,
|
|
669
|
+
`sonare-rt.js`, `sonare-rt-module.js`, and `sonare-rt.wasm` together.
|
|
670
|
+
|
|
430
671
|
### Progress callback
|
|
431
672
|
|
|
432
673
|
`masteringChainWithProgress` (and its stereo variant) is `masteringChain` with
|
|
@@ -476,17 +717,50 @@ chain.reset();
|
|
|
476
717
|
chain.delete(); // release WASM memory
|
|
477
718
|
```
|
|
478
719
|
|
|
720
|
+
### Streaming equalizer and retune
|
|
721
|
+
|
|
722
|
+
`StreamingEqualizer` wraps the unified `EqualizerProcessor` (up to 24 bands,
|
|
723
|
+
RBJ/Vicanek biquads, dynamic EQ, linear-phase FIR, mid/side, auto-gain) with
|
|
724
|
+
state maintained across calls. `StreamingRetune` is a block-by-block mono voice
|
|
725
|
+
retune / pitch shifter.
|
|
726
|
+
|
|
727
|
+
```typescript
|
|
728
|
+
import { init, StreamingEqualizer, StreamingRetune } from '@libraz/libsonare';
|
|
729
|
+
|
|
730
|
+
await init();
|
|
731
|
+
|
|
732
|
+
const eq = new StreamingEqualizer({ sampleRate: 48000, maxBlockSize: 512 });
|
|
733
|
+
try {
|
|
734
|
+
eq.setBand(0, { type: 'HighShelf', frequencyHz: 8000, gainDb: 6, enabled: true });
|
|
735
|
+
const { left: eqL, right: eqR } = eq.processStereo(left, right);
|
|
736
|
+
} finally {
|
|
737
|
+
eq.delete();
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
const retune = new StreamingRetune({ semitones: 2, mix: 1.0 });
|
|
741
|
+
try {
|
|
742
|
+
retune.prepare(48000, 512); // sampleRate, maxBlockSize
|
|
743
|
+
const shifted = retune.processMono(monoBlock);
|
|
744
|
+
} finally {
|
|
745
|
+
retune.delete();
|
|
746
|
+
}
|
|
747
|
+
```
|
|
748
|
+
|
|
479
749
|
## Features
|
|
480
750
|
|
|
481
|
-
- **Detection**:
|
|
751
|
+
- **Detection**: `detectBeats`, `detectOnsets`, `detectDownbeats`, `detectChords`, `detectKey`, `detectKeyCandidates`, `chordFunctionalAnalysis`, sections
|
|
752
|
+
- **Analysis**: `analyze`, `analyzeWithProgress`, `analyzeBpm`, `analyzeRhythm`, `analyzeDynamics`, `analyzeTimbre`; `hasFfmpegSupport` capability check
|
|
482
753
|
- **Effects**: HPSS, HPSS with residual, time stretch, phase vocoder, pitch shift, normalize, trim, remix
|
|
483
754
|
- **Mastering**: EQ, compressor, tape/exciter, air band, stereo imaging,
|
|
484
755
|
true-peak limiting, loudness optimization
|
|
485
756
|
- **Features**: STFT, mel spectrogram, MFCC, chroma, CQT/VQT, spectral contrast, poly features, zero crossings
|
|
486
757
|
- **Pitch**: YIN, pYIN algorithms with optional `fillNa`
|
|
487
758
|
- **Decomposition & loudness**: NMF decomposition, nearest-neighbour filtering, multichannel LUFS, EBU R128 LRA
|
|
488
|
-
- **Streaming**: Real-time analysis with progressive estimates
|
|
489
|
-
- **
|
|
759
|
+
- **Streaming**: Real-time analysis with progressive estimates; streaming mastering chain, equalizer, and retune
|
|
760
|
+
- **Instruments**: built-in synth, patch-driven NativeSynth, SoundFont (SF2) player — bound to `Project` bounces or the `RealtimeEngine`
|
|
761
|
+
- **Real-time**: `RealtimeEngine` transport/MIDI/render, `RealtimeVoiceChanger`, AudioWorklet bridge
|
|
762
|
+
- **Room acoustics**: blind RT60/EDT, impulse-response clarity metrics, RIR synthesis, room estimation, room morphing
|
|
763
|
+
- **Headless DAW**: `Project` arrangement model — audio/MIDI tracks & clips, undo/redo, MIDI sequencing, clip warp, SMF / MIDI 2.0 Clip File I/O, deterministic JSON, offline `bounce`
|
|
490
764
|
- **Conversions**: Hz/mel/MIDI/note, frames/time, resample
|
|
491
765
|
|
|
492
766
|
## Also available
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as AcousticOptions, a as AcousticResult, b as AnalysisResult, c as AnalyzeBpmOptions, d as AnalyzeDynamicsOptions, e as AnalyzeRhythmOptions, f as AnalyzeSectionsOptions, g as AnalyzeTimbreOptions, h as AnalyzerStats, i as Audio, j as AutomationCurve, B as BarChord, k as Beat, l as BindMicrophoneInputOptions, m as BindWebMidiOptions, n as BpmAnalysisResult, o as BpmCandidate, p as BrowserAudioDecodeOptions, q as BuiltinSynthBinding, r as BuiltinSynthConfig, s as BuiltinSynthWaveform, C as Chord, t as ChordAnalysisResult, u as ChordChange, v as ChordDetectionOptions, w as ChordQuality, x as ChromaResult, y as ClippingRegion, z as ClippingReport, D as CompressorDetector, E as CompressorOptions, F as CqtResult, G as DeclickOptions, H as DeclipOptions, I as DecomposeResult, J as DecrackleMode, K as DecrackleOptions, L as DehumOptions, M as DenoiseClassicalMode, N as DenoiseClassicalNoiseEstimator, O as DenoiseClassicalOptions, P as DereverbClassicalOptions, Q as DynamicRangeReport, R as Dynamics, S as DynamicsAnalysisResult, T as DynamicsResult, U as EXPECTED_ENGINE_ABI_VERSION, V as EXPECTED_PROJECT_ABI_VERSION, W as EngineAutomationPoint, X as EngineBounceOptions, Y as EngineBounceResult, Z as EngineCapabilities, _ as EngineCaptureStatus, $ as EngineClip, a0 as EngineFreezeOptions, a1 as EngineFreezeResult, a2 as EngineGraphSpec, a3 as EngineMarker, a4 as EngineMeterTelemetry, a5 as EngineMetronomeConfig, a6 as EngineParameterInfo, a7 as EngineTelemetry, a8 as EngineTransportState, a9 as EqBand, aa as EqBandPhase, ab as EqBandType, ac as EqCoeffMode, ad as EqMatchOptions, ae as EqSpectrumSnapshot, af as EqStereoPlacement, ag as FrameBuffer, ah as GateOptions, ai as GoniometerPoint, aj as HpssResult, ak as HpssWithResidualResult, al as Key, am as KeyCandidate, an as KeyDetectionOptions, ao as KeyProfile, ap as KeyProfileName, aq as LufsResult, ar as MasteringChainConfig, as as MasteringChainResult, at as MasteringOptions, au as MasteringPreset, av as MasteringProcessorParams, aw as MasteringResult, ax as MasteringStereoChainResult, ay as MasteringStereoResult, az as Matrix2dResult, aA as MelPowerResult, aB as MelSpectrogramResult, aC as MelodyOptions, aD as MelodyPoint, aE as MelodyResult, aF as MeterTap, aG as MeteringDetectClippingOptions, aH as MeteringDynamicRangeOptions, aI as MfccResult, aJ as MicrophoneInputBinding, aK as MidiCcBindOptions, aL as MidiCcLearnOptions, aM as MixMeterSnapshot, aN as MixOptions, aO as MixResult, aP as Mixer, aQ as MixerProcessResult, aR as MixerRealtimeBuffer, aS as Mode, aT as NoteStretchOptions, aU as OpfsClipPageProviderBinding, aV as OpfsClipPageProviderOptions, aW as PairAnalysis, aX as PairProcessor, aY as PanLaw, aZ as PanMode, a_ as PatternScore, a$ as PhaseScopeReport, b0 as Pitch, b0 as PitchClass, b1 as PitchResult, b2 as ProgressiveEstimate, b3 as Project, b4 as ProjectAssistSidecar, b5 as ProjectAutomationCurve, b6 as ProjectAutomationLaneDesc, b7 as ProjectAutomationPoint, b8 as ProjectBounceOptions, b9 as ProjectChordSymbol, ba as ProjectClipCompSegment, bb as ProjectClipDesc, bc as ProjectClipFade, bd as ProjectClipTake, be as ProjectCompileResult, bf as ProjectFadeCurve, bg as ProjectKeySegment, bh as ProjectLoopMode, bi as ProjectLoopRecordingDesc, bj as ProjectLoopRecordingResult, bk as ProjectMidiClipResult, bl as ProjectMidiEvent, bm as ProjectNotePairValidation, bn as ProjectTrackDesc, bo as ProjectTrackKind, bp as ProjectWarpAnchor, bq as ProjectWarpMapDesc, br as RealtimeEngine, bs as RealtimeVoiceChanger, bt as RealtimeVoiceChangerConfigInput, bu as RealtimeVoiceChangerInterleavedBuffer, bv as RealtimeVoiceChangerMonoBuffer, bw as RealtimeVoiceChangerPlanarBuffer, bx as RealtimeVoiceChangerPodConfig, by as RhythmAnalysisResult, bz as RhythmFeatures, bA as RirResult, bB as RirSynthOptions, bC as RoomEstimateOptions, bD as RoomEstimateResult, bE as RoomGeometryOptions, bF as RoomMorphOptions, bG as SYNTH_BODY_TYPES, bH as SYNTH_ENGINE_MODES, bI as SYNTH_FILTER_MODELS, bJ as SYNTH_FILTER_OUTPUTS, bK as SYNTH_MOD_DESTINATIONS, bL as SYNTH_MOD_SOURCES, bM as SYNTH_OSC_WAVEFORMS, bN as Section, bO as SectionType, bP as SendTiming, bQ as Sf2InstrumentConfig, bR as Sf2ProgramStatus, bS as SoloProcessor, bT as SourceBackend, bU as SpectrumOptions, bV as SpectrumReport, bW as StereoAnalysis, bX as StftPowerResult, bY as StftResult, bZ as StreamAnalyzer, b_ as StreamConfig, b$ as StreamConfigDefaults, c0 as StreamFramesI16, c1 as StreamFramesU8, c2 as StreamQuantizeConfig, c3 as StreamingEqualizer, c4 as StreamingEqualizerConfig, c5 as StreamingMasteringChain, c6 as StreamingMasteringChainConfig, c7 as StreamingPlatform, c8 as StreamingRetune, c9 as StreamingRetuneConfig, ca as SynthBodyType, cb as SynthEngineMode, cc as SynthEnumTables, cd as SynthFilterModel, ce as SynthFilterOutput, cf as SynthModDestination, cg as SynthModRouting, ch as SynthModSource, ci as SynthOscWaveform, cj as SynthPatch, ck as TempogramMode, cl as Timbre, cm as TimbreAnalysisResult, cn as TimbreFrame, co as TimeSignature, cp as TransientShaperOptions, cq as TrimSilenceMode, cr as TrimSilenceOptions, cs as ValidateOptions, ct as VectorscopeReport, cu as VoiceChangeOptions, cv as VoiceChangeRealtimeOptions, cw as VoicePresetId, cx as WaveformPeakPyramidOptions, cy as WaveformPeaksOptions, cz as WaveformPeaksReport, cA as WebMidiBinding, cB as WebMidiCcBinding, cC as WebMidiInputInfo, cD as amplitudeToDb, cE as analyze, cF as analyzeBpm, cG as analyzeDynamics, cH as analyzeImpulseResponse, cI as analyzeMelody, cJ as analyzeRhythm, cK as analyzeSections, cL as analyzeTimbre, cM as analyzeWithProgress, cN as bassChroma, cO as bindMicrophoneInput, cP as bindWebMidi, cQ as chordFunctionalAnalysis, cR as chroma, cS as chromaCens, cT as cqt, cU as createOpfsClipPageProvider, cV as createOpfsClipPageWorker, cW as cyclicTempogram, cX as dbToAmplitude, cY as dbToPower, cZ as decompose, c_ as decomposeWithInit, c$ as deemphasis, d0 as detectAcoustic, d1 as detectBeats, d2 as detectBpm, d3 as detectChords, d4 as detectDownbeats, d5 as detectKey, d6 as detectKeyCandidates, d7 as detectOnsets, d8 as ebur128LoudnessRange, d9 as engineAbiVersion, da as engineCapabilities, db as estimateRoom, dc as estimateTuning, dd as fixFrames, de as fixLength, df as fourierTempogram, dg as frameSignal, dh as framesToSamples, di as framesToTime, dj as harmonic, dk as hasFfmpegSupport, dl as hpss, dm as hpssWithResidual, dn as hybridCqt, dp as hzToMel, dq as hzToMidi, dr as hzToNote, init, isInitialized, ds as isWebMidiAvailable, dt as lufs, du as lufsInterleaved, dv as masterAudio, dw as masterAudioStereo, dx as masterAudioStereoWithProgress, dy as masterAudioWithProgress, dz as mastering, dA as masteringAssistantSuggest, dB as masteringAudioProfile, dC as masteringChain, dD as masteringChainStereo, dE as masteringChainStereoWithProgress, dF as masteringChainWithProgress, dG as masteringDynamicsCompressor, dH as masteringDynamicsGate, dI as masteringDynamicsTransientShaper, dJ as masteringInsertNames, dK as masteringPairAnalysisNames, dL as masteringPairAnalyze, dM as masteringPairProcess, dN as masteringPairProcessorNames, dO as masteringPresetNames, dP as masteringProcess, dQ as masteringProcessStereo, dR as masteringProcessorNames, dS as masteringRepairDeclick, dT as masteringRepairDeclip, dU as masteringRepairDecrackle, dV as masteringRepairDehum, dW as masteringRepairDenoiseClassical, dX as masteringRepairDereverbClassical, dY as masteringRepairTrimSilence, dZ as masteringStereoAnalysisNames, d_ as masteringStereoAnalyze, d$ as masteringStreamingPreview, e0 as melSpectrogram, e1 as melToAudio, e2 as melToHz, e3 as melToStft, e4 as meteringCrestFactorDb, e5 as meteringDcOffset, e6 as meteringDetectClipping, e7 as meteringDynamicRange, e8 as meteringPeakDb, e9 as meteringPhaseScope, ea as meteringPhaseScopeDecimated, eb as meteringRmsDb, ec as meteringSpectrum, ed as meteringSpectrumFrame, ee as meteringStereoCorrelation, ef as meteringStereoWidth, eg as meteringTruePeakDb, eh as meteringVectorscope, ei as meteringVectorscopeDecimated, ej as mfcc, ek as mfccToAudio, el as mfccToMel, em as midiToHz, en as mixStereo, eo as mixingScenePresetJson, ep as mixingScenePresetNames, eq as momentaryLufs, er as nnFilter, es as nnlsChroma, et as normalize, eu as noteStretch, ev as noteToHz, ew as onsetEnvelope, ex as onsetStrengthMulti, ey as opfsClipPageWorkerSource, ez as padCenter, eA as pcen, eB as peakPick, eC as percussive, eD as phaseVocoder, eE as pitchCorrectToMidi, eF as pitchCorrectToMidiTimevarying, eG as pitchPyin, eH as pitchShift, eI as pitchTuning, eJ as pitchYin, eK as plp, eL as polyFeatures, eM as powerToDb, eN as preemphasis, eO as projectAbiVersion, eP as pseudoCqt, eQ as realtimeVoiceChangerPresetConfig, eR as realtimeVoiceChangerPresetJson, eS as realtimeVoiceChangerPresetNames, eT as remix, eU as resample, eV as rmsEnergy, eW as roomMorph, eX as samplesToFrames, eY as scaleCorrectionSemitones, eZ as scalePitchClassEnabled, e_ as scaleQuantizeMidi, e$ as shortTermLufs, f0 as spectralBandwidth, f1 as spectralCentroid, f2 as spectralContrast, f3 as spectralFlatness, f4 as spectralRolloff, f5 as splitSilence, f6 as stft, f7 as stftDb, f8 as streamAnalyzerConfigDefaults, f9 as synthEnumTables, fa as synthPresetNames, fb as synthPresetPatch, fc as synthesizeRir, fd as tempogram, fe as tempogramRatio, ff as timeStretch, fg as timeToFrames, fh as tonnetz, fi as trim, fj as trimSilence, fk as validateRealtimeVoiceChangerPresetJson, fl as vectorNormalize, fm as version, fn as voiceChange, fo as voiceChangeRealtime, fp as voiceChangerAbiVersion, fq as voiceCharacterPresetId, fr as vqt, fs as waveformPeakPyramid, ft as waveformPeaks, fu as zeroCrossingRate, fv as zeroCrossings } from './worklet.js';
|
|
1
|
+
export { A as AcousticOptions, a as AcousticResult, b as AnalysisResult, c as AnalyzeBpmOptions, d as AnalyzeDynamicsOptions, e as AnalyzeRhythmOptions, f as AnalyzeSectionsOptions, g as AnalyzeTimbreOptions, h as AnalyzerStats, i as Audio, j as AutomationCurve, B as BarChord, k as Beat, l as BindMicrophoneInputOptions, m as BindWebMidiOptions, n as BpmAnalysisResult, o as BpmCandidate, p as BrowserAudioDecodeOptions, q as BuiltinSynthBinding, r as BuiltinSynthConfig, s as BuiltinSynthWaveform, C as Chord, t as ChordAnalysisResult, u as ChordChange, v as ChordDetectionOptions, w as ChordQuality, x as ChromaResult, y as ClippingRegion, z as ClippingReport, D as CompressorDetector, E as CompressorOptions, F as CqtResult, G as DeclickOptions, H as DeclipOptions, I as DecomposeResult, J as DecrackleMode, K as DecrackleOptions, L as DehumOptions, M as DenoiseClassicalMode, N as DenoiseClassicalNoiseEstimator, O as DenoiseClassicalOptions, P as DereverbClassicalOptions, Q as DynamicRangeReport, R as Dynamics, S as DynamicsAnalysisResult, T as DynamicsResult, U as EXPECTED_ENGINE_ABI_VERSION, V as EXPECTED_PROJECT_ABI_VERSION, W as EngineAutomationPoint, X as EngineBounceOptions, Y as EngineBounceResult, Z as EngineBus, _ as EngineCapabilities, $ as EngineCaptureStatus, a0 as EngineClip, a1 as EngineFreezeOptions, a2 as EngineFreezeResult, a3 as EngineGraphSpec, a4 as EngineMarker, a5 as EngineMeterTelemetry, a6 as EngineMetronomeConfig, a7 as EngineMidiClipSchedule, a8 as EngineMidiEvent, a9 as EngineParameterInfo, aa as EngineTelemetry, ab as EngineTempoSegment, ac as EngineTimeSignatureSegment, ad as EngineTrackLane, ae as EngineTrackSend, af as EngineTransportState, ag as EqBand, ah as EqBandPhase, ai as EqBandType, aj as EqCoeffMode, ak as EqMatchOptions, al as EqSpectrumSnapshot, am as EqStereoPlacement, an as ErrorCode, ao as FrameBuffer, ap as GateOptions, aq as GoniometerPoint, ar as HpssResult, as as HpssWithResidualResult, at as Key, au as KeyCandidate, av as KeyDetectionOptions, aw as KeyProfile, ax as KeyProfileName, ay as LufsResult, az as MasteringChainConfig, aA as MasteringChainResult, aB as MasteringOptions, aC as MasteringPreset, aD as MasteringProcessorParams, aE as MasteringResult, aF as MasteringStereoChainResult, aG as MasteringStereoResult, aH as Matrix2dResult, aI as MelPowerResult, aJ as MelSpectrogramResult, aK as MelodyOptions, aL as MelodyPoint, aM as MelodyResult, aN as MeterTap, aO as MeteringDetectClippingOptions, aP as MeteringDynamicRangeOptions, aQ as MfccResult, aR as MicrophoneInputBinding, aS as MidiCcBindOptions, aT as MidiCcLearnOptions, aU as MixMeterSnapshot, aV as MixOptions, aW as MixResult, aX as Mixer, aY as MixerProcessResult, aZ as MixerRealtimeBuffer, a_ as Mode, a$ as NoteStretchOptions, b0 as OpfsClipPageProviderBinding, b1 as OpfsClipPageProviderOptions, b2 as PairAnalysis, b3 as PairProcessor, b4 as PanLaw, b5 as PanMode, b6 as PatternScore, b7 as PhaseScopeReport, b8 as Pitch, b8 as PitchClass, b9 as PitchResult, ba as ProgressiveEstimate, bb as Project, bc as ProjectAssistSidecar, bd as ProjectAutomationCurve, be as ProjectAutomationLaneDesc, bf as ProjectAutomationPoint, bg as ProjectBounceOptions, bh as ProjectChordSymbol, bi as ProjectClipCompSegment, bj as ProjectClipDesc, bk as ProjectClipFade, bl as ProjectClipTake, bm as ProjectCompileResult, bn as ProjectFadeCurve, bo as ProjectKeySegment, bp as ProjectLoopMode, bq as ProjectLoopRecordingDesc, br as ProjectLoopRecordingResult, bs as ProjectMidiClipResult, bt as ProjectMidiEvent, bu as ProjectNotePairValidation, bv as ProjectTrackDesc, bw as ProjectTrackKind, bx as ProjectWarpAnchor, by as ProjectWarpMapDesc, bz as RealtimeEngine, bA as RealtimeVoiceChanger, bB as RealtimeVoiceChangerConfigInput, bC as RealtimeVoiceChangerInterleavedBuffer, bD as RealtimeVoiceChangerMonoBuffer, bE as RealtimeVoiceChangerPlanarBuffer, bF as RealtimeVoiceChangerPodConfig, bG as RhythmAnalysisResult, bH as RhythmFeatures, bI as RirResult, bJ as RirSynthOptions, bK as RoomEstimateOptions, bL as RoomEstimateResult, bM as RoomGeometryOptions, bN as RoomMorphOptions, bO as SYNTH_BODY_TYPES, bP as SYNTH_ENGINE_MODES, bQ as SYNTH_FILTER_MODELS, bR as SYNTH_FILTER_OUTPUTS, bS as SYNTH_MOD_DESTINATIONS, bT as SYNTH_MOD_SOURCES, bU as SYNTH_OSC_WAVEFORMS, bV as Section, bW as SectionType, bX as SendTiming, bY as Sf2InstrumentConfig, bZ as Sf2ProgramStatus, b_ as SoloProcessor, b$ as SonareError, c0 as SourceBackend, c1 as SpectrumOptions, c2 as SpectrumReport, c3 as StereoAnalysis, c4 as StftPowerResult, c5 as StftResult, c6 as StreamAnalyzer, c7 as StreamConfig, c8 as StreamConfigDefaults, c9 as StreamFramesI16, ca as StreamFramesU8, cb as StreamQuantizeConfig, cc as StreamingEqualizer, cd as StreamingEqualizerConfig, ce as StreamingMasteringChain, cf as StreamingMasteringChainConfig, cg as StreamingPlatform, ch as StreamingRetune, ci as StreamingRetuneConfig, cj as SynthBodyType, ck as SynthEngineMode, cl as SynthEnumTables, cm as SynthFilterModel, cn as SynthFilterOutput, co as SynthModDestination, cp as SynthModRouting, cq as SynthModSource, cr as SynthOscWaveform, cs as SynthPatch, ct as TempogramMode, cu as Timbre, cv as TimbreAnalysisResult, cw as TimbreFrame, cx as TimeSignature, cy as TransientShaperOptions, cz as TrimSilenceMode, cA as TrimSilenceOptions, cB as ValidateOptions, cC as VectorscopeReport, cD as VoiceChangeOptions, cE as VoiceChangeRealtimeOptions, cF as VoicePresetId, cG as WaveformPeakPyramidOptions, cH as WaveformPeaksOptions, cI as WaveformPeaksReport, cJ as WebMidiBinding, cK as WebMidiCcBinding, cL as WebMidiInputInfo, cM as amplitudeToDb, cN as analyze, cO as analyzeBpm, cP as analyzeDynamics, cQ as analyzeImpulseResponse, cR as analyzeMelody, cS as analyzeRhythm, cT as analyzeSections, cU as analyzeTimbre, cV as analyzeWithProgress, cW as bassChroma, cX as bindMicrophoneInput, cY as bindWebMidi, cZ as chordFunctionalAnalysis, c_ as chroma, c$ as chromaCens, d0 as cqt, d1 as createOpfsClipPageProvider, d2 as createOpfsClipPageWorker, d3 as cyclicTempogram, d4 as dbToAmplitude, d5 as dbToPower, d6 as decompose, d7 as decomposeWithInit, d8 as deemphasis, d9 as detectAcoustic, da as detectBeats, db as detectBpm, dc as detectChords, dd as detectDownbeats, de as detectKey, df as detectKeyCandidates, dg as detectOnsets, dh as ebur128LoudnessRange, di as engineAbiVersion, dj as engineCapabilities, dk as estimateRoom, dl as estimateTuning, dm as fixFrames, dn as fixLength, dp as fourierTempogram, dq as frameSignal, dr as framesToSamples, ds as framesToTime, dt as harmonic, du as hasFfmpegSupport, dv as hpss, dw as hpssWithResidual, dx as hybridCqt, dy as hzToMel, dz as hzToMidi, dA as hzToNote, init, isInitialized, dB as isSonareError, dC as isWebMidiAvailable, dD as lufs, dE as lufsInterleaved, dF as masterAudio, dG as masterAudioStereo, dH as masterAudioStereoWithProgress, dI as masterAudioWithProgress, dJ as mastering, dK as masteringAssistantSuggest, dL as masteringAudioProfile, dM as masteringChain, dN as masteringChainStereo, dO as masteringChainStereoWithProgress, dP as masteringChainWithProgress, dQ as masteringDynamicsCompressor, dR as masteringDynamicsGate, dS as masteringDynamicsTransientShaper, dT as masteringInsertNames, dU as masteringInsertParamNames, dV as masteringPairAnalysisNames, dW as masteringPairAnalyze, dX as masteringPairProcess, dY as masteringPairProcessorNames, dZ as masteringPresetNames, d_ as masteringProcess, d$ as masteringProcessStereo, e0 as masteringProcessorNames, e1 as masteringRepairDeclick, e2 as masteringRepairDeclip, e3 as masteringRepairDecrackle, e4 as masteringRepairDehum, e5 as masteringRepairDenoiseClassical, e6 as masteringRepairDereverbClassical, e7 as masteringRepairTrimSilence, e8 as masteringStereoAnalysisNames, e9 as masteringStereoAnalyze, ea as masteringStreamingPreview, eb as melSpectrogram, ec as melToAudio, ed as melToHz, ee as melToStft, ef as meteringCrestFactorDb, eg as meteringDcOffset, eh as meteringDetectClipping, ei as meteringDynamicRange, ej as meteringPeakDb, ek as meteringPhaseScope, el as meteringPhaseScopeDecimated, em as meteringRmsDb, en as meteringSpectrum, eo as meteringSpectrumFrame, ep as meteringStereoCorrelation, eq as meteringStereoWidth, er as meteringTruePeakDb, es as meteringVectorscope, et as meteringVectorscopeDecimated, eu as mfcc, ev as mfccToAudio, ew as mfccToMel, ex as midiToHz, ey as mixStereo, ez as mixingScenePresetJson, eA as mixingScenePresetNames, eB as momentaryLufs, eC as nnFilter, eD as nnlsChroma, eE as normalize, eF as noteStretch, eG as noteToHz, eH as onsetEnvelope, eI as onsetStrengthMulti, eJ as opfsClipPageWorkerSource, eK as padCenter, eL as pcen, eM as peakPick, eN as percussive, eO as phaseVocoder, eP as pitchCorrectToMidi, eQ as pitchCorrectToMidiTimevarying, eR as pitchPyin, eS as pitchShift, eT as pitchTuning, eU as pitchYin, eV as plp, eW as polyFeatures, eX as powerToDb, eY as preemphasis, eZ as projectAbiVersion, e_ as pseudoCqt, e$ as realtimeVoiceChangerPresetConfig, f0 as realtimeVoiceChangerPresetJson, f1 as realtimeVoiceChangerPresetNames, f2 as remix, f3 as resample, f4 as rmsEnergy, f5 as roomMorph, f6 as samplesToFrames, f7 as scaleCorrectionSemitones, f8 as scalePitchClassEnabled, f9 as scaleQuantizeMidi, fa as shortTermLufs, fb as spectralBandwidth, fc as spectralCentroid, fd as spectralContrast, fe as spectralFlatness, ff as spectralRolloff, fg as splitSilence, fh as stft, fi as stftDb, fj as streamAnalyzerConfigDefaults, fk as synthEnumTables, fl as synthPresetNames, fm as synthPresetPatch, fn as synthesizeRir, fo as tempogram, fp as tempogramRatio, fq as timeStretch, fr as timeToFrames, fs as tonnetz, ft as trim, fu as trimSilence, fv as validateRealtimeVoiceChangerPresetJson, fw as vectorNormalize, fx as version, fy as voiceChange, fz as voiceChangeRealtime, fA as voiceChangerAbiVersion, fB as voiceCharacterPresetId, fC as vqt, fD as waveformPeakPyramid, fE as waveformPeaks, fF as zeroCrossingRate, fG as zeroCrossings } from './worklet.js';
|
|
2
2
|
export { ProgressCallback } from './sonare.js';
|