@aura3d/audio 1.5.2 → 2.0.1
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 +20 -2
- package/dist/AudioBus.d.ts.map +1 -1
- package/dist/AudioBus.js.map +1 -1
- package/dist/AudioFileManager.d.ts +7 -2
- package/dist/AudioFileManager.d.ts.map +1 -1
- package/dist/AudioFileManager.js +13 -0
- package/dist/AudioFileManager.js.map +1 -1
- package/dist/AudioMixer.d.ts +2 -2
- package/dist/AudioSource.d.ts +10 -2
- package/dist/AudioSource.d.ts.map +1 -1
- package/dist/AudioSource.js +56 -7
- package/dist/AudioSource.js.map +1 -1
- package/dist/AudioSystem.d.ts +2 -2
- package/dist/AudioTimelineTrack.d.ts +2 -2
- package/dist/AudioWaveform.d.ts +1 -1
- package/dist/SceneAudioBridge.d.ts +2 -2
- package/dist/SpatialAudio.d.ts +2 -2
- package/dist/effects/Filter.d.ts +2 -2
- package/dist/effects/Reverb.d.ts +2 -2
- package/dist/index.d.ts +25 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/AdaptiveMusicFixtures.d.ts +0 -36
- package/dist/AdaptiveMusicFixtures.d.ts.map +0 -1
- package/dist/AdaptiveMusicFixtures.js +0 -90
- package/dist/AdaptiveMusicFixtures.js.map +0 -1
- package/dist/AudioEffectsAnalysisFixtures.d.ts +0 -99
- package/dist/AudioEffectsAnalysisFixtures.d.ts.map +0 -1
- package/dist/AudioEffectsAnalysisFixtures.js +0 -192
- package/dist/AudioEffectsAnalysisFixtures.js.map +0 -1
- package/dist/SpatialAudioFixtures.d.ts +0 -38
- package/dist/SpatialAudioFixtures.d.ts.map +0 -1
- package/dist/SpatialAudioFixtures.js +0 -94
- package/dist/SpatialAudioFixtures.js.map +0 -1
package/dist/AudioBus.d.ts
CHANGED
|
@@ -1,15 +1,33 @@
|
|
|
1
|
-
import type { AudioContextLike } from "./AudioContextManager";
|
|
1
|
+
import type { AudioContextLike } from "./AudioContextManager.js";
|
|
2
|
+
/**
|
|
3
|
+
* The minimum a bus needs from a context: somewhere to send audio, and the ability to make a gain node.
|
|
4
|
+
*
|
|
5
|
+
* WS-3.2 — this is deliberately narrower than {@link AudioContextLike}. `AudioContextLike` also requires
|
|
6
|
+
* `createBufferSource`, `createPanner`, `createBiquadFilter` and `createConvolver`, none of which a bus
|
|
7
|
+
* uses. Requiring them forced any caller that only wants bus routing — `GameAudio`, whose cue definitions
|
|
8
|
+
* synthesise with an oscillator and never touch a panner or convolver — to either implement four unused
|
|
9
|
+
* factories or hand-roll its own `createGain` call. It hand-rolled, which is how the same gain-graph logic
|
|
10
|
+
* came to exist in two packages.
|
|
11
|
+
*
|
|
12
|
+
* Widening the parameter is source-compatible: every existing `AudioContextLike` satisfies it.
|
|
13
|
+
*/
|
|
14
|
+
export interface AudioBusContextLike {
|
|
15
|
+
readonly destination: AudioNode;
|
|
16
|
+
createGain(): GainNode;
|
|
17
|
+
}
|
|
2
18
|
export declare class AudioBus {
|
|
3
19
|
readonly name: string;
|
|
4
20
|
readonly input: GainNode;
|
|
5
21
|
readonly output: GainNode;
|
|
6
22
|
private muted;
|
|
7
23
|
private storedVolume;
|
|
8
|
-
constructor(name: string, context:
|
|
24
|
+
constructor(name: string, context: AudioBusContextLike, destination?: AudioNode);
|
|
9
25
|
get volume(): number;
|
|
10
26
|
get isMuted(): boolean;
|
|
11
27
|
setVolume(value: number): void;
|
|
12
28
|
mute(value?: boolean): void;
|
|
13
29
|
dispose(): void;
|
|
14
30
|
}
|
|
31
|
+
/** Retained so the `AudioContextLike`-typed call sites in this package keep their documented contract. */
|
|
32
|
+
export type AudioBusContext = AudioContextLike;
|
|
15
33
|
//# sourceMappingURL=AudioBus.d.ts.map
|
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,
|
|
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;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,UAAU,IAAI,QAAQ,CAAC;CACxB;AAED,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,mBAAmB,EAC5B,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;AAED,0GAA0G;AAC1G,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC"}
|
package/dist/AudioBus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioBus.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioBus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AudioBus.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioBus.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,QAAQ;IAOR;IANF,KAAK,CAAW;IAChB,MAAM,CAAW;IAClB,KAAK,GAAG,KAAK,CAAC;IACd,YAAY,GAAG,CAAC,CAAC;IAEzB,YACW,IAAY,EACrB,OAA4B,EAC5B,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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AudioClip } from "./AudioClip";
|
|
2
|
-
import type { AudioContextLike } from "./AudioContextManager";
|
|
1
|
+
import { AudioClip } from "./AudioClip.js";
|
|
2
|
+
import type { AudioContextLike } from "./AudioContextManager.js";
|
|
3
3
|
export interface AudioDecodeContextLike extends AudioContextLike {
|
|
4
4
|
decodeAudioData(data: ArrayBuffer): Promise<AudioBuffer> | AudioBuffer;
|
|
5
5
|
}
|
|
@@ -28,6 +28,10 @@ export interface AudioFileManagerOptions {
|
|
|
28
28
|
readonly cache?: Map<string, AudioClip>;
|
|
29
29
|
readonly validateTypedAudioAssets?: boolean;
|
|
30
30
|
}
|
|
31
|
+
export interface AudioCodecCandidate {
|
|
32
|
+
readonly input: AudioFileInput;
|
|
33
|
+
readonly mimeType: string;
|
|
34
|
+
}
|
|
31
35
|
export interface AudioFileFetchResponseLike {
|
|
32
36
|
readonly ok: boolean;
|
|
33
37
|
readonly status: number;
|
|
@@ -68,6 +72,7 @@ export declare class AudioFileManager {
|
|
|
68
72
|
getCached(input: AudioFileInput, request?: Omit<AudioFileRequest, "input">): AudioClip | undefined;
|
|
69
73
|
load(input: AudioFileInput, request?: Omit<AudioFileRequest, "input">): Promise<AudioClip>;
|
|
70
74
|
loadMany(inputs: readonly AudioFileInput[], request?: Omit<AudioFileRequest, "input">): Promise<readonly AudioClip[]>;
|
|
75
|
+
loadFirstSupported(candidates: readonly AudioCodecCandidate[], canPlayType?: (mimeType: string) => "" | "maybe" | "probably"): Promise<AudioClip>;
|
|
71
76
|
clear(input?: AudioFileInput): void;
|
|
72
77
|
private loadResolved;
|
|
73
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioFileManager.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioFileManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AudioFileManager.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioFileManager.ts"],"names":[],"mappings":"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"}
|
package/dist/AudioFileManager.js
CHANGED
|
@@ -75,6 +75,14 @@ export class AudioFileManager {
|
|
|
75
75
|
async loadMany(inputs, request = {}) {
|
|
76
76
|
return Promise.all(inputs.map((input) => this.load(input, request)));
|
|
77
77
|
}
|
|
78
|
+
async loadFirstSupported(candidates, canPlayType = defaultCanPlayType) {
|
|
79
|
+
if (candidates.length === 0)
|
|
80
|
+
throw new Error("Audio codec candidates must contain at least one source");
|
|
81
|
+
const candidate = candidates.find((entry) => canPlayType(entry.mimeType) !== "");
|
|
82
|
+
if (!candidate)
|
|
83
|
+
throw new Error(`No supported audio codec among: ${candidates.map((entry) => entry.mimeType).join(", ")}`);
|
|
84
|
+
return this.load(candidate.input);
|
|
85
|
+
}
|
|
78
86
|
clear(input) {
|
|
79
87
|
if (input === undefined) {
|
|
80
88
|
this.cache.clear();
|
|
@@ -165,4 +173,9 @@ async function defaultFetchAudio(url, init) {
|
|
|
165
173
|
}
|
|
166
174
|
return fetch(url, init);
|
|
167
175
|
}
|
|
176
|
+
function defaultCanPlayType(mimeType) {
|
|
177
|
+
if (typeof document === "undefined")
|
|
178
|
+
throw new Error("Codec selection requires canPlayType injection outside a browser");
|
|
179
|
+
return document.createElement("audio").canPlayType(mimeType);
|
|
180
|
+
}
|
|
168
181
|
//# sourceMappingURL=AudioFileManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioFileManager.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioFileManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"AudioFileManager.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioFileManager.ts"],"names":[],"mappings":"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"}
|
package/dist/AudioMixer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AudioBus } from "./AudioBus";
|
|
2
|
-
import type { AudioContextLike } from "./AudioContextManager";
|
|
1
|
+
import { AudioBus } from "./AudioBus.js";
|
|
2
|
+
import type { AudioContextLike } from "./AudioContextManager.js";
|
|
3
3
|
export declare class AudioMixer {
|
|
4
4
|
private readonly context;
|
|
5
5
|
readonly master: AudioBus;
|
package/dist/AudioSource.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AudioClip } from "./AudioClip";
|
|
2
|
-
import type { AudioContextLike } from "./AudioContextManager";
|
|
1
|
+
import type { AudioClip } from "./AudioClip.js";
|
|
2
|
+
import type { AudioContextLike } from "./AudioContextManager.js";
|
|
3
3
|
export type AudioSourceState = "idle" | "playing" | "paused" | "stopped";
|
|
4
4
|
export interface AudioSourceOptions {
|
|
5
5
|
readonly context: AudioContextLike;
|
|
@@ -15,11 +15,19 @@ export declare class AudioSource {
|
|
|
15
15
|
readonly gain: GainNode;
|
|
16
16
|
private stateRef;
|
|
17
17
|
private node?;
|
|
18
|
+
private offsetSeconds;
|
|
19
|
+
private startedAt;
|
|
20
|
+
private spriteDuration?;
|
|
18
21
|
constructor(options: AudioSourceOptions);
|
|
19
22
|
get state(): AudioSourceState;
|
|
20
23
|
play(when?: number): void;
|
|
21
24
|
stop(when?: number): void;
|
|
25
|
+
pause(): void;
|
|
26
|
+
resume(): void;
|
|
27
|
+
playSprite(offsetSeconds: number, durationSeconds: number, when?: number): void;
|
|
28
|
+
fade(from: number, to: number, durationSeconds: number): void;
|
|
22
29
|
setVolume(value: number): void;
|
|
23
30
|
dispose(): void;
|
|
31
|
+
private stopNode;
|
|
24
32
|
}
|
|
25
33
|
//# sourceMappingURL=AudioSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioSource.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"AudioSource.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,WAAW;IAWV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAExB,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAwB;IACrC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEH,OAAO,EAAE,kBAAkB;IAQxD,IAAI,KAAK,IAAI,gBAAgB,CAE5B;IAED,IAAI,CAAC,IAAI,SAAI,GAAG,IAAI;IAwBpB,IAAI,CAAC,IAAI,SAAI,GAAG,IAAI;IASpB,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,IAAI;IAKd,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,IAAI;IAS1E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAQ7D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO9B,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,QAAQ;CAQjB"}
|
package/dist/AudioSource.js
CHANGED
|
@@ -5,6 +5,9 @@ export class AudioSource {
|
|
|
5
5
|
gain;
|
|
6
6
|
stateRef = "idle";
|
|
7
7
|
node;
|
|
8
|
+
offsetSeconds = 0;
|
|
9
|
+
startedAt = 0;
|
|
10
|
+
spriteDuration;
|
|
8
11
|
constructor(options) {
|
|
9
12
|
this.options = options;
|
|
10
13
|
this.clip = options.clip;
|
|
@@ -20,30 +23,67 @@ export class AudioSource {
|
|
|
20
23
|
if (!this.clip) {
|
|
21
24
|
throw new Error("Cannot play an AudioSource without an AudioClip");
|
|
22
25
|
}
|
|
23
|
-
this.
|
|
26
|
+
this.stopNode();
|
|
24
27
|
const source = this.options.context.createBufferSource();
|
|
25
28
|
source.buffer = this.clip.buffer;
|
|
26
29
|
source.loop = this.loop;
|
|
27
30
|
source.connect(this.gain);
|
|
28
|
-
|
|
31
|
+
const offset = Math.min(this.offsetSeconds, Math.max(0, this.clip.duration - Number.EPSILON));
|
|
32
|
+
if (this.spriteDuration === undefined)
|
|
33
|
+
source.start(when, offset);
|
|
34
|
+
else
|
|
35
|
+
source.start(when, offset, this.spriteDuration);
|
|
36
|
+
this.startedAt = this.options.context.currentTime - offset;
|
|
29
37
|
source.onended = () => {
|
|
30
38
|
if (this.node === source && this.stateRef === "playing") {
|
|
31
39
|
this.stateRef = "stopped";
|
|
40
|
+
this.offsetSeconds = 0;
|
|
41
|
+
this.spriteDuration = undefined;
|
|
32
42
|
}
|
|
33
43
|
};
|
|
34
44
|
this.node = source;
|
|
35
45
|
this.stateRef = "playing";
|
|
36
46
|
}
|
|
37
47
|
stop(when = 0) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
this.node = undefined;
|
|
42
|
-
}
|
|
48
|
+
this.stopNode(when);
|
|
49
|
+
this.offsetSeconds = 0;
|
|
50
|
+
this.spriteDuration = undefined;
|
|
43
51
|
if (this.stateRef !== "idle") {
|
|
44
52
|
this.stateRef = "stopped";
|
|
45
53
|
}
|
|
46
54
|
}
|
|
55
|
+
pause() {
|
|
56
|
+
if (!this.node || this.stateRef !== "playing" || !this.clip)
|
|
57
|
+
return;
|
|
58
|
+
const duration = this.spriteDuration ?? this.clip.duration;
|
|
59
|
+
this.offsetSeconds = Math.min(duration, Math.max(0, this.options.context.currentTime - this.startedAt));
|
|
60
|
+
this.stopNode();
|
|
61
|
+
this.stateRef = "paused";
|
|
62
|
+
}
|
|
63
|
+
resume() {
|
|
64
|
+
if (this.stateRef !== "paused")
|
|
65
|
+
return;
|
|
66
|
+
this.play();
|
|
67
|
+
}
|
|
68
|
+
playSprite(offsetSeconds, durationSeconds, when = 0) {
|
|
69
|
+
if (!this.clip)
|
|
70
|
+
throw new Error("Cannot play an audio sprite without an AudioClip");
|
|
71
|
+
if (!Number.isFinite(offsetSeconds) || offsetSeconds < 0 || offsetSeconds >= this.clip.duration)
|
|
72
|
+
throw new RangeError("Audio sprite offset must fall within the clip duration");
|
|
73
|
+
if (!Number.isFinite(durationSeconds) || durationSeconds <= 0 || offsetSeconds + durationSeconds > this.clip.duration)
|
|
74
|
+
throw new RangeError("Audio sprite duration must be positive and remain within the clip");
|
|
75
|
+
this.offsetSeconds = offsetSeconds;
|
|
76
|
+
this.spriteDuration = durationSeconds;
|
|
77
|
+
this.play(when);
|
|
78
|
+
}
|
|
79
|
+
fade(from, to, durationSeconds) {
|
|
80
|
+
if (![from, to, durationSeconds].every(Number.isFinite) || from < 0 || to < 0 || durationSeconds < 0)
|
|
81
|
+
throw new RangeError("Audio fade values must be finite and non-negative");
|
|
82
|
+
const now = this.options.context.currentTime;
|
|
83
|
+
this.gain.gain.cancelScheduledValues(now);
|
|
84
|
+
this.gain.gain.setValueAtTime(from, now);
|
|
85
|
+
this.gain.gain.linearRampToValueAtTime(to, now + durationSeconds);
|
|
86
|
+
}
|
|
47
87
|
setVolume(value) {
|
|
48
88
|
if (!Number.isFinite(value) || value < 0) {
|
|
49
89
|
throw new Error("Audio source volume must be a non-negative finite number");
|
|
@@ -54,5 +94,14 @@ export class AudioSource {
|
|
|
54
94
|
this.stop();
|
|
55
95
|
this.gain.disconnect();
|
|
56
96
|
}
|
|
97
|
+
stopNode(when = 0) {
|
|
98
|
+
if (!this.node)
|
|
99
|
+
return;
|
|
100
|
+
const source = this.node;
|
|
101
|
+
this.node = undefined;
|
|
102
|
+
source.onended = null;
|
|
103
|
+
source.stop(when);
|
|
104
|
+
source.disconnect();
|
|
105
|
+
}
|
|
57
106
|
}
|
|
58
107
|
//# sourceMappingURL=AudioSource.js.map
|
package/dist/AudioSource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioSource.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioSource.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"AudioSource.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioSource.ts"],"names":[],"mappings":"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"}
|
package/dist/AudioSystem.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AudioContextManager, type AudioContextManagerOptions } from "./AudioContextManager";
|
|
2
|
-
import { AudioMixer } from "./AudioMixer";
|
|
1
|
+
import { AudioContextManager, type AudioContextManagerOptions } from "./AudioContextManager.js";
|
|
2
|
+
import { AudioMixer } from "./AudioMixer.js";
|
|
3
3
|
export declare class AudioSystem {
|
|
4
4
|
readonly contextManager: AudioContextManager;
|
|
5
5
|
private mixerRef?;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AudioClip } from "./AudioClip";
|
|
2
|
-
import type { AudioWaveformData } from "./AudioWaveform";
|
|
1
|
+
import type { AudioClip } from "./AudioClip.js";
|
|
2
|
+
import type { AudioWaveformData } from "./AudioWaveform.js";
|
|
3
3
|
export type AudioTimelineTrackRole = "dialogue" | "music" | "sfx" | "ambient";
|
|
4
4
|
export interface AudioTimelineEnvelopePoint {
|
|
5
5
|
readonly time: number;
|
package/dist/AudioWaveform.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Scene, SceneNode } from "@aura3d/scene";
|
|
2
|
-
import type { AudioListener } from "./AudioListener";
|
|
3
|
-
import type { SpatialAudio } from "./SpatialAudio";
|
|
2
|
+
import type { AudioListener } from "./AudioListener.js";
|
|
3
|
+
import type { SpatialAudio } from "./SpatialAudio.js";
|
|
4
4
|
export interface SceneAudioSourceBinding {
|
|
5
5
|
readonly node: SceneNode;
|
|
6
6
|
readonly spatial: SpatialAudio;
|
package/dist/SpatialAudio.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AudioContextLike } from "./AudioContextManager";
|
|
2
|
-
import type { Vec3Like } from "./AudioListener";
|
|
1
|
+
import type { AudioContextLike } from "./AudioContextManager.js";
|
|
2
|
+
import type { Vec3Like } from "./AudioListener.js";
|
|
3
3
|
export interface SpatialAudioOptions {
|
|
4
4
|
readonly context: AudioContextLike;
|
|
5
5
|
readonly destination?: AudioNode;
|
package/dist/effects/Filter.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AudioContextLike } from "../AudioContextManager";
|
|
2
|
-
import type { AudioEffect } from "../AudioEffect";
|
|
1
|
+
import type { AudioContextLike } from "../AudioContextManager.js";
|
|
2
|
+
import type { AudioEffect } from "../AudioEffect.js";
|
|
3
3
|
export declare class FilterEffect implements AudioEffect {
|
|
4
4
|
readonly input: BiquadFilterNode;
|
|
5
5
|
readonly output: BiquadFilterNode;
|
package/dist/effects/Reverb.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AudioContextLike } from "../AudioContextManager";
|
|
2
|
-
import type { AudioEffect } from "../AudioEffect";
|
|
1
|
+
import type { AudioContextLike } from "../AudioContextManager.js";
|
|
2
|
+
import type { AudioEffect } from "../AudioEffect.js";
|
|
3
3
|
export declare class ReverbEffect implements AudioEffect {
|
|
4
4
|
readonly input: ConvolverNode;
|
|
5
5
|
readonly output: ConvolverNode;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,32 +1,26 @@
|
|
|
1
|
-
export { AudioBus } from "./AudioBus";
|
|
2
|
-
export { AudioClip } from "./AudioClip";
|
|
3
|
-
export type { AudioClipOptions } from "./AudioClip";
|
|
4
|
-
export { AudioFileManager, validateEpisodeAudioAssets } from "./AudioFileManager";
|
|
5
|
-
export type { AudioDecodeContextLike, EpisodeAudioAssetDiagnostic, EpisodeAudioAssetReadiness, EpisodeAudioAssetRequirement, AudioFileAssetLike, AudioFileFetchResponseLike, AudioFileInput, AudioFileManagerOptions, AudioFileRequest, ResolvedAudioFileRequest } from "./AudioFileManager";
|
|
6
|
-
export { createAudioTimelineMixSnapshot, defaultAudioTimelineBusForRole, validateAudioCaptionSync, AudioTimelineTrack } from "./AudioTimelineTrack";
|
|
7
|
-
export type { AudioCaptionCue, AudioCaptionSyncIssue, AudioCaptionSyncReport, AudioTimelineBusMix, AudioTimelineClip, AudioTimelineClipOptions, AudioTimelineEnvelopePoint, AudioTimelineMixOptions, AudioTimelineMixSnapshot, AudioTimelineSample, AudioTimelineTrackOptions, AudioTimelineTrackRole } from "./AudioTimelineTrack";
|
|
8
|
-
export { audioWaveformPeakRange, createAudioWaveform, createAudioWaveformPath, createAudioWaveformReviewData, sampleAudioWaveformAtTime } from "./AudioWaveform";
|
|
9
|
-
export type { AudioWaveformData, AudioWaveformInput, AudioWaveformOptions, AudioWaveformPathOptions, AudioWaveformPathPoint, AudioWaveformPeak, AudioWaveformReviewData, AudioWaveformReviewStem, AudioWaveformReviewStemView } from "./AudioWaveform";
|
|
10
|
-
export {
|
|
11
|
-
export type {
|
|
12
|
-
export {
|
|
13
|
-
export
|
|
14
|
-
export {
|
|
15
|
-
export
|
|
16
|
-
export {
|
|
17
|
-
export
|
|
18
|
-
export type {
|
|
19
|
-
export {
|
|
20
|
-
export
|
|
21
|
-
export {
|
|
22
|
-
export
|
|
23
|
-
export {
|
|
24
|
-
export
|
|
25
|
-
export {
|
|
26
|
-
export { SceneAudioBridge } from "./SceneAudioBridge";
|
|
27
|
-
export type { SceneAudioSourceBinding } from "./SceneAudioBridge";
|
|
28
|
-
export { SpatialAudio } from "./SpatialAudio";
|
|
29
|
-
export type { SpatialAudioOptions } from "./SpatialAudio";
|
|
30
|
-
export { FilterEffect } from "./effects/Filter";
|
|
31
|
-
export { ReverbEffect } from "./effects/Reverb";
|
|
1
|
+
export { AudioBus } from "./AudioBus.js";
|
|
2
|
+
export { AudioClip } from "./AudioClip.js";
|
|
3
|
+
export type { AudioClipOptions } from "./AudioClip.js";
|
|
4
|
+
export { AudioFileManager, validateEpisodeAudioAssets } from "./AudioFileManager.js";
|
|
5
|
+
export type { AudioDecodeContextLike, EpisodeAudioAssetDiagnostic, EpisodeAudioAssetReadiness, EpisodeAudioAssetRequirement, AudioFileAssetLike, AudioFileFetchResponseLike, AudioFileInput, AudioFileManagerOptions, AudioCodecCandidate, AudioFileRequest, ResolvedAudioFileRequest } from "./AudioFileManager.js";
|
|
6
|
+
export { createAudioTimelineMixSnapshot, defaultAudioTimelineBusForRole, validateAudioCaptionSync, AudioTimelineTrack } from "./AudioTimelineTrack.js";
|
|
7
|
+
export type { AudioCaptionCue, AudioCaptionSyncIssue, AudioCaptionSyncReport, AudioTimelineBusMix, AudioTimelineClip, AudioTimelineClipOptions, AudioTimelineEnvelopePoint, AudioTimelineMixOptions, AudioTimelineMixSnapshot, AudioTimelineSample, AudioTimelineTrackOptions, AudioTimelineTrackRole } from "./AudioTimelineTrack.js";
|
|
8
|
+
export { audioWaveformPeakRange, createAudioWaveform, createAudioWaveformPath, createAudioWaveformReviewData, sampleAudioWaveformAtTime } from "./AudioWaveform.js";
|
|
9
|
+
export type { AudioWaveformData, AudioWaveformInput, AudioWaveformOptions, AudioWaveformPathOptions, AudioWaveformPathPoint, AudioWaveformPeak, AudioWaveformReviewData, AudioWaveformReviewStem, AudioWaveformReviewStemView } from "./AudioWaveform.js";
|
|
10
|
+
export { AudioContextManager } from "./AudioContextManager.js";
|
|
11
|
+
export type { AudioContextLike, AudioContextManagerOptions, AudioContextState } from "./AudioContextManager.js";
|
|
12
|
+
export type { AudioEffect } from "./AudioEffect.js";
|
|
13
|
+
export { AudioListener } from "./AudioListener.js";
|
|
14
|
+
export type { Vec3Like } from "./AudioListener.js";
|
|
15
|
+
export { AudioMixer, createAudioMixerEvidence, createAnimationAudioMixer } from "./AudioMixer.js";
|
|
16
|
+
export type { AudioMixerBusEvidence, AudioMixerEvidence, AnimationAudioMixer, AnimationAudioMixerOptions } from "./AudioMixer.js";
|
|
17
|
+
export { AudioSource } from "./AudioSource.js";
|
|
18
|
+
export type { AudioSourceOptions, AudioSourceState } from "./AudioSource.js";
|
|
19
|
+
export { AudioSystem } from "./AudioSystem.js";
|
|
20
|
+
export { SceneAudioBridge } from "./SceneAudioBridge.js";
|
|
21
|
+
export type { SceneAudioSourceBinding } from "./SceneAudioBridge.js";
|
|
22
|
+
export { SpatialAudio } from "./SpatialAudio.js";
|
|
23
|
+
export type { SpatialAudioOptions } from "./SpatialAudio.js";
|
|
24
|
+
export { FilterEffect } from "./effects/Filter.js";
|
|
25
|
+
export { ReverbEffect } from "./effects/Reverb.js";
|
|
32
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACpJ,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjK,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACpJ,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjK,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7G,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC/F,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC/H,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,9 +3,6 @@ export { AudioClip } from "./AudioClip.js";
|
|
|
3
3
|
export { AudioFileManager, validateEpisodeAudioAssets } from "./AudioFileManager.js";
|
|
4
4
|
export { createAudioTimelineMixSnapshot, defaultAudioTimelineBusForRole, validateAudioCaptionSync, AudioTimelineTrack } from "./AudioTimelineTrack.js";
|
|
5
5
|
export { audioWaveformPeakRange, createAudioWaveform, createAudioWaveformPath, createAudioWaveformReviewData, sampleAudioWaveformAtTime } from "./AudioWaveform.js";
|
|
6
|
-
export { sampleAudioEffectsAnalysisFixture } from "./AudioEffectsAnalysisFixtures.js";
|
|
7
|
-
export { sampleAdaptiveMusicFixture } from "./AdaptiveMusicFixtures.js";
|
|
8
|
-
export { sampleAudioEnvironmentFixture } from "./SpatialAudioFixtures.js";
|
|
9
6
|
export { AudioContextManager } from "./AudioContextManager.js";
|
|
10
7
|
export { AudioListener } from "./AudioListener.js";
|
|
11
8
|
export { AudioMixer, createAudioMixerEvidence, createAnimationAudioMixer } from "./AudioMixer.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAclF,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAepJ,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAYjK,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aura3d/audio",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"main": "./dist/index.js",
|
|
12
12
|
"types": "./dist/index.d.ts",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@aura3d/scene": "
|
|
14
|
+
"@aura3d/scene": "2.0.1"
|
|
15
15
|
},
|
|
16
16
|
"description": "Browser audio lifecycle, clips, sources, buses, mixing, listener transforms, spatial attenuation, effects, and scene audio bridges for Aura3D.",
|
|
17
17
|
"keywords": [
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export type AdaptiveMusicFixtureState = "calm" | "tension" | "action" | "victory" | "defeat";
|
|
2
|
-
export type AdaptiveMusicCrossfadeCurve = "linear" | "equal-power" | "s-curve";
|
|
3
|
-
export interface AdaptiveMusicFixtureOptions {
|
|
4
|
-
readonly state?: AdaptiveMusicFixtureState;
|
|
5
|
-
readonly intensity?: number;
|
|
6
|
-
readonly curve?: AdaptiveMusicCrossfadeCurve;
|
|
7
|
-
}
|
|
8
|
-
export interface AdaptiveMusicLayerMix {
|
|
9
|
-
readonly id: string;
|
|
10
|
-
readonly role: "bed" | "pulse" | "lead" | "stinger";
|
|
11
|
-
readonly threshold: number;
|
|
12
|
-
readonly baseVolume: number;
|
|
13
|
-
readonly targetVolume: number;
|
|
14
|
-
readonly enabled: boolean;
|
|
15
|
-
}
|
|
16
|
-
export interface AdaptiveMusicFixture {
|
|
17
|
-
readonly source: "origin-master-adaptive-music-adapted";
|
|
18
|
-
readonly state: AdaptiveMusicFixtureState;
|
|
19
|
-
readonly intensity: number;
|
|
20
|
-
readonly curve: AdaptiveMusicCrossfadeCurve;
|
|
21
|
-
readonly transitionSeconds: number;
|
|
22
|
-
readonly loopBars: number;
|
|
23
|
-
readonly tempoBpm: number;
|
|
24
|
-
readonly layers: readonly AdaptiveMusicLayerMix[];
|
|
25
|
-
readonly activeLayerCount: number;
|
|
26
|
-
readonly peakLayerVolume: number;
|
|
27
|
-
readonly crossfade: {
|
|
28
|
-
readonly outGain: readonly number[];
|
|
29
|
-
readonly inGain: readonly number[];
|
|
30
|
-
readonly equalPowerNormalized: boolean;
|
|
31
|
-
};
|
|
32
|
-
readonly hash: string;
|
|
33
|
-
readonly claimBoundary: string;
|
|
34
|
-
}
|
|
35
|
-
export declare function sampleAdaptiveMusicFixture(options?: AdaptiveMusicFixtureOptions): AdaptiveMusicFixture;
|
|
36
|
-
//# sourceMappingURL=AdaptiveMusicFixtures.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptiveMusicFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AdaptiveMusicFixtures.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7F,MAAM,MAAM,2BAA2B,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,2BAA2B,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAClD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QACnC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;KACxC,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAiBD,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,2BAAgC,GAAG,oBAAoB,CAoC1G"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
const STATE_INTENSITY = {
|
|
2
|
-
calm: 0.05,
|
|
3
|
-
tension: 0.42,
|
|
4
|
-
action: 0.82,
|
|
5
|
-
victory: 0.58,
|
|
6
|
-
defeat: 0.22
|
|
7
|
-
};
|
|
8
|
-
const LAYERS = [
|
|
9
|
-
{ id: "ambient-bed", role: "bed", threshold: 0, baseVolume: 0.46 },
|
|
10
|
-
{ id: "rhythm-pulse", role: "pulse", threshold: 0.32, baseVolume: 0.7 },
|
|
11
|
-
{ id: "lead-motif", role: "lead", threshold: 0.62, baseVolume: 0.58 },
|
|
12
|
-
{ id: "result-stinger", role: "stinger", threshold: 0.52, baseVolume: 0.84 }
|
|
13
|
-
];
|
|
14
|
-
export function sampleAdaptiveMusicFixture(options = {}) {
|
|
15
|
-
const state = options.state ?? "tension";
|
|
16
|
-
const intensity = clamp01(options.intensity ?? STATE_INTENSITY[state]);
|
|
17
|
-
const curve = options.curve ?? "equal-power";
|
|
18
|
-
const layers = LAYERS.map((layer) => {
|
|
19
|
-
const enabled = layer.role === "stinger" ? state === "victory" || state === "defeat" : intensity >= layer.threshold;
|
|
20
|
-
const ramp = layer.threshold >= 1 ? 0 : clamp01((intensity - layer.threshold) / Math.max(0.08, 1 - layer.threshold));
|
|
21
|
-
const stateBoost = layer.role === "stinger" && state === "victory" ? 1 : layer.role === "stinger" && state === "defeat" ? 0.62 : 1;
|
|
22
|
-
return {
|
|
23
|
-
...layer,
|
|
24
|
-
enabled,
|
|
25
|
-
targetVolume: enabled ? round(layer.baseVolume * Math.max(layer.role === "bed" ? 0.45 : 0.18, ramp) * stateBoost) : 0
|
|
26
|
-
};
|
|
27
|
-
});
|
|
28
|
-
const crossfade = crossfadeSamples(curve, 6);
|
|
29
|
-
const hash = stableHash([
|
|
30
|
-
state,
|
|
31
|
-
intensity.toFixed(4),
|
|
32
|
-
curve,
|
|
33
|
-
...layers.map((layer) => `${layer.id}:${layer.targetVolume.toFixed(4)}:${layer.enabled ? 1 : 0}`)
|
|
34
|
-
].join("|"));
|
|
35
|
-
return {
|
|
36
|
-
source: "origin-master-adaptive-music-adapted",
|
|
37
|
-
state,
|
|
38
|
-
intensity: round(intensity),
|
|
39
|
-
curve,
|
|
40
|
-
transitionSeconds: state === "victory" || state === "defeat" ? 0.65 : 1.4,
|
|
41
|
-
loopBars: 8,
|
|
42
|
-
tempoBpm: state === "action" ? 138 : state === "victory" ? 124 : 112,
|
|
43
|
-
layers,
|
|
44
|
-
activeLayerCount: layers.filter((layer) => layer.enabled && layer.targetVolume > 0).length,
|
|
45
|
-
peakLayerVolume: round(Math.max(...layers.map((layer) => layer.targetVolume))),
|
|
46
|
-
crossfade,
|
|
47
|
-
hash,
|
|
48
|
-
claimBoundary: "Adaptive music fixture adapts old layer/crossfade state for deterministic runtime evidence; it does not play authored stems or prove Unity/Unreal audio middleware parity."
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
function crossfadeSamples(curve, steps) {
|
|
52
|
-
const outGain = [];
|
|
53
|
-
const inGain = [];
|
|
54
|
-
for (let index = 0; index <= steps; index += 1) {
|
|
55
|
-
const t = index / steps;
|
|
56
|
-
if (curve === "equal-power") {
|
|
57
|
-
outGain.push(round(Math.cos(t * Math.PI * 0.5)));
|
|
58
|
-
inGain.push(round(Math.sin(t * Math.PI * 0.5)));
|
|
59
|
-
}
|
|
60
|
-
else if (curve === "s-curve") {
|
|
61
|
-
const s = (Math.sin((t - 0.5) * Math.PI) + 1) / 2;
|
|
62
|
-
outGain.push(round(1 - s));
|
|
63
|
-
inGain.push(round(s));
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
outGain.push(round(1 - t));
|
|
67
|
-
inGain.push(round(t));
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
outGain,
|
|
72
|
-
inGain,
|
|
73
|
-
equalPowerNormalized: curve === "equal-power" && outGain.every((out, index) => Math.abs(out * out + (inGain[index] ?? 0) * (inGain[index] ?? 0) - 1) < 0.002)
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
function stableHash(value) {
|
|
77
|
-
let hash = 0x811c9dc5;
|
|
78
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
79
|
-
hash ^= value.charCodeAt(index);
|
|
80
|
-
hash = Math.imul(hash, 0x01000193);
|
|
81
|
-
}
|
|
82
|
-
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
83
|
-
}
|
|
84
|
-
function clamp01(value) {
|
|
85
|
-
return Number.isFinite(value) ? Math.max(0, Math.min(1, value)) : 0;
|
|
86
|
-
}
|
|
87
|
-
function round(value) {
|
|
88
|
-
return Number(value.toFixed(4));
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=AdaptiveMusicFixtures.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptiveMusicFixtures.js","sourceRoot":"","sources":["../../../../packages/audio/src/AdaptiveMusicFixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
export type AudioCompressorPreset = "gentle" | "moderate" | "aggressive" | "limiter" | "vocal" | "drums" | "master";
|
|
2
|
-
export type AudioDelayPreset = "slapback" | "short_echo" | "medium_echo" | "long_echo" | "ping_pong" | "tape_echo";
|
|
3
|
-
export type AudioChorusPreset = "subtle" | "classic" | "deep" | "wide" | "ensemble" | "vibrato";
|
|
4
|
-
export type AudioDistortionCurve = "sigmoid" | "asymmetric" | "hardclip" | "softclip" | "fuzz" | "saturation";
|
|
5
|
-
export interface AudioEffectsAnalysisFixtureOptions {
|
|
6
|
-
readonly preset?: AudioCompressorPreset;
|
|
7
|
-
readonly inputPeakDb?: number;
|
|
8
|
-
readonly intensity?: number;
|
|
9
|
-
}
|
|
10
|
-
export interface AudioEqBandFixture {
|
|
11
|
-
readonly name: string;
|
|
12
|
-
readonly type: "lowshelf" | "peaking" | "highshelf";
|
|
13
|
-
readonly frequencyHz: number;
|
|
14
|
-
readonly q: number;
|
|
15
|
-
readonly gainDb: number;
|
|
16
|
-
readonly enabled: boolean;
|
|
17
|
-
}
|
|
18
|
-
export interface AudioSpectrumBandFixture {
|
|
19
|
-
readonly name: string;
|
|
20
|
-
readonly minHz: number;
|
|
21
|
-
readonly maxHz: number;
|
|
22
|
-
readonly magnitude: number;
|
|
23
|
-
}
|
|
24
|
-
export interface AudioEffectsAnalysisFixture {
|
|
25
|
-
readonly source: "origin-master-audio-effects-analysis-adapted";
|
|
26
|
-
readonly effectChain: readonly ["parametric-eq", "dynamic-compressor", "delay", "chorus", "distortion", "filter", "spectrum-analyzer"];
|
|
27
|
-
readonly compressor: {
|
|
28
|
-
readonly preset: AudioCompressorPreset;
|
|
29
|
-
readonly thresholdDb: number;
|
|
30
|
-
readonly kneeDb: number;
|
|
31
|
-
readonly ratio: number;
|
|
32
|
-
readonly attackSeconds: number;
|
|
33
|
-
readonly releaseSeconds: number;
|
|
34
|
-
readonly inputPeakDb: number;
|
|
35
|
-
readonly outputPeakDb: number;
|
|
36
|
-
readonly gainReductionDb: number;
|
|
37
|
-
readonly makeupGainDb: number;
|
|
38
|
-
readonly limiterTriggered: boolean;
|
|
39
|
-
};
|
|
40
|
-
readonly eq: {
|
|
41
|
-
readonly bands: readonly AudioEqBandFixture[];
|
|
42
|
-
readonly activeBandCount: number;
|
|
43
|
-
readonly lowShelfGainDb: number;
|
|
44
|
-
readonly presenceGainDb: number;
|
|
45
|
-
readonly outputGain: number;
|
|
46
|
-
};
|
|
47
|
-
readonly delay: {
|
|
48
|
-
readonly source: "origin-master-delay-effect-adapted";
|
|
49
|
-
readonly preset: AudioDelayPreset;
|
|
50
|
-
readonly delayTimeSeconds: number;
|
|
51
|
-
readonly feedback: number;
|
|
52
|
-
readonly wetDryMix: number;
|
|
53
|
-
readonly filterFrequencyHz: number;
|
|
54
|
-
readonly pingPong: boolean;
|
|
55
|
-
readonly repeatsAboveNoiseFloor: number;
|
|
56
|
-
};
|
|
57
|
-
readonly chorus: {
|
|
58
|
-
readonly source: "origin-master-chorus-effect-adapted";
|
|
59
|
-
readonly preset: AudioChorusPreset;
|
|
60
|
-
readonly rateHz: number;
|
|
61
|
-
readonly depthSeconds: number;
|
|
62
|
-
readonly feedback: number;
|
|
63
|
-
readonly wetDryMix: number;
|
|
64
|
-
readonly delaySeconds: number;
|
|
65
|
-
readonly voices: number;
|
|
66
|
-
readonly stereoWidth: number;
|
|
67
|
-
};
|
|
68
|
-
readonly distortion: {
|
|
69
|
-
readonly source: "origin-master-distortion-effect-adapted";
|
|
70
|
-
readonly curve: AudioDistortionCurve;
|
|
71
|
-
readonly amount: number;
|
|
72
|
-
readonly preGain: number;
|
|
73
|
-
readonly postGain: number;
|
|
74
|
-
readonly wetDryMix: number;
|
|
75
|
-
readonly harmonicBoost: number;
|
|
76
|
-
readonly outputCeiling: number;
|
|
77
|
-
};
|
|
78
|
-
readonly filter: {
|
|
79
|
-
readonly source: "origin-master-filter-effect-adapted";
|
|
80
|
-
readonly type: "lowpass" | "highpass" | "bandpass";
|
|
81
|
-
readonly frequencyHz: number;
|
|
82
|
-
readonly q: number;
|
|
83
|
-
readonly resonanceDb: number;
|
|
84
|
-
readonly enabled: boolean;
|
|
85
|
-
};
|
|
86
|
-
readonly spectrum: {
|
|
87
|
-
readonly bands: readonly AudioSpectrumBandFixture[];
|
|
88
|
-
readonly barCount: number;
|
|
89
|
-
readonly bars: readonly number[];
|
|
90
|
-
readonly peakFrequencyHz: number;
|
|
91
|
-
readonly peakMagnitude: number;
|
|
92
|
-
readonly logarithmicScale: boolean;
|
|
93
|
-
};
|
|
94
|
-
readonly hash: string;
|
|
95
|
-
readonly claimBoundary: string;
|
|
96
|
-
readonly blockedClaims: readonly string[];
|
|
97
|
-
}
|
|
98
|
-
export declare function sampleAudioEffectsAnalysisFixture(options?: AudioEffectsAnalysisFixtureOptions): AudioEffectsAnalysisFixture;
|
|
99
|
-
//# sourceMappingURL=AudioEffectsAnalysisFixtures.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AudioEffectsAnalysisFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioEffectsAnalysisFixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
const COMPRESSOR_PRESETS = {
|
|
2
|
-
gentle: { thresholdDb: -30, kneeDb: 20, ratio: 2, attackSeconds: 0.01, releaseSeconds: 0.3 },
|
|
3
|
-
moderate: { thresholdDb: -24, kneeDb: 30, ratio: 4, attackSeconds: 0.005, releaseSeconds: 0.25 },
|
|
4
|
-
aggressive: { thresholdDb: -18, kneeDb: 10, ratio: 8, attackSeconds: 0.001, releaseSeconds: 0.1 },
|
|
5
|
-
limiter: { thresholdDb: -6, kneeDb: 0, ratio: 20, attackSeconds: 0.001, releaseSeconds: 0.05 },
|
|
6
|
-
vocal: { thresholdDb: -20, kneeDb: 15, ratio: 3, attackSeconds: 0.005, releaseSeconds: 0.2 },
|
|
7
|
-
drums: { thresholdDb: -18, kneeDb: 5, ratio: 6, attackSeconds: 0.001, releaseSeconds: 0.08 },
|
|
8
|
-
master: { thresholdDb: -14, kneeDb: 8, ratio: 3, attackSeconds: 0.004, releaseSeconds: 0.16 }
|
|
9
|
-
};
|
|
10
|
-
const SPECTRUM_BANDS = [
|
|
11
|
-
{ name: "Sub Bass", minHz: 20, maxHz: 60 },
|
|
12
|
-
{ name: "Bass", minHz: 60, maxHz: 250 },
|
|
13
|
-
{ name: "Low Mid", minHz: 250, maxHz: 500 },
|
|
14
|
-
{ name: "Mid", minHz: 500, maxHz: 2_000 },
|
|
15
|
-
{ name: "High Mid", minHz: 2_000, maxHz: 4_000 },
|
|
16
|
-
{ name: "Presence", minHz: 4_000, maxHz: 6_000 },
|
|
17
|
-
{ name: "Brilliance", minHz: 6_000, maxHz: 20_000 }
|
|
18
|
-
];
|
|
19
|
-
export function sampleAudioEffectsAnalysisFixture(options = {}) {
|
|
20
|
-
const preset = options.preset ?? "master";
|
|
21
|
-
const compressorPreset = COMPRESSOR_PRESETS[preset];
|
|
22
|
-
const intensity = clamp01(options.intensity ?? 0.72);
|
|
23
|
-
const inputPeakDb = clamp(options.inputPeakDb ?? -3.5, -60, 6);
|
|
24
|
-
const overThresholdDb = Math.max(0, inputPeakDb - compressorPreset.thresholdDb);
|
|
25
|
-
const compressedOverage = overThresholdDb / compressorPreset.ratio;
|
|
26
|
-
const gainReductionDb = round(Math.max(0, overThresholdDb - compressedOverage));
|
|
27
|
-
const makeupGainDb = round(Math.min(6, gainReductionDb * 0.38));
|
|
28
|
-
const outputPeakDb = round(inputPeakDb - gainReductionDb + makeupGainDb);
|
|
29
|
-
const eqBands = eqBandsForIntensity(intensity);
|
|
30
|
-
const spectrumBands = SPECTRUM_BANDS.map((band, index) => ({
|
|
31
|
-
...band,
|
|
32
|
-
magnitude: round(clamp01((Math.sin(index * 1.37 + intensity * 2.1) + 1) * 0.29 + intensity * (index === 1 || index === 5 ? 0.28 : 0.16)))
|
|
33
|
-
}));
|
|
34
|
-
const bars = spectrumBars(spectrumBands, 16);
|
|
35
|
-
const peak = spectrumBands.reduce((best, band) => band.magnitude > best.magnitude ? band : best, spectrumBands[0]);
|
|
36
|
-
const fixture = {
|
|
37
|
-
source: "origin-master-audio-effects-analysis-adapted",
|
|
38
|
-
effectChain: ["parametric-eq", "dynamic-compressor", "delay", "chorus", "distortion", "filter", "spectrum-analyzer"],
|
|
39
|
-
compressor: {
|
|
40
|
-
preset,
|
|
41
|
-
...compressorPreset,
|
|
42
|
-
inputPeakDb: round(inputPeakDb),
|
|
43
|
-
outputPeakDb,
|
|
44
|
-
gainReductionDb,
|
|
45
|
-
makeupGainDb,
|
|
46
|
-
limiterTriggered: outputPeakDb >= -0.5 || preset === "limiter"
|
|
47
|
-
},
|
|
48
|
-
eq: {
|
|
49
|
-
bands: eqBands,
|
|
50
|
-
activeBandCount: eqBands.filter((band) => band.enabled).length,
|
|
51
|
-
lowShelfGainDb: eqBands[0]?.gainDb ?? 0,
|
|
52
|
-
presenceGainDb: eqBands.find((band) => band.name === "presence-lift")?.gainDb ?? 0,
|
|
53
|
-
outputGain: round(1 - Math.max(0, outputPeakDb) * 0.05)
|
|
54
|
-
},
|
|
55
|
-
delay: delayFixture(intensity),
|
|
56
|
-
chorus: chorusFixture(intensity),
|
|
57
|
-
distortion: distortionFixture(intensity, inputPeakDb),
|
|
58
|
-
filter: filterFixture(intensity),
|
|
59
|
-
spectrum: {
|
|
60
|
-
bands: spectrumBands,
|
|
61
|
-
barCount: bars.length,
|
|
62
|
-
bars,
|
|
63
|
-
peakFrequencyHz: Math.round((peak.minHz + peak.maxHz) / 2),
|
|
64
|
-
peakMagnitude: peak.magnitude,
|
|
65
|
-
logarithmicScale: true
|
|
66
|
-
},
|
|
67
|
-
hash: "",
|
|
68
|
-
claimBoundary: "Audio effects fixture adapts old compressor, EQ, delay, chorus, distortion, filter, and spectrum-analysis concepts for deterministic telemetry; it does not instantiate a production WebAudio mastering graph or prove audio middleware parity.",
|
|
69
|
-
blockedClaims: [
|
|
70
|
-
"production WebAudio effects graph parity",
|
|
71
|
-
"production delay/chorus/distortion/filter node graph parity",
|
|
72
|
-
"real-time FFT browser analyzer certification",
|
|
73
|
-
"audio middleware mastering parity",
|
|
74
|
-
"Unity Audio Mixer parity",
|
|
75
|
-
"Unreal Audio Mixer parity"
|
|
76
|
-
]
|
|
77
|
-
};
|
|
78
|
-
return {
|
|
79
|
-
...fixture,
|
|
80
|
-
hash: stableHash([
|
|
81
|
-
fixture.compressor.preset,
|
|
82
|
-
fixture.compressor.outputPeakDb,
|
|
83
|
-
fixture.compressor.gainReductionDb,
|
|
84
|
-
fixture.delay.preset,
|
|
85
|
-
fixture.delay.repeatsAboveNoiseFloor,
|
|
86
|
-
fixture.chorus.voices,
|
|
87
|
-
fixture.chorus.stereoWidth,
|
|
88
|
-
fixture.distortion.curve,
|
|
89
|
-
fixture.distortion.harmonicBoost,
|
|
90
|
-
fixture.filter.frequencyHz,
|
|
91
|
-
fixture.eq.bands.map((band) => `${band.frequencyHz}:${band.gainDb}`).join(","),
|
|
92
|
-
fixture.spectrum.peakFrequencyHz,
|
|
93
|
-
fixture.spectrum.peakMagnitude
|
|
94
|
-
].join("|"))
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
function delayFixture(intensity) {
|
|
98
|
-
const preset = intensity > 0.7 ? "tape_echo" : intensity > 0.52 ? "medium_echo" : "short_echo";
|
|
99
|
-
const delayTimeSeconds = preset === "tape_echo" ? 0.42 : preset === "medium_echo" ? 0.5 : 0.25;
|
|
100
|
-
const feedback = round(preset === "tape_echo" ? 0.58 : 0.22 + intensity * 0.35);
|
|
101
|
-
const wetDryMix = round(0.24 + intensity * 0.34);
|
|
102
|
-
return {
|
|
103
|
-
source: "origin-master-delay-effect-adapted",
|
|
104
|
-
preset,
|
|
105
|
-
delayTimeSeconds,
|
|
106
|
-
feedback,
|
|
107
|
-
wetDryMix,
|
|
108
|
-
filterFrequencyHz: Math.round(7_500 - intensity * 4_600),
|
|
109
|
-
pingPong: preset === "tape_echo" || intensity > 0.82,
|
|
110
|
-
repeatsAboveNoiseFloor: Math.max(1, Math.min(8, Math.ceil(Math.log(0.04) / Math.log(Math.max(0.05, feedback)))))
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
function chorusFixture(intensity) {
|
|
114
|
-
const preset = intensity > 0.72 ? "ensemble" : intensity > 0.5 ? "classic" : "subtle";
|
|
115
|
-
const voices = preset === "ensemble" ? 4 : preset === "classic" ? 2 : 1;
|
|
116
|
-
return {
|
|
117
|
-
source: "origin-master-chorus-effect-adapted",
|
|
118
|
-
preset,
|
|
119
|
-
rateHz: round(0.85 + intensity * 2.2),
|
|
120
|
-
depthSeconds: round(0.0012 + intensity * 0.006),
|
|
121
|
-
feedback: round(0.08 + intensity * 0.26),
|
|
122
|
-
wetDryMix: round(0.18 + intensity * 0.42),
|
|
123
|
-
delaySeconds: round(0.012 + intensity * 0.018),
|
|
124
|
-
voices,
|
|
125
|
-
stereoWidth: round(Math.min(1, 0.36 + voices * 0.13 + intensity * 0.22))
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
function distortionFixture(intensity, inputPeakDb) {
|
|
129
|
-
const curve = intensity > 0.76 ? "saturation" : intensity > 0.58 ? "softclip" : "sigmoid";
|
|
130
|
-
const amount = round(18 + intensity * 62);
|
|
131
|
-
const preGain = round(1 + intensity * 2.4);
|
|
132
|
-
const postGain = round(Math.max(0.42, 1 - intensity * 0.36));
|
|
133
|
-
const harmonicBoost = round(Math.max(0, amount / 100 * preGain * Math.max(0.25, (inputPeakDb + 24) / 24)));
|
|
134
|
-
return {
|
|
135
|
-
source: "origin-master-distortion-effect-adapted",
|
|
136
|
-
curve,
|
|
137
|
-
amount,
|
|
138
|
-
preGain,
|
|
139
|
-
postGain,
|
|
140
|
-
wetDryMix: round(0.2 + intensity * 0.55),
|
|
141
|
-
harmonicBoost,
|
|
142
|
-
outputCeiling: round(Math.min(0.98, postGain + harmonicBoost * 0.08))
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
function filterFixture(intensity) {
|
|
146
|
-
const type = intensity > 0.62 ? "lowpass" : "bandpass";
|
|
147
|
-
const frequencyHz = Math.round(type === "lowpass" ? 6_800 - intensity * 2_400 : 1_200 + intensity * 2_200);
|
|
148
|
-
const q = round(0.7 + intensity * 1.6);
|
|
149
|
-
return {
|
|
150
|
-
source: "origin-master-filter-effect-adapted",
|
|
151
|
-
type,
|
|
152
|
-
frequencyHz,
|
|
153
|
-
q,
|
|
154
|
-
resonanceDb: round(q * 2.6),
|
|
155
|
-
enabled: true
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
function eqBandsForIntensity(intensity) {
|
|
159
|
-
return [
|
|
160
|
-
{ name: "low-body", type: "lowshelf", frequencyHz: 120, q: 0.7, gainDb: round(2.4 * intensity), enabled: true },
|
|
161
|
-
{ name: "mud-cut", type: "peaking", frequencyHz: 360, q: 1.1, gainDb: round(-1.8 * intensity), enabled: true },
|
|
162
|
-
{ name: "presence-lift", type: "peaking", frequencyHz: 3_200, q: 0.9, gainDb: round(2.2 * intensity), enabled: true },
|
|
163
|
-
{ name: "air", type: "highshelf", frequencyHz: 8_500, q: 0.8, gainDb: round(1.6 * intensity), enabled: true }
|
|
164
|
-
];
|
|
165
|
-
}
|
|
166
|
-
function spectrumBars(bands, count) {
|
|
167
|
-
const bars = [];
|
|
168
|
-
for (let index = 0; index < count; index += 1) {
|
|
169
|
-
const band = bands[Math.min(bands.length - 1, Math.floor(index / count * bands.length))];
|
|
170
|
-
const shimmer = 0.85 + 0.15 * Math.sin(index * 0.9);
|
|
171
|
-
bars.push(round(clamp01(band.magnitude * shimmer)));
|
|
172
|
-
}
|
|
173
|
-
return bars;
|
|
174
|
-
}
|
|
175
|
-
function clamp01(value) {
|
|
176
|
-
return clamp(value, 0, 1);
|
|
177
|
-
}
|
|
178
|
-
function clamp(value, min, max) {
|
|
179
|
-
return Math.max(min, Math.min(max, Number.isFinite(value) ? value : min));
|
|
180
|
-
}
|
|
181
|
-
function round(value) {
|
|
182
|
-
return Number(value.toFixed(4));
|
|
183
|
-
}
|
|
184
|
-
function stableHash(value) {
|
|
185
|
-
let hash = 0x811c9dc5;
|
|
186
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
187
|
-
hash ^= value.charCodeAt(index);
|
|
188
|
-
hash = Math.imul(hash, 0x01000193);
|
|
189
|
-
}
|
|
190
|
-
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=AudioEffectsAnalysisFixtures.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AudioEffectsAnalysisFixtures.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioEffectsAnalysisFixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export type AudioOcclusionLevel = "none" | "light" | "medium" | "heavy" | "complete";
|
|
2
|
-
export interface AudioEnvironmentFixtureOptions {
|
|
3
|
-
readonly sourcePosition?: readonly [number, number, number];
|
|
4
|
-
readonly listenerPosition?: readonly [number, number, number];
|
|
5
|
-
readonly sourceVelocity?: readonly [number, number, number];
|
|
6
|
-
readonly listenerVelocity?: readonly [number, number, number];
|
|
7
|
-
readonly obstacleCount?: number;
|
|
8
|
-
readonly reverbZoneRadius?: number;
|
|
9
|
-
readonly reverbZoneDistance?: number;
|
|
10
|
-
readonly baseFrequencyHz?: number;
|
|
11
|
-
}
|
|
12
|
-
export interface AudioEnvironmentFixture {
|
|
13
|
-
readonly source: "origin-master-spatial-audio-environment-adapted";
|
|
14
|
-
readonly distance: number;
|
|
15
|
-
readonly occlusion: {
|
|
16
|
-
readonly level: AudioOcclusionLevel;
|
|
17
|
-
readonly obstacleCount: number;
|
|
18
|
-
readonly lowpassHz: number;
|
|
19
|
-
readonly volume: number;
|
|
20
|
-
};
|
|
21
|
-
readonly doppler: {
|
|
22
|
-
readonly relativeVelocity: number;
|
|
23
|
-
readonly approaching: boolean;
|
|
24
|
-
readonly pitchFactor: number;
|
|
25
|
-
readonly frequencyShiftHz: number;
|
|
26
|
-
};
|
|
27
|
-
readonly reverb: {
|
|
28
|
-
readonly zoneRadius: number;
|
|
29
|
-
readonly zoneDistance: number;
|
|
30
|
-
readonly blend: number;
|
|
31
|
-
readonly wetLevel: number;
|
|
32
|
-
readonly dryLevel: number;
|
|
33
|
-
};
|
|
34
|
-
readonly hash: string;
|
|
35
|
-
readonly claimBoundary: string;
|
|
36
|
-
}
|
|
37
|
-
export declare function sampleAudioEnvironmentFixture(options?: AudioEnvironmentFixtureOptions): AudioEnvironmentFixture;
|
|
38
|
-
//# sourceMappingURL=SpatialAudioFixtures.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialAudioFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/SpatialAudioFixtures.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAErF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,iDAAiD,CAAC;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;QACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;QAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;KACnC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAUD,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,8BAAmC,GAAG,uBAAuB,CA+CnH"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
const OCCLUSION = {
|
|
2
|
-
none: { lowpassHz: 20_000, volume: 1 },
|
|
3
|
-
light: { lowpassHz: 8_000, volume: 0.9 },
|
|
4
|
-
medium: { lowpassHz: 3_000, volume: 0.7 },
|
|
5
|
-
heavy: { lowpassHz: 800, volume: 0.4 },
|
|
6
|
-
complete: { lowpassHz: 200, volume: 0.1 }
|
|
7
|
-
};
|
|
8
|
-
export function sampleAudioEnvironmentFixture(options = {}) {
|
|
9
|
-
const sourcePosition = options.sourcePosition ?? [0.85, 0.15, 0];
|
|
10
|
-
const listenerPosition = options.listenerPosition ?? [0, 0, 3];
|
|
11
|
-
const sourceVelocity = options.sourceVelocity ?? [-2.5, 0.2, 0];
|
|
12
|
-
const listenerVelocity = options.listenerVelocity ?? [0.7, 0, 0];
|
|
13
|
-
const obstacleCount = Math.max(0, Math.floor(options.obstacleCount ?? 2));
|
|
14
|
-
const distance = vectorLength(sub(sourcePosition, listenerPosition));
|
|
15
|
-
const direction = normalize(sub(listenerPosition, sourcePosition));
|
|
16
|
-
const relativeVelocity = dot(sub(sourceVelocity, listenerVelocity), direction);
|
|
17
|
-
const approaching = relativeVelocity > 0;
|
|
18
|
-
const speedOfSound = 343;
|
|
19
|
-
const pitchFactor = clamp(speedOfSound / Math.max(1, speedOfSound - relativeVelocity), 0.5, 2);
|
|
20
|
-
const baseFrequencyHz = options.baseFrequencyHz ?? 440;
|
|
21
|
-
const level = occlusionLevel(obstacleCount);
|
|
22
|
-
const occlusion = OCCLUSION[level];
|
|
23
|
-
const zoneRadius = Math.max(0.001, options.reverbZoneRadius ?? 8);
|
|
24
|
-
const zoneDistance = Math.max(0, options.reverbZoneDistance ?? distance);
|
|
25
|
-
const blend = clamp(1 - zoneDistance / zoneRadius, 0, 1);
|
|
26
|
-
const fixture = {
|
|
27
|
-
source: "origin-master-spatial-audio-environment-adapted",
|
|
28
|
-
distance: round(distance),
|
|
29
|
-
occlusion: {
|
|
30
|
-
level,
|
|
31
|
-
obstacleCount,
|
|
32
|
-
lowpassHz: occlusion.lowpassHz,
|
|
33
|
-
volume: occlusion.volume
|
|
34
|
-
},
|
|
35
|
-
doppler: {
|
|
36
|
-
relativeVelocity: round(relativeVelocity),
|
|
37
|
-
approaching,
|
|
38
|
-
pitchFactor: round(pitchFactor),
|
|
39
|
-
frequencyShiftHz: round(baseFrequencyHz * (pitchFactor - 1))
|
|
40
|
-
},
|
|
41
|
-
reverb: {
|
|
42
|
-
zoneRadius: round(zoneRadius),
|
|
43
|
-
zoneDistance: round(zoneDistance),
|
|
44
|
-
blend: round(blend),
|
|
45
|
-
wetLevel: round(0.55 * blend),
|
|
46
|
-
dryLevel: round(0.85 * (1 - blend * 0.5))
|
|
47
|
-
},
|
|
48
|
-
hash: "",
|
|
49
|
-
claimBoundary: "Spatial audio environment fixture adapts old occlusion, doppler, and reverb-zone math for deterministic telemetry; it does not implement authored audio middleware or Unity/Unreal acoustic parity."
|
|
50
|
-
};
|
|
51
|
-
return {
|
|
52
|
-
...fixture,
|
|
53
|
-
hash: stableHash(`${fixture.distance}|${fixture.occlusion.level}|${fixture.occlusion.obstacleCount}|${fixture.doppler.pitchFactor}|${fixture.reverb.blend}`)
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function occlusionLevel(obstacleCount) {
|
|
57
|
-
if (obstacleCount <= 0)
|
|
58
|
-
return "none";
|
|
59
|
-
if (obstacleCount === 1)
|
|
60
|
-
return "light";
|
|
61
|
-
if (obstacleCount === 2)
|
|
62
|
-
return "medium";
|
|
63
|
-
if (obstacleCount === 3)
|
|
64
|
-
return "heavy";
|
|
65
|
-
return "complete";
|
|
66
|
-
}
|
|
67
|
-
function sub(left, right) {
|
|
68
|
-
return [left[0] - right[0], left[1] - right[1], left[2] - right[2]];
|
|
69
|
-
}
|
|
70
|
-
function dot(left, right) {
|
|
71
|
-
return left[0] * right[0] + left[1] * right[1] + left[2] * right[2];
|
|
72
|
-
}
|
|
73
|
-
function normalize(value) {
|
|
74
|
-
const length = vectorLength(value);
|
|
75
|
-
return length > 0 ? [value[0] / length, value[1] / length, value[2] / length] : [0, 0, 0];
|
|
76
|
-
}
|
|
77
|
-
function vectorLength(value) {
|
|
78
|
-
return Math.hypot(value[0], value[1], value[2]);
|
|
79
|
-
}
|
|
80
|
-
function clamp(value, min, max) {
|
|
81
|
-
return Math.max(min, Math.min(max, Number.isFinite(value) ? value : min));
|
|
82
|
-
}
|
|
83
|
-
function round(value) {
|
|
84
|
-
return Number(value.toFixed(4));
|
|
85
|
-
}
|
|
86
|
-
function stableHash(value) {
|
|
87
|
-
let hash = 0x811c9dc5;
|
|
88
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
89
|
-
hash ^= value.charCodeAt(index);
|
|
90
|
-
hash = Math.imul(hash, 0x01000193);
|
|
91
|
-
}
|
|
92
|
-
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=SpatialAudioFixtures.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialAudioFixtures.js","sourceRoot":"","sources":["../../../../packages/audio/src/SpatialAudioFixtures.ts"],"names":[],"mappings":"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"}
|