@aura3d/audio 1.0.6

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 (84) hide show
  1. package/README.md +16 -0
  2. package/dist/AdaptiveMusicFixtures.d.ts +36 -0
  3. package/dist/AdaptiveMusicFixtures.d.ts.map +1 -0
  4. package/dist/AdaptiveMusicFixtures.js +90 -0
  5. package/dist/AdaptiveMusicFixtures.js.map +1 -0
  6. package/dist/AudioBus.d.ts +13 -0
  7. package/dist/AudioBus.d.ts.map +1 -0
  8. package/dist/AudioBus.js +32 -0
  9. package/dist/AudioBus.js.map +1 -0
  10. package/dist/AudioClip.d.ts +13 -0
  11. package/dist/AudioClip.d.ts.map +1 -0
  12. package/dist/AudioClip.js +18 -0
  13. package/dist/AudioClip.js.map +1 -0
  14. package/dist/AudioContextManager.d.ts +31 -0
  15. package/dist/AudioContextManager.d.ts.map +1 -0
  16. package/dist/AudioContextManager.js +49 -0
  17. package/dist/AudioContextManager.js.map +1 -0
  18. package/dist/AudioEffect.d.ts +8 -0
  19. package/dist/AudioEffect.d.ts.map +1 -0
  20. package/dist/AudioEffect.js +2 -0
  21. package/dist/AudioEffect.js.map +1 -0
  22. package/dist/AudioEffectsAnalysisFixtures.d.ts +99 -0
  23. package/dist/AudioEffectsAnalysisFixtures.d.ts.map +1 -0
  24. package/dist/AudioEffectsAnalysisFixtures.js +192 -0
  25. package/dist/AudioEffectsAnalysisFixtures.js.map +1 -0
  26. package/dist/AudioListener.d.ts +12 -0
  27. package/dist/AudioListener.d.ts.map +1 -0
  28. package/dist/AudioListener.js +11 -0
  29. package/dist/AudioListener.js.map +1 -0
  30. package/dist/AudioMixer.d.ts +12 -0
  31. package/dist/AudioMixer.d.ts.map +1 -0
  32. package/dist/AudioMixer.js +33 -0
  33. package/dist/AudioMixer.js.map +1 -0
  34. package/dist/AudioSource.d.ts +25 -0
  35. package/dist/AudioSource.d.ts.map +1 -0
  36. package/dist/AudioSource.js +58 -0
  37. package/dist/AudioSource.js.map +1 -0
  38. package/dist/AudioSystem.d.ts +13 -0
  39. package/dist/AudioSystem.d.ts.map +1 -0
  40. package/dist/AudioSystem.js +28 -0
  41. package/dist/AudioSystem.js.map +1 -0
  42. package/dist/SceneAudioBridge.d.ts +19 -0
  43. package/dist/SceneAudioBridge.d.ts.map +1 -0
  44. package/dist/SceneAudioBridge.js +37 -0
  45. package/dist/SceneAudioBridge.js.map +1 -0
  46. package/dist/SpatialAudio.d.ts +17 -0
  47. package/dist/SpatialAudio.d.ts.map +1 -0
  48. package/dist/SpatialAudio.js +22 -0
  49. package/dist/SpatialAudio.js.map +1 -0
  50. package/dist/SpatialAudioFixtures.d.ts +38 -0
  51. package/dist/SpatialAudioFixtures.d.ts.map +1 -0
  52. package/dist/SpatialAudioFixtures.js +94 -0
  53. package/dist/SpatialAudioFixtures.js.map +1 -0
  54. package/dist/effects/Filter.d.ts +13 -0
  55. package/dist/effects/Filter.d.ts.map +1 -0
  56. package/dist/effects/Filter.js +31 -0
  57. package/dist/effects/Filter.js.map +1 -0
  58. package/dist/effects/Reverb.d.ts +12 -0
  59. package/dist/effects/Reverb.d.ts.map +1 -0
  60. package/dist/effects/Reverb.js +23 -0
  61. package/dist/effects/Reverb.js.map +1 -0
  62. package/dist/index.d.ts +25 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +15 -0
  65. package/dist/index.js.map +1 -0
  66. package/package.json +16 -0
  67. package/src/AdaptiveMusicFixtures.ts +132 -0
  68. package/src/AudioBus.ts +39 -0
  69. package/src/AudioClip.ts +26 -0
  70. package/src/AudioContextManager.ts +74 -0
  71. package/src/AudioEffect.ts +7 -0
  72. package/src/AudioEffectsAnalysisFixtures.ts +311 -0
  73. package/src/AudioListener.ts +17 -0
  74. package/src/AudioMixer.ts +36 -0
  75. package/src/AudioSource.ts +75 -0
  76. package/src/AudioSystem.ts +34 -0
  77. package/src/SceneAudioBridge.ts +49 -0
  78. package/src/SpatialAudio.ts +36 -0
  79. package/src/SpatialAudioFixtures.ts +137 -0
  80. package/src/effects/Filter.ts +39 -0
  81. package/src/effects/Reverb.ts +30 -0
  82. package/src/index.ts +33 -0
  83. package/tests/audio.test.ts +121 -0
  84. package/tsconfig.json +7 -0
package/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # @aura3d/audio
2
+
3
+ `@aura3d/audio` owns browser audio-context lifecycle control, clips, sources, buses, mixing, listener transforms, spatial attenuation, effects, and scene audio bridges.
4
+
5
+ ## Public API
6
+
7
+ - `AudioSystem`, `AudioContextManager`: locked/unlocked lifecycle, disposal, and browser context abstraction.
8
+ - `AudioClip`, `AudioSource`: clip buffers, playback state, gain, looping, start/stop controls, and source disposal.
9
+ - `AudioBus`, `AudioMixer`: grouped routing and gain mixing.
10
+ - `AudioListener`, `SpatialAudio`: listener transforms, distance attenuation, pan data, and spatial parameters.
11
+ - `SceneAudioBridge`: scene-node to audio-source transform synchronization.
12
+ - `FilterEffect`, `ReverbEffect`, `AudioEffect`: effect contracts for filter and reverb-style processing.
13
+
14
+ ## Verification
15
+
16
+ Audio lifecycle, source state, bus/mixer behavior, spatial calculations, scene bridges, and browser unlock/playback behavior are covered by `tests/unit/workstream5-input-audio-scripting-editor.test.ts`, `tests/unit/workstream5-runtime.test.ts`, and `tests/browser/audio-browser.spec.ts`. Export and import consistency is covered by `pnpm verify:exports` and `pnpm verify:imports`.
@@ -0,0 +1,36 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,90 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdaptiveMusicFixtures.js","sourceRoot":"","sources":["../../../../packages/audio/src/AdaptiveMusicFixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AudioContextLike } from "./AudioContextManager";
2
+ export declare class AudioBus {
3
+ readonly name: string;
4
+ readonly input: GainNode;
5
+ readonly output: GainNode;
6
+ private muted;
7
+ private storedVolume;
8
+ constructor(name: string, context: AudioContextLike, destination?: AudioNode);
9
+ setVolume(value: number): void;
10
+ mute(value?: boolean): void;
11
+ dispose(): void;
12
+ }
13
+ //# sourceMappingURL=AudioBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioBus.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioBus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,QAAQ;IAOjB,QAAQ,CAAC,IAAI,EAAE,MAAM;IANvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAK;gBAGd,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,SAAS;IAQzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU9B,IAAI,CAAC,KAAK,UAAO,GAAG,IAAI;IAKxB,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,32 @@
1
+ export class AudioBus {
2
+ name;
3
+ input;
4
+ output;
5
+ muted = false;
6
+ storedVolume = 1;
7
+ constructor(name, context, destination) {
8
+ this.name = name;
9
+ this.input = context.createGain();
10
+ this.output = context.createGain();
11
+ this.input.connect(this.output);
12
+ this.output.connect(destination ?? context.destination);
13
+ }
14
+ setVolume(value) {
15
+ if (!Number.isFinite(value) || value < 0) {
16
+ throw new Error("Audio bus volume must be a non-negative finite number");
17
+ }
18
+ this.storedVolume = value;
19
+ if (!this.muted) {
20
+ this.output.gain.value = value;
21
+ }
22
+ }
23
+ mute(value = true) {
24
+ this.muted = value;
25
+ this.output.gain.value = value ? 0 : this.storedVolume;
26
+ }
27
+ dispose() {
28
+ this.input.disconnect();
29
+ this.output.disconnect();
30
+ }
31
+ }
32
+ //# sourceMappingURL=AudioBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioBus.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioBus.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,QAAQ;IAOR;IANF,KAAK,CAAW;IAChB,MAAM,CAAW;IAClB,KAAK,GAAG,KAAK,CAAC;IACd,YAAY,GAAG,CAAC,CAAC;IAEzB,YACW,IAAY,EACrB,OAAyB,EACzB,WAAuB;QAFd,SAAI,GAAJ,IAAI,CAAQ;QAIrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,GAAG,IAAI;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IACzD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ export interface AudioClipOptions {
2
+ readonly name?: string;
3
+ readonly buffer: AudioBuffer;
4
+ }
5
+ export declare class AudioClip {
6
+ readonly name?: string;
7
+ readonly buffer: AudioBuffer;
8
+ constructor(options: AudioClipOptions);
9
+ get duration(): number;
10
+ get channels(): number;
11
+ get sampleRate(): number;
12
+ }
13
+ //# sourceMappingURL=AudioClip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioClip.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioClip.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,OAAO,EAAE,gBAAgB;IAKrC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;CACF"}
@@ -0,0 +1,18 @@
1
+ export class AudioClip {
2
+ name;
3
+ buffer;
4
+ constructor(options) {
5
+ this.name = options.name;
6
+ this.buffer = options.buffer;
7
+ }
8
+ get duration() {
9
+ return this.buffer.duration;
10
+ }
11
+ get channels() {
12
+ return this.buffer.numberOfChannels;
13
+ }
14
+ get sampleRate() {
15
+ return this.buffer.sampleRate;
16
+ }
17
+ }
18
+ //# sourceMappingURL=AudioClip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioClip.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioClip.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,SAAS;IACX,IAAI,CAAU;IACd,MAAM,CAAc;IAE7B,YAAY,OAAyB;QACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ export type AudioContextState = "locked" | "running" | "suspended" | "closed";
2
+ export interface AudioContextLike {
3
+ readonly state: AudioContextState | string;
4
+ readonly destination: AudioNode;
5
+ currentTime: number;
6
+ resume(): Promise<void>;
7
+ suspend(): Promise<void>;
8
+ close(): Promise<void>;
9
+ createGain(): GainNode;
10
+ createBufferSource(): AudioBufferSourceNode;
11
+ createPanner(): PannerNode;
12
+ createBiquadFilter(): BiquadFilterNode;
13
+ createConvolver(): ConvolverNode;
14
+ }
15
+ export interface AudioContextManagerOptions {
16
+ readonly context?: AudioContextLike;
17
+ readonly createContext?: () => AudioContextLike;
18
+ }
19
+ export declare class AudioContextManager {
20
+ private readonly options;
21
+ private contextRef?;
22
+ private unlocked;
23
+ constructor(options?: AudioContextManagerOptions);
24
+ get context(): AudioContextLike;
25
+ get state(): AudioContextState;
26
+ unlock(): Promise<void>;
27
+ suspend(): Promise<void>;
28
+ resume(): Promise<void>;
29
+ dispose(): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=AudioContextManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioContextManager.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioContextManager.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,IAAI,QAAQ,CAAC;IACvB,kBAAkB,IAAI,qBAAqB,CAAC;IAC5C,YAAY,IAAI,UAAU,CAAC;IAC3B,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,eAAe,IAAI,aAAa,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,gBAAgB,CAAC;CACjD;AAED,qBAAa,mBAAmB;IAIlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAS;gBAEI,OAAO,GAAE,0BAA+B;IAIrE,IAAI,OAAO,IAAI,gBAAgB,CAM9B;IAED,IAAI,KAAK,IAAI,iBAAiB,CAW7B;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B"}
@@ -0,0 +1,49 @@
1
+ export class AudioContextManager {
2
+ options;
3
+ contextRef;
4
+ unlocked = false;
5
+ constructor(options = {}) {
6
+ this.options = options;
7
+ this.contextRef = options.context;
8
+ }
9
+ get context() {
10
+ if (!this.contextRef) {
11
+ const createContext = this.options.createContext ?? (() => new AudioContext());
12
+ this.contextRef = createContext();
13
+ }
14
+ return this.contextRef;
15
+ }
16
+ get state() {
17
+ if (!this.contextRef) {
18
+ return "locked";
19
+ }
20
+ if (this.contextRef.state === "running") {
21
+ return "running";
22
+ }
23
+ if (this.contextRef.state === "closed") {
24
+ return "closed";
25
+ }
26
+ return this.unlocked ? "suspended" : "locked";
27
+ }
28
+ async unlock() {
29
+ if (this.state === "closed") {
30
+ throw new Error("Cannot unlock a closed audio context");
31
+ }
32
+ await this.context.resume();
33
+ this.unlocked = true;
34
+ }
35
+ async suspend() {
36
+ if (this.state !== "closed") {
37
+ await this.context.suspend();
38
+ }
39
+ }
40
+ async resume() {
41
+ await this.unlock();
42
+ }
43
+ async dispose() {
44
+ if (this.contextRef && this.contextRef.state !== "closed") {
45
+ await this.contextRef.close();
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=AudioContextManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioContextManager.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioContextManager.ts"],"names":[],"mappings":"AAqBA,MAAM,OAAO,mBAAmB;IAID;IAHrB,UAAU,CAAoB;IAC9B,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAA6B,UAAsC,EAAE;QAAxC,YAAO,GAAP,OAAO,CAAiC;QACnE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,IAAI,OAAO;QACT,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,EAAiC,CAAC,CAAC;YAC9G,IAAI,CAAC,UAAU,GAAG,aAAa,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export interface AudioEffect {
2
+ readonly input: AudioNode;
3
+ readonly output: AudioNode;
4
+ connect(destination: AudioNode): AudioNode;
5
+ disconnect(): void;
6
+ dispose(): void;
7
+ }
8
+ //# sourceMappingURL=AudioEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioEffect.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioEffect.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC;IAC3C,UAAU,IAAI,IAAI,CAAC;IACnB,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AudioEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioEffect.js","sourceRoot":"","sources":["../../../../packages/audio/src/AudioEffect.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioEffectsAnalysisFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/audio/src/AudioEffectsAnalysisFixtures.ts"],"names":[],"mappings":"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"}