@aura3d/audio 1.0.6 → 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/dist/AudioBus.d.ts +2 -0
- package/dist/AudioBus.d.ts.map +1 -1
- package/dist/AudioBus.js +6 -0
- package/dist/AudioBus.js.map +1 -1
- package/dist/AudioFileManager.d.ts +77 -0
- package/dist/AudioFileManager.d.ts.map +1 -0
- package/dist/AudioFileManager.js +168 -0
- package/dist/AudioFileManager.js.map +1 -0
- package/dist/AudioMixer.d.ts +43 -0
- package/dist/AudioMixer.d.ts.map +1 -1
- package/dist/AudioMixer.js +43 -0
- package/dist/AudioMixer.js.map +1 -1
- package/dist/AudioTimelineTrack.d.ts +135 -0
- package/dist/AudioTimelineTrack.d.ts.map +1 -0
- package/dist/AudioTimelineTrack.js +356 -0
- package/dist/AudioTimelineTrack.js.map +1 -0
- package/dist/AudioWaveform.d.ts +64 -0
- package/dist/AudioWaveform.d.ts.map +1 -0
- package/dist/AudioWaveform.js +146 -0
- package/dist/AudioWaveform.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/AudioBus.ts +8 -0
- package/src/AudioFileManager.ts +252 -0
- package/src/AudioMixer.ts +87 -0
- package/src/AudioTimelineTrack.ts +516 -0
- package/src/AudioWaveform.ts +226 -0
- package/src/index.ts +42 -1
- package/tests/audio.test.ts +233 -1
package/dist/AudioBus.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export declare class AudioBus {
|
|
|
6
6
|
private muted;
|
|
7
7
|
private storedVolume;
|
|
8
8
|
constructor(name: string, context: AudioContextLike, destination?: AudioNode);
|
|
9
|
+
get volume(): number;
|
|
10
|
+
get isMuted(): boolean;
|
|
9
11
|
setVolume(value: number): void;
|
|
10
12
|
mute(value?: boolean): void;
|
|
11
13
|
dispose(): void;
|
package/dist/AudioBus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioBus.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioBus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,QAAQ;IAOjB,QAAQ,CAAC,IAAI,EAAE,MAAM;IANvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAK;gBAGd,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,SAAS;IAQzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU9B,IAAI,CAAC,KAAK,UAAO,GAAG,IAAI;IAKxB,OAAO,IAAI,IAAI;CAIhB"}
|
|
1
|
+
{"version":3,"file":"AudioBus.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioBus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,QAAQ;IAOjB,QAAQ,CAAC,IAAI,EAAE,MAAM;IANvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAK;gBAGd,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,SAAS;IAQzB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU9B,IAAI,CAAC,KAAK,UAAO,GAAG,IAAI;IAKxB,OAAO,IAAI,IAAI;CAIhB"}
|
package/dist/AudioBus.js
CHANGED
|
@@ -11,6 +11,12 @@ export class AudioBus {
|
|
|
11
11
|
this.input.connect(this.output);
|
|
12
12
|
this.output.connect(destination ?? context.destination);
|
|
13
13
|
}
|
|
14
|
+
get volume() {
|
|
15
|
+
return this.storedVolume;
|
|
16
|
+
}
|
|
17
|
+
get isMuted() {
|
|
18
|
+
return this.muted;
|
|
19
|
+
}
|
|
14
20
|
setVolume(value) {
|
|
15
21
|
if (!Number.isFinite(value) || value < 0) {
|
|
16
22
|
throw new Error("Audio bus volume must be a non-negative finite number");
|
package/dist/AudioBus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioBus.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioBus.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,QAAQ;IAOR;IANF,KAAK,CAAW;IAChB,MAAM,CAAW;IAClB,KAAK,GAAG,KAAK,CAAC;IACd,YAAY,GAAG,CAAC,CAAC;IAEzB,YACW,IAAY,EACrB,OAAyB,EACzB,WAAuB;QAFd,SAAI,GAAJ,IAAI,CAAQ;QAIrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,GAAG,IAAI;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IACzD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"AudioBus.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioBus.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,QAAQ;IAOR;IANF,KAAK,CAAW;IAChB,MAAM,CAAW;IAClB,KAAK,GAAG,KAAK,CAAC;IACd,YAAY,GAAG,CAAC,CAAC;IAEzB,YACW,IAAY,EACrB,OAAyB,EACzB,WAAuB;QAFd,SAAI,GAAJ,IAAI,CAAQ;QAIrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,GAAG,IAAI;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IACzD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { AudioClip } from "./AudioClip";
|
|
2
|
+
import type { AudioContextLike } from "./AudioContextManager";
|
|
3
|
+
export interface AudioDecodeContextLike extends AudioContextLike {
|
|
4
|
+
decodeAudioData(data: ArrayBuffer): Promise<AudioBuffer> | AudioBuffer;
|
|
5
|
+
}
|
|
6
|
+
export interface AudioFileAssetLike {
|
|
7
|
+
readonly kind?: string;
|
|
8
|
+
readonly id?: string;
|
|
9
|
+
readonly type?: string;
|
|
10
|
+
readonly format?: string;
|
|
11
|
+
readonly url: string;
|
|
12
|
+
readonly hash?: string;
|
|
13
|
+
readonly sizeBytes?: number;
|
|
14
|
+
readonly license?: string;
|
|
15
|
+
}
|
|
16
|
+
export type AudioFileInput = string | URL | AudioFileAssetLike | AudioClip;
|
|
17
|
+
export interface AudioFileRequest {
|
|
18
|
+
readonly input: AudioFileInput;
|
|
19
|
+
readonly signal?: AbortSignal;
|
|
20
|
+
readonly cacheKey?: string;
|
|
21
|
+
readonly name?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface AudioFileManagerOptions {
|
|
24
|
+
readonly context: AudioDecodeContextLike;
|
|
25
|
+
readonly fetch?: (url: string, init?: {
|
|
26
|
+
readonly signal?: AbortSignal;
|
|
27
|
+
}) => Promise<AudioFileFetchResponseLike>;
|
|
28
|
+
readonly cache?: Map<string, AudioClip>;
|
|
29
|
+
readonly validateTypedAudioAssets?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface AudioFileFetchResponseLike {
|
|
32
|
+
readonly ok: boolean;
|
|
33
|
+
readonly status: number;
|
|
34
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
35
|
+
}
|
|
36
|
+
export interface ResolvedAudioFileRequest {
|
|
37
|
+
readonly url: string;
|
|
38
|
+
readonly cacheKey: string;
|
|
39
|
+
readonly name?: string;
|
|
40
|
+
readonly asset?: AudioFileAssetLike;
|
|
41
|
+
}
|
|
42
|
+
export interface EpisodeAudioAssetRequirement {
|
|
43
|
+
readonly id: string;
|
|
44
|
+
readonly role?: "dialogue" | "music" | "sfx" | "ambient";
|
|
45
|
+
readonly required?: boolean;
|
|
46
|
+
readonly requireLicense?: boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface EpisodeAudioAssetDiagnostic {
|
|
49
|
+
readonly severity: "error" | "warning";
|
|
50
|
+
readonly code: string;
|
|
51
|
+
readonly message: string;
|
|
52
|
+
readonly assetId: string;
|
|
53
|
+
}
|
|
54
|
+
export interface EpisodeAudioAssetReadiness {
|
|
55
|
+
readonly ok: boolean;
|
|
56
|
+
readonly requiredCount: number;
|
|
57
|
+
readonly readyCount: number;
|
|
58
|
+
readonly missingAssetIds: readonly string[];
|
|
59
|
+
readonly diagnostics: readonly EpisodeAudioAssetDiagnostic[];
|
|
60
|
+
}
|
|
61
|
+
export declare class AudioFileManager {
|
|
62
|
+
private readonly options;
|
|
63
|
+
private readonly cache;
|
|
64
|
+
private readonly inflight;
|
|
65
|
+
constructor(options: AudioFileManagerOptions);
|
|
66
|
+
resolve(input: AudioFileInput, request?: Omit<AudioFileRequest, "input">): ResolvedAudioFileRequest;
|
|
67
|
+
has(input: AudioFileInput, request?: Omit<AudioFileRequest, "input">): boolean;
|
|
68
|
+
getCached(input: AudioFileInput, request?: Omit<AudioFileRequest, "input">): AudioClip | undefined;
|
|
69
|
+
load(input: AudioFileInput, request?: Omit<AudioFileRequest, "input">): Promise<AudioClip>;
|
|
70
|
+
loadMany(inputs: readonly AudioFileInput[], request?: Omit<AudioFileRequest, "input">): Promise<readonly AudioClip[]>;
|
|
71
|
+
clear(input?: AudioFileInput): void;
|
|
72
|
+
private loadResolved;
|
|
73
|
+
}
|
|
74
|
+
export declare function validateEpisodeAudioAssets(assets: readonly AudioFileAssetLike[], requirements: readonly EpisodeAudioAssetRequirement[], options?: {
|
|
75
|
+
readonly requireLicense?: boolean;
|
|
76
|
+
}): EpisodeAudioAssetReadiness;
|
|
77
|
+
//# sourceMappingURL=AudioFileManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioFileManager.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioFileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { AudioClip } from "./AudioClip.js";
|
|
2
|
+
export class AudioFileManager {
|
|
3
|
+
options;
|
|
4
|
+
cache;
|
|
5
|
+
inflight = new Map();
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.options = options;
|
|
8
|
+
this.cache = options.cache ?? new Map();
|
|
9
|
+
}
|
|
10
|
+
resolve(input, request = {}) {
|
|
11
|
+
if (input instanceof AudioClip) {
|
|
12
|
+
const name = request.name ?? input.name;
|
|
13
|
+
return {
|
|
14
|
+
url: name ? `clip:${name}` : "clip:anonymous",
|
|
15
|
+
cacheKey: request.cacheKey ?? (name ? `clip:${name}` : "clip:anonymous"),
|
|
16
|
+
...(name ? { name } : {})
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (input instanceof URL) {
|
|
20
|
+
const url = input.toString();
|
|
21
|
+
return { url, cacheKey: request.cacheKey ?? url, ...(request.name ? { name: request.name } : {}) };
|
|
22
|
+
}
|
|
23
|
+
if (typeof input === "string") {
|
|
24
|
+
const url = input.trim();
|
|
25
|
+
if (!url) {
|
|
26
|
+
throw new Error("Audio file URL must be a non-empty string");
|
|
27
|
+
}
|
|
28
|
+
return { url, cacheKey: request.cacheKey ?? url, ...(request.name ? { name: request.name } : {}) };
|
|
29
|
+
}
|
|
30
|
+
if (this.options.validateTypedAudioAssets !== false && input.kind === "aura-asset-ref" && input.type !== "audio") {
|
|
31
|
+
throw new Error(`Typed asset "${input.id ?? input.url}" is not an audio asset`);
|
|
32
|
+
}
|
|
33
|
+
const url = input.url.trim();
|
|
34
|
+
if (!url) {
|
|
35
|
+
throw new Error(`Audio asset "${input.id ?? "unknown"}" is missing a URL`);
|
|
36
|
+
}
|
|
37
|
+
const cacheKey = request.cacheKey ?? input.id ?? url;
|
|
38
|
+
return {
|
|
39
|
+
url,
|
|
40
|
+
cacheKey,
|
|
41
|
+
name: request.name ?? input.id,
|
|
42
|
+
asset: input
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
has(input, request = {}) {
|
|
46
|
+
return this.cache.has(this.resolve(input, request).cacheKey);
|
|
47
|
+
}
|
|
48
|
+
getCached(input, request = {}) {
|
|
49
|
+
return this.cache.get(this.resolve(input, request).cacheKey);
|
|
50
|
+
}
|
|
51
|
+
async load(input, request = {}) {
|
|
52
|
+
if (input instanceof AudioClip) {
|
|
53
|
+
const resolved = this.resolve(input, request);
|
|
54
|
+
this.cache.set(resolved.cacheKey, input);
|
|
55
|
+
return input;
|
|
56
|
+
}
|
|
57
|
+
const resolved = this.resolve(input, request);
|
|
58
|
+
const cached = this.cache.get(resolved.cacheKey);
|
|
59
|
+
if (cached)
|
|
60
|
+
return cached;
|
|
61
|
+
const pending = this.inflight.get(resolved.cacheKey);
|
|
62
|
+
if (pending)
|
|
63
|
+
return pending;
|
|
64
|
+
const promise = this.loadResolved(resolved, request.signal);
|
|
65
|
+
this.inflight.set(resolved.cacheKey, promise);
|
|
66
|
+
try {
|
|
67
|
+
const clip = await promise;
|
|
68
|
+
this.cache.set(resolved.cacheKey, clip);
|
|
69
|
+
return clip;
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
this.inflight.delete(resolved.cacheKey);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async loadMany(inputs, request = {}) {
|
|
76
|
+
return Promise.all(inputs.map((input) => this.load(input, request)));
|
|
77
|
+
}
|
|
78
|
+
clear(input) {
|
|
79
|
+
if (input === undefined) {
|
|
80
|
+
this.cache.clear();
|
|
81
|
+
this.inflight.clear();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const { cacheKey } = this.resolve(input);
|
|
85
|
+
this.cache.delete(cacheKey);
|
|
86
|
+
this.inflight.delete(cacheKey);
|
|
87
|
+
}
|
|
88
|
+
async loadResolved(resolved, signal) {
|
|
89
|
+
const fetchAudio = this.options.fetch ?? defaultFetchAudio;
|
|
90
|
+
const response = await fetchAudio(resolved.url, { signal });
|
|
91
|
+
if (!response.ok) {
|
|
92
|
+
throw new Error(`Audio request failed with ${response.status}: ${resolved.url}`);
|
|
93
|
+
}
|
|
94
|
+
const encoded = await response.arrayBuffer();
|
|
95
|
+
const decoded = await this.options.context.decodeAudioData(encoded.slice(0));
|
|
96
|
+
return new AudioClip({
|
|
97
|
+
name: resolved.name ?? resolved.cacheKey,
|
|
98
|
+
buffer: decoded
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export function validateEpisodeAudioAssets(assets, requirements, options = {}) {
|
|
103
|
+
const byId = new Map(assets.filter((asset) => asset.id).map((asset) => [asset.id, asset]));
|
|
104
|
+
const diagnostics = [];
|
|
105
|
+
const missingAssetIds = [];
|
|
106
|
+
let requiredCount = 0;
|
|
107
|
+
let readyCount = 0;
|
|
108
|
+
for (const requirement of requirements) {
|
|
109
|
+
const required = requirement.required ?? true;
|
|
110
|
+
if (required)
|
|
111
|
+
requiredCount++;
|
|
112
|
+
const asset = byId.get(requirement.id);
|
|
113
|
+
if (!asset) {
|
|
114
|
+
if (required) {
|
|
115
|
+
missingAssetIds.push(requirement.id);
|
|
116
|
+
diagnostics.push({
|
|
117
|
+
severity: "error",
|
|
118
|
+
code: "audio-asset-missing",
|
|
119
|
+
assetId: requirement.id,
|
|
120
|
+
message: `Required ${requirement.role ?? "audio"} asset "${requirement.id}" is missing.`
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (asset.kind === "aura-asset-ref" && asset.type !== "audio") {
|
|
126
|
+
diagnostics.push({
|
|
127
|
+
severity: "error",
|
|
128
|
+
code: "audio-asset-wrong-type",
|
|
129
|
+
assetId: requirement.id,
|
|
130
|
+
message: `Typed asset "${requirement.id}" is "${asset.type ?? "unknown"}", not audio.`
|
|
131
|
+
});
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
if (!asset.url.trim()) {
|
|
135
|
+
diagnostics.push({
|
|
136
|
+
severity: "error",
|
|
137
|
+
code: "audio-asset-missing-url",
|
|
138
|
+
assetId: requirement.id,
|
|
139
|
+
message: `Audio asset "${requirement.id}" is missing a URL.`
|
|
140
|
+
});
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if ((options.requireLicense || requirement.requireLicense) && !asset.license) {
|
|
144
|
+
diagnostics.push({
|
|
145
|
+
severity: "error",
|
|
146
|
+
code: "audio-asset-missing-license",
|
|
147
|
+
assetId: requirement.id,
|
|
148
|
+
message: `Audio asset "${requirement.id}" is missing license metadata.`
|
|
149
|
+
});
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
readyCount++;
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
ok: diagnostics.every((diagnostic) => diagnostic.severity !== "error"),
|
|
156
|
+
requiredCount,
|
|
157
|
+
readyCount,
|
|
158
|
+
missingAssetIds,
|
|
159
|
+
diagnostics
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
async function defaultFetchAudio(url, init) {
|
|
163
|
+
if (typeof fetch !== "function") {
|
|
164
|
+
throw new Error("AudioFileManager requires fetch or a custom fetch implementation");
|
|
165
|
+
}
|
|
166
|
+
return fetch(url, init);
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=AudioFileManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioFileManager.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioFileManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAqExC,MAAM,OAAO,gBAAgB;IAIE;IAHZ,KAAK,CAAyB;IAC9B,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAElE,YAA6B,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;QAC3D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,KAAqB,EAAE,UAA2C,EAAE;QAC1E,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;YACxC,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB;gBAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACxE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1B,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrG,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrG,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjH,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,yBAAyB,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,EAAE,IAAI,SAAS,oBAAoB,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,IAAI,GAAG,CAAC;QACrD,OAAO;YACL,GAAG;YACH,QAAQ;YACR,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;YAC9B,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,KAAqB,EAAE,UAA2C,EAAE;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,CAAC,KAAqB,EAAE,UAA2C,EAAE;QAC5E,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAqB,EAAE,UAA2C,EAAE;QAC7E,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAiC,EAAE,UAA2C,EAAE;QAC7F,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,KAAsB;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAAkC,EAAE,MAAoB;QACjF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,OAAO,IAAI,SAAS,CAAC;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ;YACxC,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAqC,EACrC,YAAqD,EACrD,UAAiD,EAAE;IAEnD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,WAAW,GAAkC,EAAE,CAAC;IACtD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC9C,IAAI,QAAQ;YAAE,aAAa,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACrC,WAAW,CAAC,IAAI,CAAC;oBACf,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,WAAW,CAAC,EAAE;oBACvB,OAAO,EAAE,YAAY,WAAW,CAAC,IAAI,IAAI,OAAO,WAAW,WAAW,CAAC,EAAE,eAAe;iBACzF,CAAC,CAAC;YACL,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9D,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,WAAW,CAAC,EAAE;gBACvB,OAAO,EAAE,gBAAgB,WAAW,CAAC,EAAE,SAAS,KAAK,CAAC,IAAI,IAAI,SAAS,eAAe;aACvF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,WAAW,CAAC,EAAE;gBACvB,OAAO,EAAE,gBAAgB,WAAW,CAAC,EAAE,qBAAqB;aAC7D,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7E,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,WAAW,CAAC,EAAE;gBACvB,OAAO,EAAE,gBAAgB,WAAW,CAAC,EAAE,gCAAgC;aACxE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,UAAU,EAAE,CAAC;IACf,CAAC;IAED,OAAO;QACL,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC;QACtE,aAAa;QACb,UAAU;QACV,eAAe;QACf,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAwC;IACpF,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/AudioMixer.d.ts
CHANGED
|
@@ -7,6 +7,49 @@ export declare class AudioMixer {
|
|
|
7
7
|
constructor(context: AudioContextLike);
|
|
8
8
|
createBus(name: string, destination?: AudioNode): AudioBus;
|
|
9
9
|
getBus(name: string): AudioBus;
|
|
10
|
+
hasBus(name: string): boolean;
|
|
11
|
+
listBuses(): readonly AudioBus[];
|
|
12
|
+
evidence(options?: {
|
|
13
|
+
readonly unlocked?: boolean;
|
|
14
|
+
readonly errors?: readonly string[];
|
|
15
|
+
}): AudioMixerEvidence;
|
|
10
16
|
dispose(): void;
|
|
11
17
|
}
|
|
18
|
+
export interface AudioMixerBusEvidence {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly volume: number;
|
|
21
|
+
readonly muted: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface AudioMixerEvidence {
|
|
24
|
+
readonly kind: "audio-mixer-evidence";
|
|
25
|
+
readonly unlocked: boolean;
|
|
26
|
+
readonly busCount: number;
|
|
27
|
+
readonly buses: readonly AudioMixerBusEvidence[];
|
|
28
|
+
readonly errors: readonly string[];
|
|
29
|
+
}
|
|
30
|
+
export interface CartoonAudioMixer {
|
|
31
|
+
readonly mixer: AudioMixer;
|
|
32
|
+
readonly buses: {
|
|
33
|
+
readonly voice: AudioBus;
|
|
34
|
+
readonly music: AudioBus;
|
|
35
|
+
readonly sfx: AudioBus;
|
|
36
|
+
readonly ambient: AudioBus;
|
|
37
|
+
};
|
|
38
|
+
evidence(options?: {
|
|
39
|
+
readonly unlocked?: boolean;
|
|
40
|
+
readonly errors?: readonly string[];
|
|
41
|
+
}): AudioMixerEvidence;
|
|
42
|
+
}
|
|
43
|
+
export interface CartoonAudioMixerOptions {
|
|
44
|
+
readonly voiceVolume?: number;
|
|
45
|
+
readonly musicVolume?: number;
|
|
46
|
+
readonly sfxVolume?: number;
|
|
47
|
+
readonly ambientVolume?: number;
|
|
48
|
+
readonly muted?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export declare function createCartoonAudioMixer(context: AudioContextLike, options?: CartoonAudioMixerOptions): CartoonAudioMixer;
|
|
51
|
+
export declare function createAudioMixerEvidence(mixer: AudioMixer, options?: {
|
|
52
|
+
readonly unlocked?: boolean;
|
|
53
|
+
readonly errors?: readonly string[];
|
|
54
|
+
}): AudioMixerEvidence;
|
|
12
55
|
//# sourceMappingURL=AudioMixer.d.ts.map
|
package/dist/AudioMixer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioMixer.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioMixer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,UAAU;IAIT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;gBAExB,OAAO,EAAE,gBAAgB;IAKtD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,SAA6B,GAAG,QAAQ;IAS7E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAQ9B,OAAO,IAAI,IAAI;CAMhB"}
|
|
1
|
+
{"version":3,"file":"AudioMixer.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioMixer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,UAAU;IAIT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;gBAExB,OAAO,EAAE,gBAAgB;IAKtD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,SAA6B,GAAG,QAAQ;IAS7E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAQ9B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,SAAS,IAAI,SAAS,QAAQ,EAAE;IAIhC,QAAQ,CAAC,OAAO,GAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAO,GAAG,kBAAkB;IAIhH,OAAO,IAAI,IAAI;CAMhB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;QACzB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAAG,kBAAkB,CAAC;CAC9G;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAoBnB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GACjF,kBAAkB,CAYpB"}
|
package/dist/AudioMixer.js
CHANGED
|
@@ -23,6 +23,15 @@ export class AudioMixer {
|
|
|
23
23
|
}
|
|
24
24
|
return bus;
|
|
25
25
|
}
|
|
26
|
+
hasBus(name) {
|
|
27
|
+
return this.buses.has(name);
|
|
28
|
+
}
|
|
29
|
+
listBuses() {
|
|
30
|
+
return [...this.buses.values()];
|
|
31
|
+
}
|
|
32
|
+
evidence(options = {}) {
|
|
33
|
+
return createAudioMixerEvidence(this, options);
|
|
34
|
+
}
|
|
26
35
|
dispose() {
|
|
27
36
|
for (const bus of [...this.buses.values()].reverse()) {
|
|
28
37
|
bus.dispose();
|
|
@@ -30,4 +39,38 @@ export class AudioMixer {
|
|
|
30
39
|
this.buses.clear();
|
|
31
40
|
}
|
|
32
41
|
}
|
|
42
|
+
export function createCartoonAudioMixer(context, options = {}) {
|
|
43
|
+
const mixer = new AudioMixer(context);
|
|
44
|
+
const voice = mixer.createBus("voice");
|
|
45
|
+
const music = mixer.createBus("music");
|
|
46
|
+
const sfx = mixer.createBus("sfx");
|
|
47
|
+
const ambient = mixer.createBus("ambient");
|
|
48
|
+
voice.setVolume(options.voiceVolume ?? 1);
|
|
49
|
+
music.setVolume(options.musicVolume ?? 0.55);
|
|
50
|
+
sfx.setVolume(options.sfxVolume ?? 0.9);
|
|
51
|
+
ambient.setVolume(options.ambientVolume ?? 0.45);
|
|
52
|
+
if (options.muted) {
|
|
53
|
+
for (const bus of [mixer.master, voice, music, sfx, ambient]) {
|
|
54
|
+
bus.mute(true);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
mixer,
|
|
59
|
+
buses: { voice, music, sfx, ambient },
|
|
60
|
+
evidence: (evidenceOptions = {}) => mixer.evidence(evidenceOptions)
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function createAudioMixerEvidence(mixer, options = {}) {
|
|
64
|
+
return {
|
|
65
|
+
kind: "audio-mixer-evidence",
|
|
66
|
+
unlocked: options.unlocked ?? false,
|
|
67
|
+
busCount: mixer.listBuses().length,
|
|
68
|
+
buses: mixer.listBuses().map((bus) => ({
|
|
69
|
+
name: bus.name,
|
|
70
|
+
volume: bus.volume,
|
|
71
|
+
muted: bus.isMuted
|
|
72
|
+
})),
|
|
73
|
+
errors: [...(options.errors ?? [])]
|
|
74
|
+
};
|
|
75
|
+
}
|
|
33
76
|
//# sourceMappingURL=AudioMixer.js.map
|
package/dist/AudioMixer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioMixer.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioMixer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,OAAO,UAAU;IAIQ;IAHpB,MAAM,CAAW;IACT,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAErD,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,cAAyB,IAAI,CAAC,MAAM,CAAC,KAAK;QAChE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO;QACL,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"AudioMixer.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioMixer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { AudioClip } from "./AudioClip";
|
|
2
|
+
import type { AudioWaveformData } from "./AudioWaveform";
|
|
3
|
+
export type AudioTimelineTrackRole = "dialogue" | "music" | "sfx" | "ambient";
|
|
4
|
+
export interface AudioTimelineEnvelopePoint {
|
|
5
|
+
readonly time: number;
|
|
6
|
+
readonly value: number;
|
|
7
|
+
}
|
|
8
|
+
export interface AudioTimelineClipOptions {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly clip?: AudioClip;
|
|
11
|
+
readonly assetId?: string;
|
|
12
|
+
readonly sourceUrl?: string;
|
|
13
|
+
readonly waveform?: AudioWaveformData;
|
|
14
|
+
readonly startTime: number;
|
|
15
|
+
readonly duration?: number;
|
|
16
|
+
readonly trimStart?: number;
|
|
17
|
+
readonly trimEnd?: number;
|
|
18
|
+
readonly volume?: number;
|
|
19
|
+
readonly muted?: boolean;
|
|
20
|
+
readonly loop?: boolean;
|
|
21
|
+
readonly busName?: string;
|
|
22
|
+
readonly envelope?: readonly AudioTimelineEnvelopePoint[];
|
|
23
|
+
}
|
|
24
|
+
export interface AudioTimelineClip {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly clip?: AudioClip;
|
|
27
|
+
readonly assetId?: string;
|
|
28
|
+
readonly sourceUrl?: string;
|
|
29
|
+
readonly waveform?: AudioWaveformData;
|
|
30
|
+
readonly startTime: number;
|
|
31
|
+
readonly duration: number;
|
|
32
|
+
readonly trimStart: number;
|
|
33
|
+
readonly trimEnd: number;
|
|
34
|
+
readonly sourceDuration: number;
|
|
35
|
+
readonly volume: number;
|
|
36
|
+
readonly muted: boolean;
|
|
37
|
+
readonly loop: boolean;
|
|
38
|
+
readonly busName: string;
|
|
39
|
+
readonly envelope: readonly AudioTimelineEnvelopePoint[];
|
|
40
|
+
}
|
|
41
|
+
export interface AudioTimelineTrackOptions {
|
|
42
|
+
readonly id: string;
|
|
43
|
+
readonly name?: string;
|
|
44
|
+
readonly role: AudioTimelineTrackRole;
|
|
45
|
+
readonly busName?: string;
|
|
46
|
+
readonly volume?: number;
|
|
47
|
+
readonly muted?: boolean;
|
|
48
|
+
readonly solo?: boolean;
|
|
49
|
+
readonly clips?: readonly AudioTimelineClipOptions[];
|
|
50
|
+
}
|
|
51
|
+
export interface AudioTimelineSample {
|
|
52
|
+
readonly trackId: string;
|
|
53
|
+
readonly clipId: string;
|
|
54
|
+
readonly role: AudioTimelineTrackRole;
|
|
55
|
+
readonly busName: string;
|
|
56
|
+
readonly timelineTime: number;
|
|
57
|
+
readonly localTime: number;
|
|
58
|
+
readonly sourceTime: number;
|
|
59
|
+
readonly volume: number;
|
|
60
|
+
readonly muted: boolean;
|
|
61
|
+
readonly clip: AudioTimelineClip;
|
|
62
|
+
}
|
|
63
|
+
export interface AudioTimelineBusMix {
|
|
64
|
+
readonly busName: string;
|
|
65
|
+
readonly role: AudioTimelineTrackRole | "master";
|
|
66
|
+
readonly volume: number;
|
|
67
|
+
readonly muted: boolean;
|
|
68
|
+
readonly solo: boolean;
|
|
69
|
+
readonly ducked: boolean;
|
|
70
|
+
}
|
|
71
|
+
export interface AudioTimelineMixSnapshot {
|
|
72
|
+
readonly time: number;
|
|
73
|
+
readonly activeSamples: readonly AudioTimelineSample[];
|
|
74
|
+
readonly buses: readonly AudioTimelineBusMix[];
|
|
75
|
+
readonly dialogueActive: boolean;
|
|
76
|
+
readonly duckingApplied: boolean;
|
|
77
|
+
}
|
|
78
|
+
export interface AudioTimelineMixOptions {
|
|
79
|
+
readonly masterVolume?: number;
|
|
80
|
+
readonly duckMusicDuringDialogue?: boolean;
|
|
81
|
+
readonly duckingRatio?: number;
|
|
82
|
+
readonly busVolumes?: Readonly<Record<string, number>>;
|
|
83
|
+
readonly mutedBuses?: readonly string[];
|
|
84
|
+
readonly soloBuses?: readonly string[];
|
|
85
|
+
}
|
|
86
|
+
export interface AudioCaptionCue {
|
|
87
|
+
readonly id: string;
|
|
88
|
+
readonly startTime: number;
|
|
89
|
+
readonly endTime: number;
|
|
90
|
+
readonly text?: string;
|
|
91
|
+
readonly audioClipId?: string;
|
|
92
|
+
}
|
|
93
|
+
export interface AudioCaptionSyncIssue {
|
|
94
|
+
readonly code: string;
|
|
95
|
+
readonly message: string;
|
|
96
|
+
readonly cueId: string;
|
|
97
|
+
readonly clipId?: string;
|
|
98
|
+
readonly deltaFrames?: number;
|
|
99
|
+
}
|
|
100
|
+
export interface AudioCaptionSyncReport {
|
|
101
|
+
readonly ok: boolean;
|
|
102
|
+
readonly frameRate: number;
|
|
103
|
+
readonly toleranceFrames: number;
|
|
104
|
+
readonly checkedCueCount: number;
|
|
105
|
+
readonly issues: readonly AudioCaptionSyncIssue[];
|
|
106
|
+
}
|
|
107
|
+
export declare class AudioTimelineTrack {
|
|
108
|
+
readonly id: string;
|
|
109
|
+
readonly name: string;
|
|
110
|
+
readonly role: AudioTimelineTrackRole;
|
|
111
|
+
readonly busName: string;
|
|
112
|
+
volume: number;
|
|
113
|
+
muted: boolean;
|
|
114
|
+
solo: boolean;
|
|
115
|
+
private clipsRef;
|
|
116
|
+
constructor(options: AudioTimelineTrackOptions);
|
|
117
|
+
get clips(): readonly AudioTimelineClip[];
|
|
118
|
+
addClip(options: AudioTimelineClipOptions): AudioTimelineClip;
|
|
119
|
+
getClip(id: string): AudioTimelineClip;
|
|
120
|
+
removeClip(id: string): AudioTimelineClip;
|
|
121
|
+
moveClip(id: string, startTime: number): AudioTimelineClip;
|
|
122
|
+
trimClip(id: string, trimStart: number, trimEnd: number): AudioTimelineClip;
|
|
123
|
+
splitClip(id: string, splitTime: number, rightId?: string): readonly [AudioTimelineClip, AudioTimelineClip];
|
|
124
|
+
activeClipsAt(time: number): readonly AudioTimelineClip[];
|
|
125
|
+
sampleAt(time: number): readonly AudioTimelineSample[];
|
|
126
|
+
private replaceClip;
|
|
127
|
+
private sortClips;
|
|
128
|
+
}
|
|
129
|
+
export declare function defaultAudioTimelineBusForRole(role: AudioTimelineTrackRole): string;
|
|
130
|
+
export declare function createAudioTimelineMixSnapshot(tracks: readonly AudioTimelineTrack[], time: number, options?: AudioTimelineMixOptions): AudioTimelineMixSnapshot;
|
|
131
|
+
export declare function validateAudioCaptionSync(tracks: readonly AudioTimelineTrack[], captions: readonly AudioCaptionCue[], options?: {
|
|
132
|
+
readonly frameRate?: number;
|
|
133
|
+
readonly toleranceFrames?: number;
|
|
134
|
+
}): AudioCaptionSyncReport;
|
|
135
|
+
//# sourceMappingURL=AudioTimelineTrack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioTimelineTrack.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioTimelineTrack.ts"],"names":[],"mappings":"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"}
|