@aelionsdk/audio 1.1.0-rc.1 → 1.2.0-rc.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 +3 -1
- package/dist/analysis.d.ts +75 -0
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +111 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/processing.d.ts +1 -0
- package/dist/processing.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Audio scheduling and deterministic PCM processing primitives for AelionSDK.
|
|
|
8
8
|
npm install @aelionsdk/audio@next
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
`next` currently resolves to `1.
|
|
11
|
+
`next` currently resolves to `1.2.0-rc.2`. Product applications should prefer
|
|
12
12
|
`@aelionsdk/sdk`; use this package directly when building a custom audio host,
|
|
13
13
|
analysis pipeline or renderer integration.
|
|
14
14
|
|
|
@@ -18,6 +18,8 @@ analysis pipeline or renderer integration.
|
|
|
18
18
|
- streaming resampling and pitch-preserving time stretch;
|
|
19
19
|
- SharedArrayBuffer and transferable PCM queues;
|
|
20
20
|
- AudioWorklet clocks, device state and video scheduling.
|
|
21
|
+
- bounded beat and audio-energy change analysis. Audio analysis does not claim
|
|
22
|
+
pixel-based video scene detection.
|
|
21
23
|
|
|
22
24
|
Queue and clock instances own browser and buffer resources. Stop producers,
|
|
23
25
|
cancel pending work and dispose the owning session or primitive when playback
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** A bounded PCM source for offline analysis, mirroring the waveform readFrames contract. */
|
|
2
|
+
export interface AnalysisSource {
|
|
3
|
+
readonly sampleRate: number;
|
|
4
|
+
readonly channelCount: number;
|
|
5
|
+
readonly totalFrames: number;
|
|
6
|
+
readonly readFrames: (startFrame: number, frameCount: number, signal?: AbortSignal) => Promise<Float32Array>;
|
|
7
|
+
readonly signal?: AbortSignal;
|
|
8
|
+
readonly onProgress?: (progress: number) => void;
|
|
9
|
+
}
|
|
10
|
+
/** A single detected beat. */
|
|
11
|
+
export interface BeatMarker {
|
|
12
|
+
/** Beat start frame. */
|
|
13
|
+
readonly frame: number;
|
|
14
|
+
/** Frame-based duration (estimated from the analysis window). */
|
|
15
|
+
readonly frameCount: number;
|
|
16
|
+
/** Normalized beat strength, 0..1. */
|
|
17
|
+
readonly strength: number;
|
|
18
|
+
}
|
|
19
|
+
/** Result of beat detection over a PCM source. */
|
|
20
|
+
export interface BeatDetectionResult {
|
|
21
|
+
readonly sampleRate: number;
|
|
22
|
+
readonly totalFrames: number;
|
|
23
|
+
readonly beats: readonly BeatMarker[];
|
|
24
|
+
}
|
|
25
|
+
/** A candidate boundary inferred from a discontinuity in audio energy. */
|
|
26
|
+
export interface AudioEnergyBoundary {
|
|
27
|
+
/** Audio frame where the energy change is detected. */
|
|
28
|
+
readonly frame: number;
|
|
29
|
+
/** Normalized change magnitude, 0..1. */
|
|
30
|
+
readonly magnitude: number;
|
|
31
|
+
}
|
|
32
|
+
/** Result of audio-energy change detection over a PCM source. */
|
|
33
|
+
export interface AudioEnergyChangeDetectionResult {
|
|
34
|
+
readonly sampleRate: number;
|
|
35
|
+
readonly totalFrames: number;
|
|
36
|
+
readonly changes: readonly AudioEnergyBoundary[];
|
|
37
|
+
}
|
|
38
|
+
/** @deprecated Use AudioEnergyBoundary; audio alone cannot detect video scenes. */
|
|
39
|
+
export type SceneBoundary = AudioEnergyBoundary;
|
|
40
|
+
/** @deprecated Use AudioEnergyChangeDetectionResult. */
|
|
41
|
+
export interface SceneDetectionResult {
|
|
42
|
+
readonly sampleRate: number;
|
|
43
|
+
readonly totalFrames: number;
|
|
44
|
+
readonly scenes: readonly AudioEnergyBoundary[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Detect beats from an interleaved PCM source using a bounded energy-envelope
|
|
48
|
+
* onset detector. The signal is processed in fixed windows, computing a local
|
|
49
|
+
* RMS envelope; an onset is flagged where the envelope rises above the local
|
|
50
|
+
* noise floor by `minimumOnsetDb`. Bounded memory: only the current window and
|
|
51
|
+
* a rolling floor are retained.
|
|
52
|
+
*/
|
|
53
|
+
export declare function detectBeats(options: AnalysisSource & {
|
|
54
|
+
readonly minimumOnsetDb?: number;
|
|
55
|
+
}): Promise<BeatDetectionResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Detect audio-energy discontinuities as editing candidates. This function
|
|
58
|
+
* does not inspect video pixels and therefore deliberately makes no claim to
|
|
59
|
+
* detect scene boundaries.
|
|
60
|
+
*/
|
|
61
|
+
export declare function detectAudioEnergyChanges(options: AnalysisSource & {
|
|
62
|
+
readonly minimumJumpDb?: number;
|
|
63
|
+
}): Promise<AudioEnergyChangeDetectionResult>;
|
|
64
|
+
/**
|
|
65
|
+
* @deprecated Audio-only input cannot detect video scenes. Use
|
|
66
|
+
* `detectAudioEnergyChanges` and treat the result as editing candidates.
|
|
67
|
+
*/
|
|
68
|
+
export declare function detectScenes(options: AnalysisSource & {
|
|
69
|
+
readonly minimumJumpDb?: number;
|
|
70
|
+
}): Promise<{
|
|
71
|
+
sampleRate: number;
|
|
72
|
+
totalFrames: number;
|
|
73
|
+
scenes: readonly AudioEnergyBoundary[];
|
|
74
|
+
}>;
|
|
75
|
+
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"AAEA,6FAA6F;AAC7F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,CACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,8BAA8B;AAC9B,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;CACvC;AAED,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,iEAAiE;AACjE,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAClD;AAED,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAEhD,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD;AAmBD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,GAAG;IAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAAC,mBAAmB,CAAC,CAkC9B;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,cAAc,GAAG;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,OAAO,CAAC,gCAAgC,CAAC,CA+B3C;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE;;;;GAO/F"}
|
package/dist/analysis.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { throwIfAborted } from '@aelionsdk/core';
|
|
2
|
+
const MIN_CHANGE_DB = 6;
|
|
3
|
+
function validateSource(options, threshold, label) {
|
|
4
|
+
if (!Number.isSafeInteger(options.sampleRate) || options.sampleRate <= 0) {
|
|
5
|
+
throw new RangeError(`${label} sampleRate must be a positive safe integer`);
|
|
6
|
+
}
|
|
7
|
+
if (!Number.isSafeInteger(options.channelCount) || options.channelCount <= 0) {
|
|
8
|
+
throw new RangeError(`${label} channelCount must be a positive safe integer`);
|
|
9
|
+
}
|
|
10
|
+
if (!Number.isSafeInteger(options.totalFrames) || options.totalFrames < 0) {
|
|
11
|
+
throw new RangeError(`${label} totalFrames must be a non-negative safe integer`);
|
|
12
|
+
}
|
|
13
|
+
if (!Number.isFinite(threshold) || threshold < 0) {
|
|
14
|
+
throw new RangeError(`${label} threshold must be a non-negative finite number`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Detect beats from an interleaved PCM source using a bounded energy-envelope
|
|
19
|
+
* onset detector. The signal is processed in fixed windows, computing a local
|
|
20
|
+
* RMS envelope; an onset is flagged where the envelope rises above the local
|
|
21
|
+
* noise floor by `minimumOnsetDb`. Bounded memory: only the current window and
|
|
22
|
+
* a rolling floor are retained.
|
|
23
|
+
*/
|
|
24
|
+
export async function detectBeats(options) {
|
|
25
|
+
const sampleRate = options.sampleRate;
|
|
26
|
+
const channelCount = options.channelCount;
|
|
27
|
+
const totalFrames = options.totalFrames;
|
|
28
|
+
const minimumOnsetDb = options.minimumOnsetDb ?? MIN_CHANGE_DB;
|
|
29
|
+
validateSource(options, minimumOnsetDb, 'Beat detection');
|
|
30
|
+
const windowFrames = Math.max(1, Math.round(sampleRate / 20));
|
|
31
|
+
const beats = [];
|
|
32
|
+
let previousDb = 0;
|
|
33
|
+
let floor = 0;
|
|
34
|
+
let lastBeatFrame = -windowFrames;
|
|
35
|
+
for (let startFrame = 0; startFrame < totalFrames; startFrame += windowFrames) {
|
|
36
|
+
throwIfAborted(options.signal, 'Beat detection');
|
|
37
|
+
const frameCount = Math.min(windowFrames, totalFrames - startFrame);
|
|
38
|
+
const pcm = await options.readFrames(startFrame, frameCount, options.signal);
|
|
39
|
+
if (pcm.length !== frameCount * channelCount) {
|
|
40
|
+
throw new RangeError('Beat source returned an unexpected PCM length');
|
|
41
|
+
}
|
|
42
|
+
let squares = 0;
|
|
43
|
+
for (const sample of pcm)
|
|
44
|
+
squares += sample * sample;
|
|
45
|
+
const envelope = Math.sqrt(squares / Math.max(1, frameCount * channelCount));
|
|
46
|
+
const db = 20 * Math.log10(Math.max(1e-9, envelope));
|
|
47
|
+
floor = floor === 0 ? db : Math.max(-120, floor * 0.95 + db * 0.05);
|
|
48
|
+
const onset = db - floor > minimumOnsetDb && db > previousDb;
|
|
49
|
+
if (onset && startFrame - lastBeatFrame >= windowFrames) {
|
|
50
|
+
const strength = Math.min(1, Math.max(0, (db - floor) / 24));
|
|
51
|
+
beats.push({ frame: startFrame, frameCount, strength });
|
|
52
|
+
lastBeatFrame = startFrame;
|
|
53
|
+
}
|
|
54
|
+
previousDb = db;
|
|
55
|
+
options.onProgress?.((startFrame + frameCount) / totalFrames);
|
|
56
|
+
}
|
|
57
|
+
if (totalFrames === 0)
|
|
58
|
+
options.onProgress?.(1);
|
|
59
|
+
return { sampleRate, totalFrames, beats };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Detect audio-energy discontinuities as editing candidates. This function
|
|
63
|
+
* does not inspect video pixels and therefore deliberately makes no claim to
|
|
64
|
+
* detect scene boundaries.
|
|
65
|
+
*/
|
|
66
|
+
export async function detectAudioEnergyChanges(options) {
|
|
67
|
+
const sampleRate = options.sampleRate;
|
|
68
|
+
const channelCount = options.channelCount;
|
|
69
|
+
const totalFrames = options.totalFrames;
|
|
70
|
+
const minimumJumpDb = options.minimumJumpDb ?? MIN_CHANGE_DB;
|
|
71
|
+
validateSource(options, minimumJumpDb, 'Audio energy analysis');
|
|
72
|
+
const windowFrames = Math.max(1, Math.round(sampleRate / 10));
|
|
73
|
+
const changes = [];
|
|
74
|
+
let previousDb = 0;
|
|
75
|
+
for (let startFrame = 0; startFrame < totalFrames; startFrame += windowFrames) {
|
|
76
|
+
throwIfAborted(options.signal, 'Scene detection');
|
|
77
|
+
const frameCount = Math.min(windowFrames, totalFrames - startFrame);
|
|
78
|
+
const pcm = await options.readFrames(startFrame, frameCount, options.signal);
|
|
79
|
+
if (pcm.length !== frameCount * channelCount) {
|
|
80
|
+
throw new RangeError('Scene source returned an unexpected PCM length');
|
|
81
|
+
}
|
|
82
|
+
let squares = 0;
|
|
83
|
+
for (const sample of pcm)
|
|
84
|
+
squares += sample * sample;
|
|
85
|
+
const envelope = Math.sqrt(squares / Math.max(1, frameCount * channelCount));
|
|
86
|
+
const db = 20 * Math.log10(Math.max(1e-9, envelope));
|
|
87
|
+
if (startFrame > 0) {
|
|
88
|
+
const jump = Math.abs(db - previousDb);
|
|
89
|
+
if (jump >= minimumJumpDb) {
|
|
90
|
+
changes.push({ frame: startFrame, magnitude: Math.min(1, jump / 24) });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
previousDb = db;
|
|
94
|
+
options.onProgress?.((startFrame + frameCount) / totalFrames);
|
|
95
|
+
}
|
|
96
|
+
if (totalFrames === 0)
|
|
97
|
+
options.onProgress?.(1);
|
|
98
|
+
return { sampleRate, totalFrames, changes };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated Audio-only input cannot detect video scenes. Use
|
|
102
|
+
* `detectAudioEnergyChanges` and treat the result as editing candidates.
|
|
103
|
+
*/
|
|
104
|
+
export async function detectScenes(options) {
|
|
105
|
+
const result = await detectAudioEnergyChanges(options);
|
|
106
|
+
return {
|
|
107
|
+
sampleRate: result.sampleRate,
|
|
108
|
+
totalFrames: result.totalFrames,
|
|
109
|
+
scenes: result.changes,
|
|
110
|
+
};
|
|
111
|
+
}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/processing.d.ts
CHANGED
|
@@ -76,6 +76,7 @@ export interface BuildWaveformPeaksOptions {
|
|
|
76
76
|
readonly onProgress?: (progress: number) => void;
|
|
77
77
|
}
|
|
78
78
|
export declare function buildWaveformPeaks(options: BuildWaveformPeaksOptions): Promise<WaveformPeakResult>;
|
|
79
|
+
/** A contiguous range of audio frames. */
|
|
79
80
|
export interface AudioFrameRange {
|
|
80
81
|
readonly startFrame: number;
|
|
81
82
|
readonly frameCount: number;
|
package/dist/processing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processing.d.ts","sourceRoot":"","sources":["../src/processing.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAyBhG;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAMD,qBAAa,eAAe;;gBAQP,OAAO,EAAE,sBAAsB;IAoBlD,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEM,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,GAAG,YAAY;CA8B7E;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAMD,gFAAgF;AAChF,wBAAgB,eAAe,CAC7B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,cAAc,CAiDhB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,eAAe;;gBAQP,OAAO,EAAE,sBAAsB;IAclD,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEM,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY;CAwBlD;AAED,kFAAkF;AAClF,qBAAa,yBAAyB;;gBASjB,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAcpD,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAuBhC,MAAM,IAAI,cAAc;CA2BhC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,CACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAqD7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,CACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAkBD,iFAAiF;AACjF,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAoEjC"}
|
|
1
|
+
{"version":3,"file":"processing.d.ts","sourceRoot":"","sources":["../src/processing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aelionsdk/audio",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-rc.2",
|
|
4
4
|
"description": "AudioWorklet clock, PCM buffering and audio mixing for AelionSDK",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"provenance": true
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@aelionsdk/core": "1.
|
|
38
|
-
"@aelionsdk/render-ir": "1.
|
|
37
|
+
"@aelionsdk/core": "1.2.0-rc.2",
|
|
38
|
+
"@aelionsdk/render-ir": "1.2.0-rc.2"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc -b",
|