@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.
Files changed (36) hide show
  1. package/dist/AudioBus.d.ts +20 -2
  2. package/dist/AudioBus.d.ts.map +1 -1
  3. package/dist/AudioBus.js.map +1 -1
  4. package/dist/AudioFileManager.d.ts +7 -2
  5. package/dist/AudioFileManager.d.ts.map +1 -1
  6. package/dist/AudioFileManager.js +13 -0
  7. package/dist/AudioFileManager.js.map +1 -1
  8. package/dist/AudioMixer.d.ts +2 -2
  9. package/dist/AudioSource.d.ts +10 -2
  10. package/dist/AudioSource.d.ts.map +1 -1
  11. package/dist/AudioSource.js +56 -7
  12. package/dist/AudioSource.js.map +1 -1
  13. package/dist/AudioSystem.d.ts +2 -2
  14. package/dist/AudioTimelineTrack.d.ts +2 -2
  15. package/dist/AudioWaveform.d.ts +1 -1
  16. package/dist/SceneAudioBridge.d.ts +2 -2
  17. package/dist/SpatialAudio.d.ts +2 -2
  18. package/dist/effects/Filter.d.ts +2 -2
  19. package/dist/effects/Reverb.d.ts +2 -2
  20. package/dist/index.d.ts +25 -31
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +0 -3
  23. package/dist/index.js.map +1 -1
  24. package/package.json +2 -2
  25. package/dist/AdaptiveMusicFixtures.d.ts +0 -36
  26. package/dist/AdaptiveMusicFixtures.d.ts.map +0 -1
  27. package/dist/AdaptiveMusicFixtures.js +0 -90
  28. package/dist/AdaptiveMusicFixtures.js.map +0 -1
  29. package/dist/AudioEffectsAnalysisFixtures.d.ts +0 -99
  30. package/dist/AudioEffectsAnalysisFixtures.d.ts.map +0 -1
  31. package/dist/AudioEffectsAnalysisFixtures.js +0 -192
  32. package/dist/AudioEffectsAnalysisFixtures.js.map +0 -1
  33. package/dist/SpatialAudioFixtures.d.ts +0 -38
  34. package/dist/SpatialAudioFixtures.d.ts.map +0 -1
  35. package/dist/SpatialAudioFixtures.js +0 -94
  36. package/dist/SpatialAudioFixtures.js.map +0 -1
@@ -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: AudioContextLike, destination?: AudioNode);
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
@@ -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,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"}
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"}
@@ -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,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
+ {"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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"}
@@ -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":"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"}
1
+ {"version":3,"file":"AudioFileManager.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioFileManager.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -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;IAQV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,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;gBAER,OAAO,EAAE,kBAAkB;IAQxD,IAAI,KAAK,IAAI,gBAAgB,CAE5B;IAED,IAAI,CAAC,IAAI,SAAI,GAAG,IAAI;IAmBpB,IAAI,CAAC,IAAI,SAAI,GAAG,IAAI;IAWpB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO9B,OAAO,IAAI,IAAI;CAIhB"}
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"}
@@ -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.stop();
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
- source.start(when);
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
- if (this.node) {
39
- this.node.stop(when);
40
- this.node.disconnect();
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
@@ -1 +1 @@
1
- {"version":3,"file":"AudioSource.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioSource.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,WAAW;IAQO;IAP7B,IAAI,CAAa;IACjB,IAAI,CAAU;IACL,IAAI,CAAW;IAEhB,QAAQ,GAAqB,MAAM,CAAC;IACpC,IAAI,CAAyB;IAErC,YAA6B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;QACtD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,IAAI,GAAG,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACzD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;YACpB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACxD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,IAAI,GAAG,CAAC;QACX,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5B,CAAC;IACH,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,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"AudioSource.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioSource.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -1,4 +1,4 @@
1
- import type { AudioClip } from "./AudioClip";
1
+ import type { AudioClip } from "./AudioClip.js";
2
2
  export interface AudioWaveformOptions {
3
3
  readonly peakCount?: number;
4
4
  readonly samplesPerPeak?: number;
@@ -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;
@@ -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;
@@ -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;
@@ -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 { sampleAudioEffectsAnalysisFixture } from "./AudioEffectsAnalysisFixtures";
11
- export type { AudioChorusPreset, AudioCompressorPreset, AudioDelayPreset, AudioDistortionCurve, AudioEffectsAnalysisFixture, AudioEffectsAnalysisFixtureOptions, AudioEqBandFixture, AudioSpectrumBandFixture } from "./AudioEffectsAnalysisFixtures";
12
- export { sampleAdaptiveMusicFixture } from "./AdaptiveMusicFixtures";
13
- export type { AdaptiveMusicCrossfadeCurve, AdaptiveMusicFixture, AdaptiveMusicFixtureOptions, AdaptiveMusicFixtureState, AdaptiveMusicLayerMix } from "./AdaptiveMusicFixtures";
14
- export { sampleAudioEnvironmentFixture } from "./SpatialAudioFixtures";
15
- export type { AudioEnvironmentFixture, AudioEnvironmentFixtureOptions, AudioOcclusionLevel } from "./SpatialAudioFixtures";
16
- export { AudioContextManager } from "./AudioContextManager";
17
- export type { AudioContextLike, AudioContextManagerOptions, AudioContextState } from "./AudioContextManager";
18
- export type { AudioEffect } from "./AudioEffect";
19
- export { AudioListener } from "./AudioListener";
20
- export type { Vec3Like } from "./AudioListener";
21
- export { AudioMixer, createAudioMixerEvidence, createAnimationAudioMixer } from "./AudioMixer";
22
- export type { AudioMixerBusEvidence, AudioMixerEvidence, AnimationAudioMixer, AnimationAudioMixerOptions } from "./AudioMixer";
23
- export { AudioSource } from "./AudioSource";
24
- export type { AudioSourceOptions, AudioSourceState } from "./AudioSource";
25
- export { AudioSystem } from "./AudioSystem";
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/index.ts"],"names":[],"mappings":"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"}
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;AAalF,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,iCAAiC,EAAE,MAAM,gCAAgC,CAAC;AAWnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEvE,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"}
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": "1.5.2",
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": "1.5.2"
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":"AAAA,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AACpH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AACnH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAChG,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;AAE9G,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,8CAA8C,CAAC;IAChE,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,eAAe,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACvI,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;QACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;KACpC,CAAC;IACF,QAAQ,CAAC,EAAE,EAAE;QACX,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;QAC9C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,MAAM,EAAE,oCAAoC,CAAC;QACtD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;KACzC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,MAAM,EAAE,qCAAqC,CAAC;QACvD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,MAAM,EAAE,yCAAyC,CAAC;QAC3D,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,MAAM,EAAE,qCAAqC,CAAC;QACvD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;QACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,KAAK,EAAE,SAAS,wBAAwB,EAAE,CAAC;QACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;QACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;KACpC,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AA4BD,wBAAgB,iCAAiC,CAAC,OAAO,GAAE,kCAAuC,GAAG,2BAA2B,CA6E/H"}
@@ -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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"}