@libraz/libsonare 1.5.0 → 1.5.2
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 +1 -1
- package/dist/index.d.ts +108 -55
- package/dist/index.js +162 -27
- package/dist/index.js.map +1 -1
- package/dist/sonare.js +2 -2
- package/dist/sonare.wasm +0 -0
- package/dist/worklet.js +8 -1
- package/dist/worklet.js.map +1 -1
- package/package.json +1 -1
- package/src/clip_page_streamer.ts +63 -15
- package/src/effects_voice_change.ts +7 -7
- package/src/feature_music.ts +110 -2
- package/src/features.ts +2 -0
- package/src/index.ts +15 -0
- package/src/mastering_core.ts +10 -0
- package/src/mixer.ts +9 -1
- package/src/project_class.ts +17 -7
- package/src/project_internal.ts +1 -0
- package/src/public_types_music.ts +1 -0
- package/src/public_types_realtime.ts +39 -39
- package/src/sonare.js.d.ts +70 -38
- package/src/stream_analyzer.ts +8 -1
- package/src/stream_types.ts +8 -0
package/src/sonare.js.d.ts
CHANGED
|
@@ -26,45 +26,45 @@ export interface WasmKeyCandidateResult {
|
|
|
26
26
|
correlation: number;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
// Flat POD mirror of SonareRealtimeVoiceChangerConfig.
|
|
30
|
-
// C ABI / Python POD
|
|
29
|
+
// Flat POD mirror of SonareRealtimeVoiceChangerConfig. Keys are camelCase to
|
|
30
|
+
// match the Node addon getter (the underlying C ABI / Python POD is snake_case).
|
|
31
31
|
export interface WasmRealtimeVoiceChangerPodConfig {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
32
|
+
inputGainDb: number;
|
|
33
|
+
outputGainDb: number;
|
|
34
|
+
wetMix: number;
|
|
35
|
+
retuneSemitones: number;
|
|
36
|
+
retuneMix: number;
|
|
37
|
+
retuneGrainSize: number;
|
|
38
|
+
formantFactor: number;
|
|
39
|
+
formantAmount: number;
|
|
40
|
+
formantBody: number;
|
|
41
|
+
formantBrightness: number;
|
|
42
|
+
formantNasal: number;
|
|
43
|
+
eqHighpassHz: number;
|
|
44
|
+
eqBodyDb: number;
|
|
45
|
+
eqPresenceDb: number;
|
|
46
|
+
eqAirDb: number;
|
|
47
|
+
gateThresholdDb: number;
|
|
48
|
+
gateAttackMs: number;
|
|
49
|
+
gateReleaseMs: number;
|
|
50
|
+
gateRangeDb: number;
|
|
51
|
+
compressorThresholdDb: number;
|
|
52
|
+
compressorRatio: number;
|
|
53
|
+
compressorAttackMs: number;
|
|
54
|
+
compressorReleaseMs: number;
|
|
55
|
+
compressorMakeupGainDb: number;
|
|
56
|
+
deesserFrequencyHz: number;
|
|
57
|
+
deesserThresholdDb: number;
|
|
58
|
+
deesserRatio: number;
|
|
59
|
+
deesserRangeDb: number;
|
|
60
|
+
reverbMix: number;
|
|
61
|
+
reverbTimeMs: number;
|
|
62
|
+
reverbDamping: number;
|
|
63
|
+
reverbSeed: number;
|
|
64
|
+
limiterCeilingDb: number;
|
|
65
|
+
limiterReleaseMs: number;
|
|
66
|
+
limiterEnableIspLimiter: boolean;
|
|
67
|
+
limiterIspCeilingDbtp: number;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
export interface WasmBeatResult {
|
|
@@ -194,6 +194,8 @@ export interface WasmStreamConfigDefaults {
|
|
|
194
194
|
computeSpectral: boolean;
|
|
195
195
|
emitEveryNFrames: number;
|
|
196
196
|
magnitudeDownsample: number;
|
|
197
|
+
maxPendingFrames: number;
|
|
198
|
+
maxProgressionEntries: number;
|
|
197
199
|
keyUpdateIntervalSec: number;
|
|
198
200
|
bpmUpdateIntervalSec: number;
|
|
199
201
|
window: number;
|
|
@@ -1156,6 +1158,7 @@ export interface SonareModule {
|
|
|
1156
1158
|
detectKeyCandidates: (samples: Float32Array, sampleRate: number) => WasmKeyCandidateResult[];
|
|
1157
1159
|
hasFfmpegSupport: () => boolean;
|
|
1158
1160
|
version: () => string;
|
|
1161
|
+
abiVersion: () => number;
|
|
1159
1162
|
engineAbiVersion: () => number;
|
|
1160
1163
|
voiceChangerAbiVersion: () => number;
|
|
1161
1164
|
voiceCharacterPresetId: (preset: number) => string | null;
|
|
@@ -1904,6 +1907,27 @@ export interface SonareModule {
|
|
|
1904
1907
|
binsPerOctave: number,
|
|
1905
1908
|
gamma: number,
|
|
1906
1909
|
) => WasmCqtResult;
|
|
1910
|
+
cqtToAudio: (
|
|
1911
|
+
magnitude: Float32Array,
|
|
1912
|
+
nBins: number,
|
|
1913
|
+
nFrames: number,
|
|
1914
|
+
sampleRate: number,
|
|
1915
|
+
hopLength: number,
|
|
1916
|
+
fmin: number,
|
|
1917
|
+
binsPerOctave: number,
|
|
1918
|
+
nIter: number,
|
|
1919
|
+
) => Float32Array;
|
|
1920
|
+
vqtToAudio: (
|
|
1921
|
+
magnitude: Float32Array,
|
|
1922
|
+
nBins: number,
|
|
1923
|
+
nFrames: number,
|
|
1924
|
+
sampleRate: number,
|
|
1925
|
+
hopLength: number,
|
|
1926
|
+
fmin: number,
|
|
1927
|
+
binsPerOctave: number,
|
|
1928
|
+
gamma: number,
|
|
1929
|
+
nIter: number,
|
|
1930
|
+
) => Float32Array;
|
|
1907
1931
|
analyzeSections: (
|
|
1908
1932
|
samples: Float32Array,
|
|
1909
1933
|
sampleRate: number,
|
|
@@ -1948,6 +1972,7 @@ export interface SonareModule {
|
|
|
1948
1972
|
winLength: number,
|
|
1949
1973
|
sampleRate: number,
|
|
1950
1974
|
hopLength: number,
|
|
1975
|
+
factors?: Float32Array | number[],
|
|
1951
1976
|
) => Float32Array;
|
|
1952
1977
|
lufs: (samples: Float32Array, sampleRate: number) => WasmLufsResult;
|
|
1953
1978
|
momentaryLufs: (samples: Float32Array, sampleRate: number) => Float32Array;
|
|
@@ -2024,6 +2049,8 @@ export interface SonareModule {
|
|
|
2024
2049
|
computeSpectral: boolean,
|
|
2025
2050
|
emitEveryNFrames: number,
|
|
2026
2051
|
magnitudeDownsample: number,
|
|
2052
|
+
maxPendingFrames: number,
|
|
2053
|
+
maxProgressionEntries: number,
|
|
2027
2054
|
keyUpdateIntervalSec: number,
|
|
2028
2055
|
bpmUpdateIntervalSec: number,
|
|
2029
2056
|
window: number,
|
|
@@ -2234,6 +2261,7 @@ export interface WasmMixer {
|
|
|
2234
2261
|
vcaGroupCount: () => number;
|
|
2235
2262
|
toSceneJson: () => string;
|
|
2236
2263
|
tailSamples: () => number;
|
|
2264
|
+
latencySamples: () => number;
|
|
2237
2265
|
drainTailStereo: (numSamples: number) => {
|
|
2238
2266
|
left: Float32Array;
|
|
2239
2267
|
right: Float32Array;
|
|
@@ -2297,6 +2325,10 @@ export interface WasmAnalyzerStats {
|
|
|
2297
2325
|
totalFrames: number;
|
|
2298
2326
|
totalSamples: number;
|
|
2299
2327
|
durationSeconds: number;
|
|
2328
|
+
pendingFrames: number;
|
|
2329
|
+
droppedOutputFrames: number;
|
|
2330
|
+
droppedChordProgressionEntries: number;
|
|
2331
|
+
droppedBarProgressionEntries: number;
|
|
2300
2332
|
estimate: WasmProgressiveEstimate;
|
|
2301
2333
|
}
|
|
2302
2334
|
|
package/src/stream_analyzer.ts
CHANGED
|
@@ -71,6 +71,8 @@ export class StreamAnalyzer {
|
|
|
71
71
|
config.computeSpectral ?? defaults.computeSpectral,
|
|
72
72
|
config.emitEveryNFrames ?? defaults.emitEveryNFrames,
|
|
73
73
|
config.magnitudeDownsample ?? defaults.magnitudeDownsample,
|
|
74
|
+
config.maxPendingFrames ?? defaults.maxPendingFrames,
|
|
75
|
+
config.maxProgressionEntries ?? defaults.maxProgressionEntries,
|
|
74
76
|
config.keyUpdateIntervalSec ?? defaults.keyUpdateIntervalSec,
|
|
75
77
|
config.bpmUpdateIntervalSec ?? defaults.bpmUpdateIntervalSec,
|
|
76
78
|
config.window ?? defaults.window,
|
|
@@ -88,7 +90,8 @@ export class StreamAnalyzer {
|
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
/**
|
|
91
|
-
* Process audio samples with explicit sample offset.
|
|
93
|
+
* Process audio samples with a contiguous explicit sample offset. A gap,
|
|
94
|
+
* seek, or switch from `process()` requires `reset()` first.
|
|
92
95
|
*
|
|
93
96
|
* @param samples - Audio samples (mono, float32)
|
|
94
97
|
* @param sampleOffset - Cumulative sample count at start of this chunk
|
|
@@ -163,6 +166,10 @@ export class StreamAnalyzer {
|
|
|
163
166
|
totalFrames: s.totalFrames,
|
|
164
167
|
totalSamples: s.totalSamples,
|
|
165
168
|
durationSeconds: s.durationSeconds,
|
|
169
|
+
pendingFrames: s.pendingFrames,
|
|
170
|
+
droppedOutputFrames: s.droppedOutputFrames,
|
|
171
|
+
droppedChordProgressionEntries: s.droppedChordProgressionEntries,
|
|
172
|
+
droppedBarProgressionEntries: s.droppedBarProgressionEntries,
|
|
166
173
|
estimate: {
|
|
167
174
|
bpm: s.estimate.bpm,
|
|
168
175
|
bpmConfidence: s.estimate.bpmConfidence,
|
package/src/stream_types.ts
CHANGED
|
@@ -64,6 +64,10 @@ export interface AnalyzerStats {
|
|
|
64
64
|
totalFrames: number;
|
|
65
65
|
totalSamples: number;
|
|
66
66
|
durationSeconds: number;
|
|
67
|
+
pendingFrames: number;
|
|
68
|
+
droppedOutputFrames: number;
|
|
69
|
+
droppedChordProgressionEntries: number;
|
|
70
|
+
droppedBarProgressionEntries: number;
|
|
67
71
|
estimate: ProgressiveEstimate;
|
|
68
72
|
}
|
|
69
73
|
|
|
@@ -159,6 +163,10 @@ export interface StreamConfig {
|
|
|
159
163
|
computeSpectral?: boolean;
|
|
160
164
|
emitEveryNFrames?: number;
|
|
161
165
|
magnitudeDownsample?: number;
|
|
166
|
+
/** Maximum unread frames; overflow drops the oldest frame. */
|
|
167
|
+
maxPendingFrames?: number;
|
|
168
|
+
/** Maximum retained chord and bar progression entries; overflow drops oldest. */
|
|
169
|
+
maxProgressionEntries?: number;
|
|
162
170
|
keyUpdateIntervalSec?: number;
|
|
163
171
|
bpmUpdateIntervalSec?: number;
|
|
164
172
|
window?: number;
|