@utsp/audio 0.5.0-nightly.20251204224600.55bf8ac → 0.6.0-nightly.20251207012530.05b8403
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AudioManager.js +0 -4
- package/dist/AudioManager.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/AudioManager.js
CHANGED
|
@@ -1150,10 +1150,6 @@ export class AudioManager {
|
|
|
1150
1150
|
// Clamp to valid range
|
|
1151
1151
|
pan = Math.max(-1, Math.min(1, pan));
|
|
1152
1152
|
}
|
|
1153
|
-
this.log(`Spatial: listener(${listenerX.toFixed(1)}, ${listenerY.toFixed(1)}) ` +
|
|
1154
|
-
`sound(${soundX.toFixed(1)}, ${soundY.toFixed(1)}) ` +
|
|
1155
|
-
`dist=${distance.toFixed(1)} vol=${distanceVolume.toFixed(2)} pan=${pan.toFixed(2)} ` +
|
|
1156
|
-
`[dx=${dx.toFixed(1)} maxDist=${maxDistance} panSpread=${panSpread}]`);
|
|
1157
1153
|
return { pan, distanceVolume };
|
|
1158
1154
|
}
|
|
1159
1155
|
/**
|
package/dist/AudioManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioManager.js","sourceRoot":"","sources":["../src/AudioManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AudioManager.js","sourceRoot":"","sources":["../src/AudioManager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var y=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var w=(f,e,t)=>e in f?y(f,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):f[e]=t;var S=(f,e)=>y(f,"name",{value:e,configurable:!0});var I=(f,e)=>{for(var t in e)y(f,t,{get:e[t],enumerable:!0})},M=(f,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of T(e))!B.call(f,i)&&i!==t&&y(f,i,{get:()=>e[i],enumerable:!(n=$(e,i))||n.enumerable});return f};var F=f=>M(y({},"__esModule",{value:!0}),f);var c=(f,e,t)=>(w(f,typeof e!="symbol"?e+"":e,t),t);var G={};I(G,{AudioManager:()=>A,SoundBank:()=>b});module.exports=F(G);var N=class N{constructor(e,t=!1){c(this,"sounds",new Map);c(this,"nameToId",new Map);c(this,"audioContext");c(this,"debug");this.audioContext=e,this.debug=t,this.log("SoundBank created")}async loadFromData(e,t,n){this.log(`Loading sound from data: ${t} (${n.length} bytes)`);try{let i=await this.decodeAudio(n);this.store(e,t,i,{source:"file",originalSize:n.length,loadedAt:Date.now()}),this.log(`\u2713 Loaded: ${t} (${i.duration.toFixed(2)}s)`)}catch(i){throw console.error(`[SoundBank] Failed to decode sound "${t}":`,i),i}}async loadFromUrl(e,t,n,i){this.log(`Loading sound from URL: ${t} \u2192 ${n}`);try{let o=await fetch(n);if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);let s=o.headers.get("content-length"),u=s?parseInt(s,10):0,a;if(u>0&&i&&o.body){let d=o.body.getReader(),l=[],h=0;for(;;){let{done:p,value:m}=await d.read();if(p)break;l.push(m),h+=m.length,i(h,u)}let v=new Uint8Array(h),x=0;for(let p of l)v.set(p,x),x+=p.length;a=v.buffer}else a=await o.arrayBuffer();let r=await this.decodeAudio(new Uint8Array(a));this.store(e,t,r,{source:"external",originalSize:a.byteLength,originalUrl:n,loadedAt:Date.now()}),this.log(`\u2713 Loaded from URL: ${t} (${r.duration.toFixed(2)}s)`)}catch(o){throw console.error(`[SoundBank] Failed to load sound "${t}" from ${n}:`,o),o}}loadFromBuffer(e,t,n){this.log(`Loading sound from buffer: ${t}`),this.store(e,t,n,{source:"procedural",loadedAt:Date.now()}),this.log(`\u2713 Loaded from buffer: ${t} (${n.duration.toFixed(2)}s)`)}store(e,t,n,i){if(this.sounds.has(e)){let s=this.sounds.get(e);this.log(`Replacing sound ID ${e} (was: ${s.name}, now: ${t})`),this.nameToId.delete(s.name)}if(this.nameToId.has(t)){let s=this.nameToId.get(t);s!==e&&this.log(`Warning: Sound name "${t}" already exists with ID ${s}`)}let o={soundId:e,name:t,buffer:n,duration:n.duration,metadata:i};this.sounds.set(e,o),this.nameToId.set(t,e)}async decodeAudio(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),this.audioContext.decodeAudioData(t)}get(e){if(typeof e=="number")return this.sounds.get(e);let t=this.nameToId.get(e);return t!==void 0?this.sounds.get(t):void 0}has(e){return this.get(e)!==void 0}getAll(){return Array.from(this.sounds.values())}getNames(){return Array.from(this.nameToId.keys())}get size(){return this.sounds.size}remove(e){let t=this.get(e);return t?(this.sounds.delete(t.soundId),this.nameToId.delete(t.name),this.log(`Removed sound: ${t.name}`),!0):!1}clear(){let e=this.sounds.size;this.sounds.clear(),this.nameToId.clear(),this.log(`Cleared ${e} sounds`)}getStats(){let e=this.getAll(),t=0;for(let n of e){let{buffer:i}=n;t+=i.length*i.numberOfChannels*4}return{totalSounds:e.length,totalDuration:e.reduce((n,i)=>n+i.duration,0),estimatedMemory:t,bySource:{file:e.filter(n=>n.metadata.source==="file").length,external:e.filter(n=>n.metadata.source==="external").length,procedural:e.filter(n=>n.metadata.source==="procedural").length}}}log(e){this.debug&&console.warn(`[SoundBank] ${e}`)}};S(N,"SoundBank");var b=N;var C=class C{constructor(e={}){c(this,"audioContext",null);c(this,"masterGainNode",null);c(this,"soundBank",null);c(this,"options");c(this,"initialized",!1);c(this,"nextInstanceId",1);c(this,"instances",new Map);c(this,"instancesBySound",new Map);c(this,"activeSounds",new Set);c(this,"spatialSounds",new Map);c(this,"spatialConfig",{listenerX:0,listenerY:0,maxDistance:200,referenceDistance:20,rolloffFactor:1,panSpread:1});c(this,"reverbConvolver",null);c(this,"reverbGain",null);this.options={debug:e.debug??!1,masterVolume:e.masterVolume??1},this.log("AudioManager created")}initialize(){if(this.initialized&&this.audioContext)return this.log("AudioContext already initialized"),!0;try{let e=window.AudioContext||window.webkitAudioContext;return e?(this.audioContext=new e,this.log(`AudioContext initialized (state: ${this.audioContext.state}, sampleRate: ${this.audioContext.sampleRate}Hz)`),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.gain.value=this.options.masterVolume,this.masterGainNode.connect(this.audioContext.destination),this.audioContext.state==="suspended"&&this.audioContext.resume().then(()=>{this.log("AudioContext resumed")}),this.soundBank=new b(this.audioContext,this.options.debug),this.initialized=!0,!0):(console.warn("[AudioManager] Web Audio API not supported"),!1)}catch(e){return console.error("[AudioManager] Failed to initialize AudioContext:",e),!1}}isInitialized(){return this.initialized&&this.audioContext!==null}getContext(){return this.audioContext}getMasterGain(){return this.masterGainNode}setMasterVolume(e){this.options.masterVolume=Math.max(0,Math.min(1,e)),this.masterGainNode&&(this.masterGainNode.gain.value=this.options.masterVolume),this.log(`Master volume set to ${this.options.masterVolume}`)}getMasterVolume(){return this.options.masterVolume}playStartSound(){if(!this.audioContext||!this.masterGainNode){this.log("Cannot play sound: AudioContext not initialized");return}try{let e=this.audioContext,t=e.currentTime,n=[262,330,392,523],i=.06,o=.07;n.forEach((s,u)=>{let a=t+u*o,r=e.createOscillator();r.type="square",r.frequency.setValueAtTime(s,a);let d=e.createGain();d.gain.setValueAtTime(0,a),d.gain.linearRampToValueAtTime(.15,a+.005),d.gain.setValueAtTime(.15,a+i-.01),d.gain.linearRampToValueAtTime(0,a+i),r.connect(d),d.connect(this.masterGainNode),r.start(a),r.stop(a+i)}),this.log("Start sound played (retro arpeggio)")}catch(e){console.error("[AudioManager] Failed to play start sound:",e)}}playTone(e,t,n={}){if(!this.audioContext||!this.masterGainNode){this.log("Cannot play tone: AudioContext not initialized");return}let{type:i="sine",volume:o=.3,attack:s=.01,release:u=.1}=n;try{let a=this.audioContext,r=a.currentTime,d=a.createOscillator();d.type=i,d.frequency.setValueAtTime(e,r);let l=a.createGain();l.gain.setValueAtTime(0,r),l.gain.linearRampToValueAtTime(o,r+s),l.gain.setValueAtTime(o,r+t-u),l.gain.linearRampToValueAtTime(0,r+t),d.connect(l),l.connect(this.masterGainNode),d.start(r),d.stop(r+t),this.log(`Tone played: ${e}Hz for ${t}s`)}catch(a){console.error("[AudioManager] Failed to play tone:",a)}}playNote(e,t,n={}){let i=this.noteToFrequency(e);if(i===null){console.warn(`[AudioManager] Invalid note: ${e}`);return}this.playTone(i,t,n)}noteToFrequency(e){let t=/^([A-Ga-g])([#b]?)(\d)$/,n=e.match(t);if(!n)return null;let[,i,o,s]=n,u=parseInt(s,10),r={C:0,D:2,E:4,F:5,G:7,A:9,B:11}[i.toUpperCase()];if(r===void 0)return null;o==="#"?r+=1:o==="b"&&(r-=1);let d=r+(u+1)*12;return 440*Math.pow(2,(d-49)/12)}async resumeContext(){this.audioContext&&this.audioContext.state==="suspended"&&(await this.audioContext.resume(),this.log("AudioContext resumed"))}async suspendContext(){this.audioContext&&this.audioContext.state==="running"&&(await this.audioContext.suspend(),this.log("AudioContext suspended"))}getState(){return this.audioContext?.state??null}getSoundBank(){return this.soundBank}play(e,t={}){if(!this.audioContext||!this.masterGainNode||!this.soundBank)return this.log("Cannot play: not initialized"),null;let n=this.soundBank.get(e);if(!n)return console.warn(`[AudioManager] Sound not found: ${e}`),null;try{let i=this.audioContext,o=t.instanceId??this.nextInstanceId++;t.instanceId!==void 0&&t.instanceId>=this.nextInstanceId&&(this.nextInstanceId=t.instanceId+1);let s=i.createBufferSource();s.buffer=n.buffer,s.loop=t.loop??!1,s.playbackRate.value=t.pitch??1;let u=i.createGain(),a=t.volume??1,r=t.fadeIn??0,d={source:s,gainNode:u,soundName:n.name,stopped:!1,baseVolume:a,targetVolume:a,fadingOut:!1,paused:!1,pausedAt:0,startedAt:i.currentTime,loop:t.loop??!1,playbackRate:t.pitch??1,buffer:n.buffer,outputNode:u},l=a,h=a;if(t.position){let{pan:p,distanceVolume:m}=this.calculateSpatialAudio(t.position.x,t.position.y),g=i.createStereoPanner();g.pan.value=p,l=r>0?0:a*m,h=a*m,u.gain.setValueAtTime(l,i.currentTime),r>0&&(u.gain.linearRampToValueAtTime(h,i.currentTime+r),this.log(`Fade in: ${n.name} [#${o}] over ${r}s`)),s.connect(u),u.connect(g),g.connect(this.masterGainNode),d.pannerNode=g,d.position={x:t.position.x,y:t.position.y},d.targetVolume=h,d.outputNode=g,this.spatialSounds.set(s,{gainNode:u,pannerNode:g,position:{x:t.position.x,y:t.position.y},baseVolume:a}),this.log(`Playing spatial: ${n.name} [#${o}] at (${t.position.x}, ${t.position.y}) pan=${p.toFixed(2)} vol=${m.toFixed(2)}`)}else l=r>0?0:a,h=a,u.gain.setValueAtTime(l,i.currentTime),r>0&&(u.gain.linearRampToValueAtTime(h,i.currentTime+r),this.log(`Fade in: ${n.name} [#${o}] over ${r}s`)),s.connect(u),u.connect(this.masterGainNode);this.instances.set(o,d),(t.lowpass||t.highpass||t.reverb)&&this.setEffects(o,t.lowpass,t.highpass,t.reverb),this.instancesBySound.has(n.name)||this.instancesBySound.set(n.name,new Set),this.instancesBySound.get(n.name).add(o),this.activeSounds.add(s),s.onended=()=>{d.paused||this.cleanupInstance(o)},s.start(0,t.offset??0),t.position||this.log(`Playing: ${n.name} [#${o}]`);let v=this.stop.bind(this),x=this.instances;return{instanceId:o,stop:()=>{v(o)},get playing(){let p=x.get(o);return p!==void 0&&!p.stopped},sound:n}}catch(i){return console.error(`[AudioManager] Failed to play sound "${e}":`,i),null}}stop(e){return e==="all"?this.stopAll():typeof e=="number"?this.stopInstance(e)?1:0:this.stopByName(e)}fadeOut(e,t){if(!this.audioContext)return 0;let n=Math.max(.01,t);return e==="all"?this.fadeOutAll(n):typeof e=="number"?this.fadeOutInstance(e,n)?1:0:this.fadeOutByName(e,n)}fadeOutInstance(e,t){let n=this.instances.get(e);if(!n||n.stopped||n.fadingOut||!this.audioContext)return!1;let i=this.audioContext;n.fadingOut=!0;let o=n.gainNode.gain.value;return n.gainNode.gain.cancelScheduledValues(i.currentTime),n.gainNode.gain.setValueAtTime(o,i.currentTime),n.gainNode.gain.linearRampToValueAtTime(0,i.currentTime+t),setTimeout(()=>{this.stopInstance(e)},t*1e3),this.log(`Fading out instance #${e} (${n.soundName}) over ${t}s`),!0}fadeOutByName(e,t){let n=this.instancesBySound.get(e);if(!n||n.size===0)return 0;let i=0;for(let o of Array.from(n))this.fadeOutInstance(o,t)&&i++;return this.log(`Fading out ${i} instances of "${e}" over ${t}s`),i}fadeOutAll(e){let t=0;for(let n of Array.from(this.instances.keys()))this.fadeOutInstance(n,e)&&t++;return this.log(`Fading out all sounds (${t} instances) over ${e}s`),t}pause(e){return e==="all"?this.pauseAll():typeof e=="number"?this.pauseInstance(e)?1:0:this.pauseByName(e)}pauseInstance(e){let t=this.instances.get(e);if(!t||t.stopped||t.paused||t.fadingOut||!this.audioContext)return!1;let i=(this.audioContext.currentTime-t.startedAt)*t.playbackRate;if(t.loop)t.pausedAt=i%t.buffer.duration;else if(t.pausedAt=i,t.pausedAt>=t.buffer.duration)return!1;try{t.source.stop()}catch{}return t.paused=!0,this.log(`Paused instance #${e} (${t.soundName}) at ${t.pausedAt.toFixed(2)}s`),!0}pauseByName(e){let t=this.instancesBySound.get(e);if(!t||t.size===0)return 0;let n=0;for(let i of Array.from(t))this.pauseInstance(i)&&n++;return this.log(`Paused ${n} instances of "${e}"`),n}pauseAll(){let e=0;for(let t of Array.from(this.instances.keys()))this.pauseInstance(t)&&e++;return this.log(`Paused all sounds (${e} instances)`),e}resume(e){return e==="all"?this.resumeAll():typeof e=="number"?this.resumeInstance(e)?1:0:this.resumeByName(e)}resumeInstance(e){let t=this.instances.get(e);if(!t||t.stopped||!t.paused||!this.audioContext||!this.masterGainNode)return!1;let n=this.audioContext,i=n.createBufferSource();return i.buffer=t.buffer,i.loop=t.loop,i.playbackRate.value=t.playbackRate,i.connect(t.gainNode),t.source=i,t.paused=!1,t.startedAt=n.currentTime-t.pausedAt/t.playbackRate,i.onended=()=>{t.paused||this.cleanupInstance(e)},i.start(0,t.pausedAt),this.log(`Resumed instance #${e} (${t.soundName}) from ${t.pausedAt.toFixed(2)}s`),!0}resumeByName(e){let t=this.instancesBySound.get(e);if(!t||t.size===0)return 0;let n=0;for(let i of Array.from(t))this.resumeInstance(i)&&n++;return this.log(`Resumed ${n} instances of "${e}"`),n}resumeAll(){let e=0;for(let t of Array.from(this.instances.keys()))this.resumeInstance(t)&&e++;return this.log(`Resumed all sounds (${e} instances)`),e}stopInstance(e){let t=this.instances.get(e);if(!t||t.stopped)return!1;try{t.source.stop(),t.stopped=!0,this.log(`Stopped instance #${e} (${t.soundName})`)}catch{}return this.cleanupInstance(e),!0}stopByName(e){let t=this.instancesBySound.get(e);if(!t||t.size===0)return 0;let n=0;for(let i of Array.from(t))this.stopInstance(i)&&n++;return this.log(`Stopped ${n} instances of "${e}"`),n}cleanupInstance(e){let t=this.instances.get(e);if(!t)return;this.instances.delete(e);let n=this.instancesBySound.get(t.soundName);n&&(n.delete(e),n.size===0&&this.instancesBySound.delete(t.soundName)),this.activeSounds.delete(t.source),this.spatialSounds.delete(t.source)}setListenerPosition(e,t){e===this.spatialConfig.listenerX&&t===this.spatialConfig.listenerY||(this.spatialConfig.listenerX=e,this.spatialConfig.listenerY=t,this.spatialSounds.size>0&&this.updateAllSpatialSounds())}updateAllSpatialSounds(){for(let[e,t]of this.spatialSounds){if(!this.activeSounds.has(e)){this.spatialSounds.delete(e);continue}let{pan:n,distanceVolume:i}=this.calculateSpatialAudio(t.position.x,t.position.y);t.pannerNode.pan.value=n,t.gainNode.gain.value=t.baseVolume*i}}getListenerPosition(){return{x:this.spatialConfig.listenerX,y:this.spatialConfig.listenerY}}configureSpatial(e){this.log(`configureSpatial called with: ${JSON.stringify(e)}`),e.listenerX!==void 0&&(this.spatialConfig.listenerX=Math.max(0,Math.min(65535,e.listenerX))),e.listenerY!==void 0&&(this.spatialConfig.listenerY=Math.max(0,Math.min(65535,e.listenerY))),e.maxDistance!==void 0&&(this.spatialConfig.maxDistance=Math.max(1,e.maxDistance)),e.referenceDistance!==void 0&&(this.spatialConfig.referenceDistance=Math.max(1,e.referenceDistance)),e.rolloffFactor!==void 0&&(this.spatialConfig.rolloffFactor=Math.max(0,e.rolloffFactor)),e.panSpread!==void 0&&(this.spatialConfig.panSpread=Math.max(0,Math.min(1,e.panSpread))),this.log(`spatialConfig now: maxDistance=${this.spatialConfig.maxDistance}, refDist=${this.spatialConfig.referenceDistance}, panSpread=${this.spatialConfig.panSpread}`)}getSpatialConfig(){return{...this.spatialConfig}}setEffects(e,t,n,i){if(!this.audioContext||!this.masterGainNode)return;let o=this.instances.get(e);if(!o||o.stopped){this.log(`setEffects: instance ${e} not found or stopped`);return}let s=this.audioContext;t!==void 0&&(t>0?(o.lowpassNode||(o.lowpassNode=s.createBiquadFilter(),o.lowpassNode.type="lowpass",o.lowpassNode.Q.value=1,this.insertFilterNode(o,o.lowpassNode)),o.lowpassNode.frequency.setValueAtTime(t,s.currentTime),this.log(`setEffects: instance ${e} lowpass=${t}Hz`)):o.lowpassNode&&(this.removeFilterNode(o,o.lowpassNode),o.lowpassNode=void 0,this.log(`setEffects: instance ${e} lowpass disabled`))),n!==void 0&&(n>0?(o.highpassNode||(o.highpassNode=s.createBiquadFilter(),o.highpassNode.type="highpass",o.highpassNode.Q.value=1,this.insertFilterNode(o,o.highpassNode)),o.highpassNode.frequency.setValueAtTime(n,s.currentTime),this.log(`setEffects: instance ${e} highpass=${n}Hz`)):o.highpassNode&&(this.removeFilterNode(o,o.highpassNode),o.highpassNode=void 0,this.log(`setEffects: instance ${e} highpass disabled`))),i!==void 0&&(i>0?(this.ensureReverbInitialized(),!o.reverbSendNode&&this.reverbConvolver&&(o.reverbSendNode=s.createGain(),o.reverbSendNode.gain.value=0,o.outputNode.connect(o.reverbSendNode),o.reverbSendNode.connect(this.reverbConvolver)),o.reverbSendNode&&(o.reverbSendNode.gain.setValueAtTime(i,s.currentTime),this.log(`setEffects: instance ${e} reverb=${i.toFixed(2)}`))):o.reverbSendNode&&(o.reverbSendNode.gain.setValueAtTime(0,s.currentTime),this.log(`setEffects: instance ${e} reverb disabled`)))}ensureReverbInitialized(){if(this.reverbConvolver||!this.audioContext||!this.masterGainNode)return;let e=this.audioContext,t=e.sampleRate,i=Math.floor(t*.5),o=e.createBuffer(1,i,t),s=o.getChannelData(0);for(let u=0;u<i;u++){let a=u/t,r=Math.exp(-a*6);s[u]=(Math.random()*2-1)*r}this.reverbConvolver=e.createConvolver(),this.reverbConvolver.buffer=o,this.reverbGain=e.createGain(),this.reverbGain.gain.value=.5,this.reverbConvolver.connect(this.reverbGain),this.reverbGain.connect(this.masterGainNode),this.log("Shared reverb initialized")}insertFilterNode(e,t){if(this.masterGainNode){try{e.outputNode.disconnect(this.masterGainNode)}catch{}e.outputNode.connect(t),t.connect(this.masterGainNode)}}removeFilterNode(e,t){if(this.masterGainNode){try{t.disconnect()}catch{}try{e.outputNode.disconnect(t)}catch{}e.outputNode.connect(this.masterGainNode)}}calculateSpatialAudio(e,t){let{listenerX:n,listenerY:i,maxDistance:o,referenceDistance:s,panSpread:u}=this.spatialConfig,a=e-n,r=t-i,d=Math.sqrt(a*a+r*r),l;d<=s?l=1:d>=o?l=0:l=1-(d-s)/(o-s);let h=0;return o>0&&u>0&&(h=a/o*u,h=Math.max(-1,Math.min(1,h))),this.log(`Spatial: listener(${n.toFixed(1)}, ${i.toFixed(1)}) sound(${e.toFixed(1)}, ${t.toFixed(1)}) dist=${d.toFixed(1)} vol=${l.toFixed(2)} pan=${h.toFixed(2)} [dx=${a.toFixed(1)} maxDist=${o} panSpread=${u}]`),{pan:h,distanceVolume:l}}stopAll(){let e=this.instances.size;for(let[,t]of this.instances)if(!t.stopped)try{t.source.stop(),t.stopped=!0}catch{}return this.instances.clear(),this.instancesBySound.clear(),this.activeSounds.clear(),this.spatialSounds.clear(),this.log(`Stopped all sounds (${e} instances)`),e}getPlayingCount(){return this.instances.size}getActiveInstances(){return Array.from(this.instances.keys())}isPlaying(e){let t=this.instances.get(e);return t!==void 0&&!t.stopped}destroy(){this.stopAll(),this.soundBank&&(this.soundBank.clear(),this.soundBank=null),this.audioContext&&(this.audioContext.close(),this.audioContext=null),this.masterGainNode=null,this.initialized=!1,this.log("AudioManager destroyed")}log(e){this.options.debug&&console.warn(`[AudioManager] ${e}`)}};S(C,"AudioManager");var A=C;
|
|
1
|
+
"use strict";var y=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var w=(f,e,t)=>e in f?y(f,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):f[e]=t;var S=(f,e)=>y(f,"name",{value:e,configurable:!0});var I=(f,e)=>{for(var t in e)y(f,t,{get:e[t],enumerable:!0})},M=(f,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of T(e))!B.call(f,i)&&i!==t&&y(f,i,{get:()=>e[i],enumerable:!(n=$(e,i))||n.enumerable});return f};var G=f=>M(y({},"__esModule",{value:!0}),f);var c=(f,e,t)=>(w(f,typeof e!="symbol"?e+"":e,t),t);var V={};I(V,{AudioManager:()=>A,SoundBank:()=>b});module.exports=G(V);var N=class N{constructor(e,t=!1){c(this,"sounds",new Map);c(this,"nameToId",new Map);c(this,"audioContext");c(this,"debug");this.audioContext=e,this.debug=t,this.log("SoundBank created")}async loadFromData(e,t,n){this.log(`Loading sound from data: ${t} (${n.length} bytes)`);try{let i=await this.decodeAudio(n);this.store(e,t,i,{source:"file",originalSize:n.length,loadedAt:Date.now()}),this.log(`\u2713 Loaded: ${t} (${i.duration.toFixed(2)}s)`)}catch(i){throw console.error(`[SoundBank] Failed to decode sound "${t}":`,i),i}}async loadFromUrl(e,t,n,i){this.log(`Loading sound from URL: ${t} \u2192 ${n}`);try{let o=await fetch(n);if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);let s=o.headers.get("content-length"),u=s?parseInt(s,10):0,a;if(u>0&&i&&o.body){let d=o.body.getReader(),l=[],h=0;for(;;){let{done:p,value:m}=await d.read();if(p)break;l.push(m),h+=m.length,i(h,u)}let v=new Uint8Array(h),x=0;for(let p of l)v.set(p,x),x+=p.length;a=v.buffer}else a=await o.arrayBuffer();let r=await this.decodeAudio(new Uint8Array(a));this.store(e,t,r,{source:"external",originalSize:a.byteLength,originalUrl:n,loadedAt:Date.now()}),this.log(`\u2713 Loaded from URL: ${t} (${r.duration.toFixed(2)}s)`)}catch(o){throw console.error(`[SoundBank] Failed to load sound "${t}" from ${n}:`,o),o}}loadFromBuffer(e,t,n){this.log(`Loading sound from buffer: ${t}`),this.store(e,t,n,{source:"procedural",loadedAt:Date.now()}),this.log(`\u2713 Loaded from buffer: ${t} (${n.duration.toFixed(2)}s)`)}store(e,t,n,i){if(this.sounds.has(e)){let s=this.sounds.get(e);this.log(`Replacing sound ID ${e} (was: ${s.name}, now: ${t})`),this.nameToId.delete(s.name)}if(this.nameToId.has(t)){let s=this.nameToId.get(t);s!==e&&this.log(`Warning: Sound name "${t}" already exists with ID ${s}`)}let o={soundId:e,name:t,buffer:n,duration:n.duration,metadata:i};this.sounds.set(e,o),this.nameToId.set(t,e)}async decodeAudio(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),this.audioContext.decodeAudioData(t)}get(e){if(typeof e=="number")return this.sounds.get(e);let t=this.nameToId.get(e);return t!==void 0?this.sounds.get(t):void 0}has(e){return this.get(e)!==void 0}getAll(){return Array.from(this.sounds.values())}getNames(){return Array.from(this.nameToId.keys())}get size(){return this.sounds.size}remove(e){let t=this.get(e);return t?(this.sounds.delete(t.soundId),this.nameToId.delete(t.name),this.log(`Removed sound: ${t.name}`),!0):!1}clear(){let e=this.sounds.size;this.sounds.clear(),this.nameToId.clear(),this.log(`Cleared ${e} sounds`)}getStats(){let e=this.getAll(),t=0;for(let n of e){let{buffer:i}=n;t+=i.length*i.numberOfChannels*4}return{totalSounds:e.length,totalDuration:e.reduce((n,i)=>n+i.duration,0),estimatedMemory:t,bySource:{file:e.filter(n=>n.metadata.source==="file").length,external:e.filter(n=>n.metadata.source==="external").length,procedural:e.filter(n=>n.metadata.source==="procedural").length}}}log(e){this.debug&&console.warn(`[SoundBank] ${e}`)}};S(N,"SoundBank");var b=N;var C=class C{constructor(e={}){c(this,"audioContext",null);c(this,"masterGainNode",null);c(this,"soundBank",null);c(this,"options");c(this,"initialized",!1);c(this,"nextInstanceId",1);c(this,"instances",new Map);c(this,"instancesBySound",new Map);c(this,"activeSounds",new Set);c(this,"spatialSounds",new Map);c(this,"spatialConfig",{listenerX:0,listenerY:0,maxDistance:200,referenceDistance:20,rolloffFactor:1,panSpread:1});c(this,"reverbConvolver",null);c(this,"reverbGain",null);this.options={debug:e.debug??!1,masterVolume:e.masterVolume??1},this.log("AudioManager created")}initialize(){if(this.initialized&&this.audioContext)return this.log("AudioContext already initialized"),!0;try{let e=window.AudioContext||window.webkitAudioContext;return e?(this.audioContext=new e,this.log(`AudioContext initialized (state: ${this.audioContext.state}, sampleRate: ${this.audioContext.sampleRate}Hz)`),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.gain.value=this.options.masterVolume,this.masterGainNode.connect(this.audioContext.destination),this.audioContext.state==="suspended"&&this.audioContext.resume().then(()=>{this.log("AudioContext resumed")}),this.soundBank=new b(this.audioContext,this.options.debug),this.initialized=!0,!0):(console.warn("[AudioManager] Web Audio API not supported"),!1)}catch(e){return console.error("[AudioManager] Failed to initialize AudioContext:",e),!1}}isInitialized(){return this.initialized&&this.audioContext!==null}getContext(){return this.audioContext}getMasterGain(){return this.masterGainNode}setMasterVolume(e){this.options.masterVolume=Math.max(0,Math.min(1,e)),this.masterGainNode&&(this.masterGainNode.gain.value=this.options.masterVolume),this.log(`Master volume set to ${this.options.masterVolume}`)}getMasterVolume(){return this.options.masterVolume}playStartSound(){if(!this.audioContext||!this.masterGainNode){this.log("Cannot play sound: AudioContext not initialized");return}try{let e=this.audioContext,t=e.currentTime,n=[262,330,392,523],i=.06,o=.07;n.forEach((s,u)=>{let a=t+u*o,r=e.createOscillator();r.type="square",r.frequency.setValueAtTime(s,a);let d=e.createGain();d.gain.setValueAtTime(0,a),d.gain.linearRampToValueAtTime(.15,a+.005),d.gain.setValueAtTime(.15,a+i-.01),d.gain.linearRampToValueAtTime(0,a+i),r.connect(d),d.connect(this.masterGainNode),r.start(a),r.stop(a+i)}),this.log("Start sound played (retro arpeggio)")}catch(e){console.error("[AudioManager] Failed to play start sound:",e)}}playTone(e,t,n={}){if(!this.audioContext||!this.masterGainNode){this.log("Cannot play tone: AudioContext not initialized");return}let{type:i="sine",volume:o=.3,attack:s=.01,release:u=.1}=n;try{let a=this.audioContext,r=a.currentTime,d=a.createOscillator();d.type=i,d.frequency.setValueAtTime(e,r);let l=a.createGain();l.gain.setValueAtTime(0,r),l.gain.linearRampToValueAtTime(o,r+s),l.gain.setValueAtTime(o,r+t-u),l.gain.linearRampToValueAtTime(0,r+t),d.connect(l),l.connect(this.masterGainNode),d.start(r),d.stop(r+t),this.log(`Tone played: ${e}Hz for ${t}s`)}catch(a){console.error("[AudioManager] Failed to play tone:",a)}}playNote(e,t,n={}){let i=this.noteToFrequency(e);if(i===null){console.warn(`[AudioManager] Invalid note: ${e}`);return}this.playTone(i,t,n)}noteToFrequency(e){let t=/^([A-Ga-g])([#b]?)(\d)$/,n=e.match(t);if(!n)return null;let[,i,o,s]=n,u=parseInt(s,10),r={C:0,D:2,E:4,F:5,G:7,A:9,B:11}[i.toUpperCase()];if(r===void 0)return null;o==="#"?r+=1:o==="b"&&(r-=1);let d=r+(u+1)*12;return 440*Math.pow(2,(d-49)/12)}async resumeContext(){this.audioContext&&this.audioContext.state==="suspended"&&(await this.audioContext.resume(),this.log("AudioContext resumed"))}async suspendContext(){this.audioContext&&this.audioContext.state==="running"&&(await this.audioContext.suspend(),this.log("AudioContext suspended"))}getState(){return this.audioContext?.state??null}getSoundBank(){return this.soundBank}play(e,t={}){if(!this.audioContext||!this.masterGainNode||!this.soundBank)return this.log("Cannot play: not initialized"),null;let n=this.soundBank.get(e);if(!n)return console.warn(`[AudioManager] Sound not found: ${e}`),null;try{let i=this.audioContext,o=t.instanceId??this.nextInstanceId++;t.instanceId!==void 0&&t.instanceId>=this.nextInstanceId&&(this.nextInstanceId=t.instanceId+1);let s=i.createBufferSource();s.buffer=n.buffer,s.loop=t.loop??!1,s.playbackRate.value=t.pitch??1;let u=i.createGain(),a=t.volume??1,r=t.fadeIn??0,d={source:s,gainNode:u,soundName:n.name,stopped:!1,baseVolume:a,targetVolume:a,fadingOut:!1,paused:!1,pausedAt:0,startedAt:i.currentTime,loop:t.loop??!1,playbackRate:t.pitch??1,buffer:n.buffer,outputNode:u},l=a,h=a;if(t.position){let{pan:p,distanceVolume:m}=this.calculateSpatialAudio(t.position.x,t.position.y),g=i.createStereoPanner();g.pan.value=p,l=r>0?0:a*m,h=a*m,u.gain.setValueAtTime(l,i.currentTime),r>0&&(u.gain.linearRampToValueAtTime(h,i.currentTime+r),this.log(`Fade in: ${n.name} [#${o}] over ${r}s`)),s.connect(u),u.connect(g),g.connect(this.masterGainNode),d.pannerNode=g,d.position={x:t.position.x,y:t.position.y},d.targetVolume=h,d.outputNode=g,this.spatialSounds.set(s,{gainNode:u,pannerNode:g,position:{x:t.position.x,y:t.position.y},baseVolume:a}),this.log(`Playing spatial: ${n.name} [#${o}] at (${t.position.x}, ${t.position.y}) pan=${p.toFixed(2)} vol=${m.toFixed(2)}`)}else l=r>0?0:a,h=a,u.gain.setValueAtTime(l,i.currentTime),r>0&&(u.gain.linearRampToValueAtTime(h,i.currentTime+r),this.log(`Fade in: ${n.name} [#${o}] over ${r}s`)),s.connect(u),u.connect(this.masterGainNode);this.instances.set(o,d),(t.lowpass||t.highpass||t.reverb)&&this.setEffects(o,t.lowpass,t.highpass,t.reverb),this.instancesBySound.has(n.name)||this.instancesBySound.set(n.name,new Set),this.instancesBySound.get(n.name).add(o),this.activeSounds.add(s),s.onended=()=>{d.paused||this.cleanupInstance(o)},s.start(0,t.offset??0),t.position||this.log(`Playing: ${n.name} [#${o}]`);let v=this.stop.bind(this),x=this.instances;return{instanceId:o,stop:()=>{v(o)},get playing(){let p=x.get(o);return p!==void 0&&!p.stopped},sound:n}}catch(i){return console.error(`[AudioManager] Failed to play sound "${e}":`,i),null}}stop(e){return e==="all"?this.stopAll():typeof e=="number"?this.stopInstance(e)?1:0:this.stopByName(e)}fadeOut(e,t){if(!this.audioContext)return 0;let n=Math.max(.01,t);return e==="all"?this.fadeOutAll(n):typeof e=="number"?this.fadeOutInstance(e,n)?1:0:this.fadeOutByName(e,n)}fadeOutInstance(e,t){let n=this.instances.get(e);if(!n||n.stopped||n.fadingOut||!this.audioContext)return!1;let i=this.audioContext;n.fadingOut=!0;let o=n.gainNode.gain.value;return n.gainNode.gain.cancelScheduledValues(i.currentTime),n.gainNode.gain.setValueAtTime(o,i.currentTime),n.gainNode.gain.linearRampToValueAtTime(0,i.currentTime+t),setTimeout(()=>{this.stopInstance(e)},t*1e3),this.log(`Fading out instance #${e} (${n.soundName}) over ${t}s`),!0}fadeOutByName(e,t){let n=this.instancesBySound.get(e);if(!n||n.size===0)return 0;let i=0;for(let o of Array.from(n))this.fadeOutInstance(o,t)&&i++;return this.log(`Fading out ${i} instances of "${e}" over ${t}s`),i}fadeOutAll(e){let t=0;for(let n of Array.from(this.instances.keys()))this.fadeOutInstance(n,e)&&t++;return this.log(`Fading out all sounds (${t} instances) over ${e}s`),t}pause(e){return e==="all"?this.pauseAll():typeof e=="number"?this.pauseInstance(e)?1:0:this.pauseByName(e)}pauseInstance(e){let t=this.instances.get(e);if(!t||t.stopped||t.paused||t.fadingOut||!this.audioContext)return!1;let i=(this.audioContext.currentTime-t.startedAt)*t.playbackRate;if(t.loop)t.pausedAt=i%t.buffer.duration;else if(t.pausedAt=i,t.pausedAt>=t.buffer.duration)return!1;try{t.source.stop()}catch{}return t.paused=!0,this.log(`Paused instance #${e} (${t.soundName}) at ${t.pausedAt.toFixed(2)}s`),!0}pauseByName(e){let t=this.instancesBySound.get(e);if(!t||t.size===0)return 0;let n=0;for(let i of Array.from(t))this.pauseInstance(i)&&n++;return this.log(`Paused ${n} instances of "${e}"`),n}pauseAll(){let e=0;for(let t of Array.from(this.instances.keys()))this.pauseInstance(t)&&e++;return this.log(`Paused all sounds (${e} instances)`),e}resume(e){return e==="all"?this.resumeAll():typeof e=="number"?this.resumeInstance(e)?1:0:this.resumeByName(e)}resumeInstance(e){let t=this.instances.get(e);if(!t||t.stopped||!t.paused||!this.audioContext||!this.masterGainNode)return!1;let n=this.audioContext,i=n.createBufferSource();return i.buffer=t.buffer,i.loop=t.loop,i.playbackRate.value=t.playbackRate,i.connect(t.gainNode),t.source=i,t.paused=!1,t.startedAt=n.currentTime-t.pausedAt/t.playbackRate,i.onended=()=>{t.paused||this.cleanupInstance(e)},i.start(0,t.pausedAt),this.log(`Resumed instance #${e} (${t.soundName}) from ${t.pausedAt.toFixed(2)}s`),!0}resumeByName(e){let t=this.instancesBySound.get(e);if(!t||t.size===0)return 0;let n=0;for(let i of Array.from(t))this.resumeInstance(i)&&n++;return this.log(`Resumed ${n} instances of "${e}"`),n}resumeAll(){let e=0;for(let t of Array.from(this.instances.keys()))this.resumeInstance(t)&&e++;return this.log(`Resumed all sounds (${e} instances)`),e}stopInstance(e){let t=this.instances.get(e);if(!t||t.stopped)return!1;try{t.source.stop(),t.stopped=!0,this.log(`Stopped instance #${e} (${t.soundName})`)}catch{}return this.cleanupInstance(e),!0}stopByName(e){let t=this.instancesBySound.get(e);if(!t||t.size===0)return 0;let n=0;for(let i of Array.from(t))this.stopInstance(i)&&n++;return this.log(`Stopped ${n} instances of "${e}"`),n}cleanupInstance(e){let t=this.instances.get(e);if(!t)return;this.instances.delete(e);let n=this.instancesBySound.get(t.soundName);n&&(n.delete(e),n.size===0&&this.instancesBySound.delete(t.soundName)),this.activeSounds.delete(t.source),this.spatialSounds.delete(t.source)}setListenerPosition(e,t){e===this.spatialConfig.listenerX&&t===this.spatialConfig.listenerY||(this.spatialConfig.listenerX=e,this.spatialConfig.listenerY=t,this.spatialSounds.size>0&&this.updateAllSpatialSounds())}updateAllSpatialSounds(){for(let[e,t]of this.spatialSounds){if(!this.activeSounds.has(e)){this.spatialSounds.delete(e);continue}let{pan:n,distanceVolume:i}=this.calculateSpatialAudio(t.position.x,t.position.y);t.pannerNode.pan.value=n,t.gainNode.gain.value=t.baseVolume*i}}getListenerPosition(){return{x:this.spatialConfig.listenerX,y:this.spatialConfig.listenerY}}configureSpatial(e){this.log(`configureSpatial called with: ${JSON.stringify(e)}`),e.listenerX!==void 0&&(this.spatialConfig.listenerX=Math.max(0,Math.min(65535,e.listenerX))),e.listenerY!==void 0&&(this.spatialConfig.listenerY=Math.max(0,Math.min(65535,e.listenerY))),e.maxDistance!==void 0&&(this.spatialConfig.maxDistance=Math.max(1,e.maxDistance)),e.referenceDistance!==void 0&&(this.spatialConfig.referenceDistance=Math.max(1,e.referenceDistance)),e.rolloffFactor!==void 0&&(this.spatialConfig.rolloffFactor=Math.max(0,e.rolloffFactor)),e.panSpread!==void 0&&(this.spatialConfig.panSpread=Math.max(0,Math.min(1,e.panSpread))),this.log(`spatialConfig now: maxDistance=${this.spatialConfig.maxDistance}, refDist=${this.spatialConfig.referenceDistance}, panSpread=${this.spatialConfig.panSpread}`)}getSpatialConfig(){return{...this.spatialConfig}}setEffects(e,t,n,i){if(!this.audioContext||!this.masterGainNode)return;let o=this.instances.get(e);if(!o||o.stopped){this.log(`setEffects: instance ${e} not found or stopped`);return}let s=this.audioContext;t!==void 0&&(t>0?(o.lowpassNode||(o.lowpassNode=s.createBiquadFilter(),o.lowpassNode.type="lowpass",o.lowpassNode.Q.value=1,this.insertFilterNode(o,o.lowpassNode)),o.lowpassNode.frequency.setValueAtTime(t,s.currentTime),this.log(`setEffects: instance ${e} lowpass=${t}Hz`)):o.lowpassNode&&(this.removeFilterNode(o,o.lowpassNode),o.lowpassNode=void 0,this.log(`setEffects: instance ${e} lowpass disabled`))),n!==void 0&&(n>0?(o.highpassNode||(o.highpassNode=s.createBiquadFilter(),o.highpassNode.type="highpass",o.highpassNode.Q.value=1,this.insertFilterNode(o,o.highpassNode)),o.highpassNode.frequency.setValueAtTime(n,s.currentTime),this.log(`setEffects: instance ${e} highpass=${n}Hz`)):o.highpassNode&&(this.removeFilterNode(o,o.highpassNode),o.highpassNode=void 0,this.log(`setEffects: instance ${e} highpass disabled`))),i!==void 0&&(i>0?(this.ensureReverbInitialized(),!o.reverbSendNode&&this.reverbConvolver&&(o.reverbSendNode=s.createGain(),o.reverbSendNode.gain.value=0,o.outputNode.connect(o.reverbSendNode),o.reverbSendNode.connect(this.reverbConvolver)),o.reverbSendNode&&(o.reverbSendNode.gain.setValueAtTime(i,s.currentTime),this.log(`setEffects: instance ${e} reverb=${i.toFixed(2)}`))):o.reverbSendNode&&(o.reverbSendNode.gain.setValueAtTime(0,s.currentTime),this.log(`setEffects: instance ${e} reverb disabled`)))}ensureReverbInitialized(){if(this.reverbConvolver||!this.audioContext||!this.masterGainNode)return;let e=this.audioContext,t=e.sampleRate,i=Math.floor(t*.5),o=e.createBuffer(1,i,t),s=o.getChannelData(0);for(let u=0;u<i;u++){let a=u/t,r=Math.exp(-a*6);s[u]=(Math.random()*2-1)*r}this.reverbConvolver=e.createConvolver(),this.reverbConvolver.buffer=o,this.reverbGain=e.createGain(),this.reverbGain.gain.value=.5,this.reverbConvolver.connect(this.reverbGain),this.reverbGain.connect(this.masterGainNode),this.log("Shared reverb initialized")}insertFilterNode(e,t){if(this.masterGainNode){try{e.outputNode.disconnect(this.masterGainNode)}catch{}e.outputNode.connect(t),t.connect(this.masterGainNode)}}removeFilterNode(e,t){if(this.masterGainNode){try{t.disconnect()}catch{}try{e.outputNode.disconnect(t)}catch{}e.outputNode.connect(this.masterGainNode)}}calculateSpatialAudio(e,t){let{listenerX:n,listenerY:i,maxDistance:o,referenceDistance:s,panSpread:u}=this.spatialConfig,a=e-n,r=t-i,d=Math.sqrt(a*a+r*r),l;d<=s?l=1:d>=o?l=0:l=1-(d-s)/(o-s);let h=0;return o>0&&u>0&&(h=a/o*u,h=Math.max(-1,Math.min(1,h))),{pan:h,distanceVolume:l}}stopAll(){let e=this.instances.size;for(let[,t]of this.instances)if(!t.stopped)try{t.source.stop(),t.stopped=!0}catch{}return this.instances.clear(),this.instancesBySound.clear(),this.activeSounds.clear(),this.spatialSounds.clear(),this.log(`Stopped all sounds (${e} instances)`),e}getPlayingCount(){return this.instances.size}getActiveInstances(){return Array.from(this.instances.keys())}isPlaying(e){let t=this.instances.get(e);return t!==void 0&&!t.stopped}destroy(){this.stopAll(),this.soundBank&&(this.soundBank.clear(),this.soundBank=null),this.audioContext&&(this.audioContext.close(),this.audioContext=null),this.masterGainNode=null,this.initialized=!1,this.log("AudioManager destroyed")}log(e){this.options.debug&&console.warn(`[AudioManager] ${e}`)}};S(C,"AudioManager");var A=C;
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var C=Object.defineProperty;var $=(p,t,e)=>t in p?C(p,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):p[t]=e;var x=(p,t)=>C(p,"name",{value:t,configurable:!0});var c=(p,t,e)=>($(p,typeof t!="symbol"?t+"":t,e),e);var S=class S{constructor(t,e=!1){c(this,"sounds",new Map);c(this,"nameToId",new Map);c(this,"audioContext");c(this,"debug");this.audioContext=t,this.debug=e,this.log("SoundBank created")}async loadFromData(t,e,n){this.log(`Loading sound from data: ${e} (${n.length} bytes)`);try{let o=await this.decodeAudio(n);this.store(t,e,o,{source:"file",originalSize:n.length,loadedAt:Date.now()}),this.log(`\u2713 Loaded: ${e} (${o.duration.toFixed(2)}s)`)}catch(o){throw console.error(`[SoundBank] Failed to decode sound "${e}":`,o),o}}async loadFromUrl(t,e,n,o){this.log(`Loading sound from URL: ${e} \u2192 ${n}`);try{let i=await fetch(n);if(!i.ok)throw new Error(`HTTP ${i.status}: ${i.statusText}`);let s=i.headers.get("content-length"),u=s?parseInt(s,10):0,a;if(u>0&&o&&i.body){let d=i.body.getReader(),l=[],f=0;for(;;){let{done:h,value:m}=await d.read();if(h)break;l.push(m),f+=m.length,o(f,u)}let y=new Uint8Array(f),v=0;for(let h of l)y.set(h,v),v+=h.length;a=y.buffer}else a=await i.arrayBuffer();let r=await this.decodeAudio(new Uint8Array(a));this.store(t,e,r,{source:"external",originalSize:a.byteLength,originalUrl:n,loadedAt:Date.now()}),this.log(`\u2713 Loaded from URL: ${e} (${r.duration.toFixed(2)}s)`)}catch(i){throw console.error(`[SoundBank] Failed to load sound "${e}" from ${n}:`,i),i}}loadFromBuffer(t,e,n){this.log(`Loading sound from buffer: ${e}`),this.store(t,e,n,{source:"procedural",loadedAt:Date.now()}),this.log(`\u2713 Loaded from buffer: ${e} (${n.duration.toFixed(2)}s)`)}store(t,e,n,o){if(this.sounds.has(t)){let s=this.sounds.get(t);this.log(`Replacing sound ID ${t} (was: ${s.name}, now: ${e})`),this.nameToId.delete(s.name)}if(this.nameToId.has(e)){let s=this.nameToId.get(e);s!==t&&this.log(`Warning: Sound name "${e}" already exists with ID ${s}`)}let i={soundId:t,name:e,buffer:n,duration:n.duration,metadata:o};this.sounds.set(t,i),this.nameToId.set(e,t)}async decodeAudio(t){let e=new ArrayBuffer(t.byteLength);return new Uint8Array(e).set(t),this.audioContext.decodeAudioData(e)}get(t){if(typeof t=="number")return this.sounds.get(t);let e=this.nameToId.get(t);return e!==void 0?this.sounds.get(e):void 0}has(t){return this.get(t)!==void 0}getAll(){return Array.from(this.sounds.values())}getNames(){return Array.from(this.nameToId.keys())}get size(){return this.sounds.size}remove(t){let e=this.get(t);return e?(this.sounds.delete(e.soundId),this.nameToId.delete(e.name),this.log(`Removed sound: ${e.name}`),!0):!1}clear(){let t=this.sounds.size;this.sounds.clear(),this.nameToId.clear(),this.log(`Cleared ${t} sounds`)}getStats(){let t=this.getAll(),e=0;for(let n of t){let{buffer:o}=n;e+=o.length*o.numberOfChannels*4}return{totalSounds:t.length,totalDuration:t.reduce((n,o)=>n+o.duration,0),estimatedMemory:e,bySource:{file:t.filter(n=>n.metadata.source==="file").length,external:t.filter(n=>n.metadata.source==="external").length,procedural:t.filter(n=>n.metadata.source==="procedural").length}}}log(t){this.debug&&console.warn(`[SoundBank] ${t}`)}};x(S,"SoundBank");var b=S;var N=class N{constructor(t={}){c(this,"audioContext",null);c(this,"masterGainNode",null);c(this,"soundBank",null);c(this,"options");c(this,"initialized",!1);c(this,"nextInstanceId",1);c(this,"instances",new Map);c(this,"instancesBySound",new Map);c(this,"activeSounds",new Set);c(this,"spatialSounds",new Map);c(this,"spatialConfig",{listenerX:0,listenerY:0,maxDistance:200,referenceDistance:20,rolloffFactor:1,panSpread:1});c(this,"reverbConvolver",null);c(this,"reverbGain",null);this.options={debug:t.debug??!1,masterVolume:t.masterVolume??1},this.log("AudioManager created")}initialize(){if(this.initialized&&this.audioContext)return this.log("AudioContext already initialized"),!0;try{let t=window.AudioContext||window.webkitAudioContext;return t?(this.audioContext=new t,this.log(`AudioContext initialized (state: ${this.audioContext.state}, sampleRate: ${this.audioContext.sampleRate}Hz)`),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.gain.value=this.options.masterVolume,this.masterGainNode.connect(this.audioContext.destination),this.audioContext.state==="suspended"&&this.audioContext.resume().then(()=>{this.log("AudioContext resumed")}),this.soundBank=new b(this.audioContext,this.options.debug),this.initialized=!0,!0):(console.warn("[AudioManager] Web Audio API not supported"),!1)}catch(t){return console.error("[AudioManager] Failed to initialize AudioContext:",t),!1}}isInitialized(){return this.initialized&&this.audioContext!==null}getContext(){return this.audioContext}getMasterGain(){return this.masterGainNode}setMasterVolume(t){this.options.masterVolume=Math.max(0,Math.min(1,t)),this.masterGainNode&&(this.masterGainNode.gain.value=this.options.masterVolume),this.log(`Master volume set to ${this.options.masterVolume}`)}getMasterVolume(){return this.options.masterVolume}playStartSound(){if(!this.audioContext||!this.masterGainNode){this.log("Cannot play sound: AudioContext not initialized");return}try{let t=this.audioContext,e=t.currentTime,n=[262,330,392,523],o=.06,i=.07;n.forEach((s,u)=>{let a=e+u*i,r=t.createOscillator();r.type="square",r.frequency.setValueAtTime(s,a);let d=t.createGain();d.gain.setValueAtTime(0,a),d.gain.linearRampToValueAtTime(.15,a+.005),d.gain.setValueAtTime(.15,a+o-.01),d.gain.linearRampToValueAtTime(0,a+o),r.connect(d),d.connect(this.masterGainNode),r.start(a),r.stop(a+o)}),this.log("Start sound played (retro arpeggio)")}catch(t){console.error("[AudioManager] Failed to play start sound:",t)}}playTone(t,e,n={}){if(!this.audioContext||!this.masterGainNode){this.log("Cannot play tone: AudioContext not initialized");return}let{type:o="sine",volume:i=.3,attack:s=.01,release:u=.1}=n;try{let a=this.audioContext,r=a.currentTime,d=a.createOscillator();d.type=o,d.frequency.setValueAtTime(t,r);let l=a.createGain();l.gain.setValueAtTime(0,r),l.gain.linearRampToValueAtTime(i,r+s),l.gain.setValueAtTime(i,r+e-u),l.gain.linearRampToValueAtTime(0,r+e),d.connect(l),l.connect(this.masterGainNode),d.start(r),d.stop(r+e),this.log(`Tone played: ${t}Hz for ${e}s`)}catch(a){console.error("[AudioManager] Failed to play tone:",a)}}playNote(t,e,n={}){let o=this.noteToFrequency(t);if(o===null){console.warn(`[AudioManager] Invalid note: ${t}`);return}this.playTone(o,e,n)}noteToFrequency(t){let e=/^([A-Ga-g])([#b]?)(\d)$/,n=t.match(e);if(!n)return null;let[,o,i,s]=n,u=parseInt(s,10),r={C:0,D:2,E:4,F:5,G:7,A:9,B:11}[o.toUpperCase()];if(r===void 0)return null;i==="#"?r+=1:i==="b"&&(r-=1);let d=r+(u+1)*12;return 440*Math.pow(2,(d-49)/12)}async resumeContext(){this.audioContext&&this.audioContext.state==="suspended"&&(await this.audioContext.resume(),this.log("AudioContext resumed"))}async suspendContext(){this.audioContext&&this.audioContext.state==="running"&&(await this.audioContext.suspend(),this.log("AudioContext suspended"))}getState(){return this.audioContext?.state??null}getSoundBank(){return this.soundBank}play(t,e={}){if(!this.audioContext||!this.masterGainNode||!this.soundBank)return this.log("Cannot play: not initialized"),null;let n=this.soundBank.get(t);if(!n)return console.warn(`[AudioManager] Sound not found: ${t}`),null;try{let o=this.audioContext,i=e.instanceId??this.nextInstanceId++;e.instanceId!==void 0&&e.instanceId>=this.nextInstanceId&&(this.nextInstanceId=e.instanceId+1);let s=o.createBufferSource();s.buffer=n.buffer,s.loop=e.loop??!1,s.playbackRate.value=e.pitch??1;let u=o.createGain(),a=e.volume??1,r=e.fadeIn??0,d={source:s,gainNode:u,soundName:n.name,stopped:!1,baseVolume:a,targetVolume:a,fadingOut:!1,paused:!1,pausedAt:0,startedAt:o.currentTime,loop:e.loop??!1,playbackRate:e.pitch??1,buffer:n.buffer,outputNode:u},l=a,f=a;if(e.position){let{pan:h,distanceVolume:m}=this.calculateSpatialAudio(e.position.x,e.position.y),g=o.createStereoPanner();g.pan.value=h,l=r>0?0:a*m,f=a*m,u.gain.setValueAtTime(l,o.currentTime),r>0&&(u.gain.linearRampToValueAtTime(f,o.currentTime+r),this.log(`Fade in: ${n.name} [#${i}] over ${r}s`)),s.connect(u),u.connect(g),g.connect(this.masterGainNode),d.pannerNode=g,d.position={x:e.position.x,y:e.position.y},d.targetVolume=f,d.outputNode=g,this.spatialSounds.set(s,{gainNode:u,pannerNode:g,position:{x:e.position.x,y:e.position.y},baseVolume:a}),this.log(`Playing spatial: ${n.name} [#${i}] at (${e.position.x}, ${e.position.y}) pan=${h.toFixed(2)} vol=${m.toFixed(2)}`)}else l=r>0?0:a,f=a,u.gain.setValueAtTime(l,o.currentTime),r>0&&(u.gain.linearRampToValueAtTime(f,o.currentTime+r),this.log(`Fade in: ${n.name} [#${i}] over ${r}s`)),s.connect(u),u.connect(this.masterGainNode);this.instances.set(i,d),(e.lowpass||e.highpass||e.reverb)&&this.setEffects(i,e.lowpass,e.highpass,e.reverb),this.instancesBySound.has(n.name)||this.instancesBySound.set(n.name,new Set),this.instancesBySound.get(n.name).add(i),this.activeSounds.add(s),s.onended=()=>{d.paused||this.cleanupInstance(i)},s.start(0,e.offset??0),e.position||this.log(`Playing: ${n.name} [#${i}]`);let y=this.stop.bind(this),v=this.instances;return{instanceId:i,stop:()=>{y(i)},get playing(){let h=v.get(i);return h!==void 0&&!h.stopped},sound:n}}catch(o){return console.error(`[AudioManager] Failed to play sound "${t}":`,o),null}}stop(t){return t==="all"?this.stopAll():typeof t=="number"?this.stopInstance(t)?1:0:this.stopByName(t)}fadeOut(t,e){if(!this.audioContext)return 0;let n=Math.max(.01,e);return t==="all"?this.fadeOutAll(n):typeof t=="number"?this.fadeOutInstance(t,n)?1:0:this.fadeOutByName(t,n)}fadeOutInstance(t,e){let n=this.instances.get(t);if(!n||n.stopped||n.fadingOut||!this.audioContext)return!1;let o=this.audioContext;n.fadingOut=!0;let i=n.gainNode.gain.value;return n.gainNode.gain.cancelScheduledValues(o.currentTime),n.gainNode.gain.setValueAtTime(i,o.currentTime),n.gainNode.gain.linearRampToValueAtTime(0,o.currentTime+e),setTimeout(()=>{this.stopInstance(t)},e*1e3),this.log(`Fading out instance #${t} (${n.soundName}) over ${e}s`),!0}fadeOutByName(t,e){let n=this.instancesBySound.get(t);if(!n||n.size===0)return 0;let o=0;for(let i of Array.from(n))this.fadeOutInstance(i,e)&&o++;return this.log(`Fading out ${o} instances of "${t}" over ${e}s`),o}fadeOutAll(t){let e=0;for(let n of Array.from(this.instances.keys()))this.fadeOutInstance(n,t)&&e++;return this.log(`Fading out all sounds (${e} instances) over ${t}s`),e}pause(t){return t==="all"?this.pauseAll():typeof t=="number"?this.pauseInstance(t)?1:0:this.pauseByName(t)}pauseInstance(t){let e=this.instances.get(t);if(!e||e.stopped||e.paused||e.fadingOut||!this.audioContext)return!1;let o=(this.audioContext.currentTime-e.startedAt)*e.playbackRate;if(e.loop)e.pausedAt=o%e.buffer.duration;else if(e.pausedAt=o,e.pausedAt>=e.buffer.duration)return!1;try{e.source.stop()}catch{}return e.paused=!0,this.log(`Paused instance #${t} (${e.soundName}) at ${e.pausedAt.toFixed(2)}s`),!0}pauseByName(t){let e=this.instancesBySound.get(t);if(!e||e.size===0)return 0;let n=0;for(let o of Array.from(e))this.pauseInstance(o)&&n++;return this.log(`Paused ${n} instances of "${t}"`),n}pauseAll(){let t=0;for(let e of Array.from(this.instances.keys()))this.pauseInstance(e)&&t++;return this.log(`Paused all sounds (${t} instances)`),t}resume(t){return t==="all"?this.resumeAll():typeof t=="number"?this.resumeInstance(t)?1:0:this.resumeByName(t)}resumeInstance(t){let e=this.instances.get(t);if(!e||e.stopped||!e.paused||!this.audioContext||!this.masterGainNode)return!1;let n=this.audioContext,o=n.createBufferSource();return o.buffer=e.buffer,o.loop=e.loop,o.playbackRate.value=e.playbackRate,o.connect(e.gainNode),e.source=o,e.paused=!1,e.startedAt=n.currentTime-e.pausedAt/e.playbackRate,o.onended=()=>{e.paused||this.cleanupInstance(t)},o.start(0,e.pausedAt),this.log(`Resumed instance #${t} (${e.soundName}) from ${e.pausedAt.toFixed(2)}s`),!0}resumeByName(t){let e=this.instancesBySound.get(t);if(!e||e.size===0)return 0;let n=0;for(let o of Array.from(e))this.resumeInstance(o)&&n++;return this.log(`Resumed ${n} instances of "${t}"`),n}resumeAll(){let t=0;for(let e of Array.from(this.instances.keys()))this.resumeInstance(e)&&t++;return this.log(`Resumed all sounds (${t} instances)`),t}stopInstance(t){let e=this.instances.get(t);if(!e||e.stopped)return!1;try{e.source.stop(),e.stopped=!0,this.log(`Stopped instance #${t} (${e.soundName})`)}catch{}return this.cleanupInstance(t),!0}stopByName(t){let e=this.instancesBySound.get(t);if(!e||e.size===0)return 0;let n=0;for(let o of Array.from(e))this.stopInstance(o)&&n++;return this.log(`Stopped ${n} instances of "${t}"`),n}cleanupInstance(t){let e=this.instances.get(t);if(!e)return;this.instances.delete(t);let n=this.instancesBySound.get(e.soundName);n&&(n.delete(t),n.size===0&&this.instancesBySound.delete(e.soundName)),this.activeSounds.delete(e.source),this.spatialSounds.delete(e.source)}setListenerPosition(t,e){t===this.spatialConfig.listenerX&&e===this.spatialConfig.listenerY||(this.spatialConfig.listenerX=t,this.spatialConfig.listenerY=e,this.spatialSounds.size>0&&this.updateAllSpatialSounds())}updateAllSpatialSounds(){for(let[t,e]of this.spatialSounds){if(!this.activeSounds.has(t)){this.spatialSounds.delete(t);continue}let{pan:n,distanceVolume:o}=this.calculateSpatialAudio(e.position.x,e.position.y);e.pannerNode.pan.value=n,e.gainNode.gain.value=e.baseVolume*o}}getListenerPosition(){return{x:this.spatialConfig.listenerX,y:this.spatialConfig.listenerY}}configureSpatial(t){this.log(`configureSpatial called with: ${JSON.stringify(t)}`),t.listenerX!==void 0&&(this.spatialConfig.listenerX=Math.max(0,Math.min(65535,t.listenerX))),t.listenerY!==void 0&&(this.spatialConfig.listenerY=Math.max(0,Math.min(65535,t.listenerY))),t.maxDistance!==void 0&&(this.spatialConfig.maxDistance=Math.max(1,t.maxDistance)),t.referenceDistance!==void 0&&(this.spatialConfig.referenceDistance=Math.max(1,t.referenceDistance)),t.rolloffFactor!==void 0&&(this.spatialConfig.rolloffFactor=Math.max(0,t.rolloffFactor)),t.panSpread!==void 0&&(this.spatialConfig.panSpread=Math.max(0,Math.min(1,t.panSpread))),this.log(`spatialConfig now: maxDistance=${this.spatialConfig.maxDistance}, refDist=${this.spatialConfig.referenceDistance}, panSpread=${this.spatialConfig.panSpread}`)}getSpatialConfig(){return{...this.spatialConfig}}setEffects(t,e,n,o){if(!this.audioContext||!this.masterGainNode)return;let i=this.instances.get(t);if(!i||i.stopped){this.log(`setEffects: instance ${t} not found or stopped`);return}let s=this.audioContext;e!==void 0&&(e>0?(i.lowpassNode||(i.lowpassNode=s.createBiquadFilter(),i.lowpassNode.type="lowpass",i.lowpassNode.Q.value=1,this.insertFilterNode(i,i.lowpassNode)),i.lowpassNode.frequency.setValueAtTime(e,s.currentTime),this.log(`setEffects: instance ${t} lowpass=${e}Hz`)):i.lowpassNode&&(this.removeFilterNode(i,i.lowpassNode),i.lowpassNode=void 0,this.log(`setEffects: instance ${t} lowpass disabled`))),n!==void 0&&(n>0?(i.highpassNode||(i.highpassNode=s.createBiquadFilter(),i.highpassNode.type="highpass",i.highpassNode.Q.value=1,this.insertFilterNode(i,i.highpassNode)),i.highpassNode.frequency.setValueAtTime(n,s.currentTime),this.log(`setEffects: instance ${t} highpass=${n}Hz`)):i.highpassNode&&(this.removeFilterNode(i,i.highpassNode),i.highpassNode=void 0,this.log(`setEffects: instance ${t} highpass disabled`))),o!==void 0&&(o>0?(this.ensureReverbInitialized(),!i.reverbSendNode&&this.reverbConvolver&&(i.reverbSendNode=s.createGain(),i.reverbSendNode.gain.value=0,i.outputNode.connect(i.reverbSendNode),i.reverbSendNode.connect(this.reverbConvolver)),i.reverbSendNode&&(i.reverbSendNode.gain.setValueAtTime(o,s.currentTime),this.log(`setEffects: instance ${t} reverb=${o.toFixed(2)}`))):i.reverbSendNode&&(i.reverbSendNode.gain.setValueAtTime(0,s.currentTime),this.log(`setEffects: instance ${t} reverb disabled`)))}ensureReverbInitialized(){if(this.reverbConvolver||!this.audioContext||!this.masterGainNode)return;let t=this.audioContext,e=t.sampleRate,o=Math.floor(e*.5),i=t.createBuffer(1,o,e),s=i.getChannelData(0);for(let u=0;u<o;u++){let a=u/e,r=Math.exp(-a*6);s[u]=(Math.random()*2-1)*r}this.reverbConvolver=t.createConvolver(),this.reverbConvolver.buffer=i,this.reverbGain=t.createGain(),this.reverbGain.gain.value=.5,this.reverbConvolver.connect(this.reverbGain),this.reverbGain.connect(this.masterGainNode),this.log("Shared reverb initialized")}insertFilterNode(t,e){if(this.masterGainNode){try{t.outputNode.disconnect(this.masterGainNode)}catch{}t.outputNode.connect(e),e.connect(this.masterGainNode)}}removeFilterNode(t,e){if(this.masterGainNode){try{e.disconnect()}catch{}try{t.outputNode.disconnect(e)}catch{}t.outputNode.connect(this.masterGainNode)}}calculateSpatialAudio(t,e){let{listenerX:n,listenerY:o,maxDistance:i,referenceDistance:s,panSpread:u}=this.spatialConfig,a=t-n,r=e-o,d=Math.sqrt(a*a+r*r),l;d<=s?l=1:d>=i?l=0:l=1-(d-s)/(i-s);let f=0;return i>0&&u>0&&(f=a/i*u,f=Math.max(-1,Math.min(1,f))),this.log(`Spatial: listener(${n.toFixed(1)}, ${o.toFixed(1)}) sound(${t.toFixed(1)}, ${e.toFixed(1)}) dist=${d.toFixed(1)} vol=${l.toFixed(2)} pan=${f.toFixed(2)} [dx=${a.toFixed(1)} maxDist=${i} panSpread=${u}]`),{pan:f,distanceVolume:l}}stopAll(){let t=this.instances.size;for(let[,e]of this.instances)if(!e.stopped)try{e.source.stop(),e.stopped=!0}catch{}return this.instances.clear(),this.instancesBySound.clear(),this.activeSounds.clear(),this.spatialSounds.clear(),this.log(`Stopped all sounds (${t} instances)`),t}getPlayingCount(){return this.instances.size}getActiveInstances(){return Array.from(this.instances.keys())}isPlaying(t){let e=this.instances.get(t);return e!==void 0&&!e.stopped}destroy(){this.stopAll(),this.soundBank&&(this.soundBank.clear(),this.soundBank=null),this.audioContext&&(this.audioContext.close(),this.audioContext=null),this.masterGainNode=null,this.initialized=!1,this.log("AudioManager destroyed")}log(t){this.options.debug&&console.warn(`[AudioManager] ${t}`)}};x(N,"AudioManager");var A=N;export{A as AudioManager,b as SoundBank};
|
|
1
|
+
var C=Object.defineProperty;var $=(p,t,e)=>t in p?C(p,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):p[t]=e;var x=(p,t)=>C(p,"name",{value:t,configurable:!0});var c=(p,t,e)=>($(p,typeof t!="symbol"?t+"":t,e),e);var S=class S{constructor(t,e=!1){c(this,"sounds",new Map);c(this,"nameToId",new Map);c(this,"audioContext");c(this,"debug");this.audioContext=t,this.debug=e,this.log("SoundBank created")}async loadFromData(t,e,n){this.log(`Loading sound from data: ${e} (${n.length} bytes)`);try{let o=await this.decodeAudio(n);this.store(t,e,o,{source:"file",originalSize:n.length,loadedAt:Date.now()}),this.log(`\u2713 Loaded: ${e} (${o.duration.toFixed(2)}s)`)}catch(o){throw console.error(`[SoundBank] Failed to decode sound "${e}":`,o),o}}async loadFromUrl(t,e,n,o){this.log(`Loading sound from URL: ${e} \u2192 ${n}`);try{let i=await fetch(n);if(!i.ok)throw new Error(`HTTP ${i.status}: ${i.statusText}`);let s=i.headers.get("content-length"),u=s?parseInt(s,10):0,a;if(u>0&&o&&i.body){let d=i.body.getReader(),l=[],f=0;for(;;){let{done:h,value:m}=await d.read();if(h)break;l.push(m),f+=m.length,o(f,u)}let y=new Uint8Array(f),v=0;for(let h of l)y.set(h,v),v+=h.length;a=y.buffer}else a=await i.arrayBuffer();let r=await this.decodeAudio(new Uint8Array(a));this.store(t,e,r,{source:"external",originalSize:a.byteLength,originalUrl:n,loadedAt:Date.now()}),this.log(`\u2713 Loaded from URL: ${e} (${r.duration.toFixed(2)}s)`)}catch(i){throw console.error(`[SoundBank] Failed to load sound "${e}" from ${n}:`,i),i}}loadFromBuffer(t,e,n){this.log(`Loading sound from buffer: ${e}`),this.store(t,e,n,{source:"procedural",loadedAt:Date.now()}),this.log(`\u2713 Loaded from buffer: ${e} (${n.duration.toFixed(2)}s)`)}store(t,e,n,o){if(this.sounds.has(t)){let s=this.sounds.get(t);this.log(`Replacing sound ID ${t} (was: ${s.name}, now: ${e})`),this.nameToId.delete(s.name)}if(this.nameToId.has(e)){let s=this.nameToId.get(e);s!==t&&this.log(`Warning: Sound name "${e}" already exists with ID ${s}`)}let i={soundId:t,name:e,buffer:n,duration:n.duration,metadata:o};this.sounds.set(t,i),this.nameToId.set(e,t)}async decodeAudio(t){let e=new ArrayBuffer(t.byteLength);return new Uint8Array(e).set(t),this.audioContext.decodeAudioData(e)}get(t){if(typeof t=="number")return this.sounds.get(t);let e=this.nameToId.get(t);return e!==void 0?this.sounds.get(e):void 0}has(t){return this.get(t)!==void 0}getAll(){return Array.from(this.sounds.values())}getNames(){return Array.from(this.nameToId.keys())}get size(){return this.sounds.size}remove(t){let e=this.get(t);return e?(this.sounds.delete(e.soundId),this.nameToId.delete(e.name),this.log(`Removed sound: ${e.name}`),!0):!1}clear(){let t=this.sounds.size;this.sounds.clear(),this.nameToId.clear(),this.log(`Cleared ${t} sounds`)}getStats(){let t=this.getAll(),e=0;for(let n of t){let{buffer:o}=n;e+=o.length*o.numberOfChannels*4}return{totalSounds:t.length,totalDuration:t.reduce((n,o)=>n+o.duration,0),estimatedMemory:e,bySource:{file:t.filter(n=>n.metadata.source==="file").length,external:t.filter(n=>n.metadata.source==="external").length,procedural:t.filter(n=>n.metadata.source==="procedural").length}}}log(t){this.debug&&console.warn(`[SoundBank] ${t}`)}};x(S,"SoundBank");var b=S;var N=class N{constructor(t={}){c(this,"audioContext",null);c(this,"masterGainNode",null);c(this,"soundBank",null);c(this,"options");c(this,"initialized",!1);c(this,"nextInstanceId",1);c(this,"instances",new Map);c(this,"instancesBySound",new Map);c(this,"activeSounds",new Set);c(this,"spatialSounds",new Map);c(this,"spatialConfig",{listenerX:0,listenerY:0,maxDistance:200,referenceDistance:20,rolloffFactor:1,panSpread:1});c(this,"reverbConvolver",null);c(this,"reverbGain",null);this.options={debug:t.debug??!1,masterVolume:t.masterVolume??1},this.log("AudioManager created")}initialize(){if(this.initialized&&this.audioContext)return this.log("AudioContext already initialized"),!0;try{let t=window.AudioContext||window.webkitAudioContext;return t?(this.audioContext=new t,this.log(`AudioContext initialized (state: ${this.audioContext.state}, sampleRate: ${this.audioContext.sampleRate}Hz)`),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.gain.value=this.options.masterVolume,this.masterGainNode.connect(this.audioContext.destination),this.audioContext.state==="suspended"&&this.audioContext.resume().then(()=>{this.log("AudioContext resumed")}),this.soundBank=new b(this.audioContext,this.options.debug),this.initialized=!0,!0):(console.warn("[AudioManager] Web Audio API not supported"),!1)}catch(t){return console.error("[AudioManager] Failed to initialize AudioContext:",t),!1}}isInitialized(){return this.initialized&&this.audioContext!==null}getContext(){return this.audioContext}getMasterGain(){return this.masterGainNode}setMasterVolume(t){this.options.masterVolume=Math.max(0,Math.min(1,t)),this.masterGainNode&&(this.masterGainNode.gain.value=this.options.masterVolume),this.log(`Master volume set to ${this.options.masterVolume}`)}getMasterVolume(){return this.options.masterVolume}playStartSound(){if(!this.audioContext||!this.masterGainNode){this.log("Cannot play sound: AudioContext not initialized");return}try{let t=this.audioContext,e=t.currentTime,n=[262,330,392,523],o=.06,i=.07;n.forEach((s,u)=>{let a=e+u*i,r=t.createOscillator();r.type="square",r.frequency.setValueAtTime(s,a);let d=t.createGain();d.gain.setValueAtTime(0,a),d.gain.linearRampToValueAtTime(.15,a+.005),d.gain.setValueAtTime(.15,a+o-.01),d.gain.linearRampToValueAtTime(0,a+o),r.connect(d),d.connect(this.masterGainNode),r.start(a),r.stop(a+o)}),this.log("Start sound played (retro arpeggio)")}catch(t){console.error("[AudioManager] Failed to play start sound:",t)}}playTone(t,e,n={}){if(!this.audioContext||!this.masterGainNode){this.log("Cannot play tone: AudioContext not initialized");return}let{type:o="sine",volume:i=.3,attack:s=.01,release:u=.1}=n;try{let a=this.audioContext,r=a.currentTime,d=a.createOscillator();d.type=o,d.frequency.setValueAtTime(t,r);let l=a.createGain();l.gain.setValueAtTime(0,r),l.gain.linearRampToValueAtTime(i,r+s),l.gain.setValueAtTime(i,r+e-u),l.gain.linearRampToValueAtTime(0,r+e),d.connect(l),l.connect(this.masterGainNode),d.start(r),d.stop(r+e),this.log(`Tone played: ${t}Hz for ${e}s`)}catch(a){console.error("[AudioManager] Failed to play tone:",a)}}playNote(t,e,n={}){let o=this.noteToFrequency(t);if(o===null){console.warn(`[AudioManager] Invalid note: ${t}`);return}this.playTone(o,e,n)}noteToFrequency(t){let e=/^([A-Ga-g])([#b]?)(\d)$/,n=t.match(e);if(!n)return null;let[,o,i,s]=n,u=parseInt(s,10),r={C:0,D:2,E:4,F:5,G:7,A:9,B:11}[o.toUpperCase()];if(r===void 0)return null;i==="#"?r+=1:i==="b"&&(r-=1);let d=r+(u+1)*12;return 440*Math.pow(2,(d-49)/12)}async resumeContext(){this.audioContext&&this.audioContext.state==="suspended"&&(await this.audioContext.resume(),this.log("AudioContext resumed"))}async suspendContext(){this.audioContext&&this.audioContext.state==="running"&&(await this.audioContext.suspend(),this.log("AudioContext suspended"))}getState(){return this.audioContext?.state??null}getSoundBank(){return this.soundBank}play(t,e={}){if(!this.audioContext||!this.masterGainNode||!this.soundBank)return this.log("Cannot play: not initialized"),null;let n=this.soundBank.get(t);if(!n)return console.warn(`[AudioManager] Sound not found: ${t}`),null;try{let o=this.audioContext,i=e.instanceId??this.nextInstanceId++;e.instanceId!==void 0&&e.instanceId>=this.nextInstanceId&&(this.nextInstanceId=e.instanceId+1);let s=o.createBufferSource();s.buffer=n.buffer,s.loop=e.loop??!1,s.playbackRate.value=e.pitch??1;let u=o.createGain(),a=e.volume??1,r=e.fadeIn??0,d={source:s,gainNode:u,soundName:n.name,stopped:!1,baseVolume:a,targetVolume:a,fadingOut:!1,paused:!1,pausedAt:0,startedAt:o.currentTime,loop:e.loop??!1,playbackRate:e.pitch??1,buffer:n.buffer,outputNode:u},l=a,f=a;if(e.position){let{pan:h,distanceVolume:m}=this.calculateSpatialAudio(e.position.x,e.position.y),g=o.createStereoPanner();g.pan.value=h,l=r>0?0:a*m,f=a*m,u.gain.setValueAtTime(l,o.currentTime),r>0&&(u.gain.linearRampToValueAtTime(f,o.currentTime+r),this.log(`Fade in: ${n.name} [#${i}] over ${r}s`)),s.connect(u),u.connect(g),g.connect(this.masterGainNode),d.pannerNode=g,d.position={x:e.position.x,y:e.position.y},d.targetVolume=f,d.outputNode=g,this.spatialSounds.set(s,{gainNode:u,pannerNode:g,position:{x:e.position.x,y:e.position.y},baseVolume:a}),this.log(`Playing spatial: ${n.name} [#${i}] at (${e.position.x}, ${e.position.y}) pan=${h.toFixed(2)} vol=${m.toFixed(2)}`)}else l=r>0?0:a,f=a,u.gain.setValueAtTime(l,o.currentTime),r>0&&(u.gain.linearRampToValueAtTime(f,o.currentTime+r),this.log(`Fade in: ${n.name} [#${i}] over ${r}s`)),s.connect(u),u.connect(this.masterGainNode);this.instances.set(i,d),(e.lowpass||e.highpass||e.reverb)&&this.setEffects(i,e.lowpass,e.highpass,e.reverb),this.instancesBySound.has(n.name)||this.instancesBySound.set(n.name,new Set),this.instancesBySound.get(n.name).add(i),this.activeSounds.add(s),s.onended=()=>{d.paused||this.cleanupInstance(i)},s.start(0,e.offset??0),e.position||this.log(`Playing: ${n.name} [#${i}]`);let y=this.stop.bind(this),v=this.instances;return{instanceId:i,stop:()=>{y(i)},get playing(){let h=v.get(i);return h!==void 0&&!h.stopped},sound:n}}catch(o){return console.error(`[AudioManager] Failed to play sound "${t}":`,o),null}}stop(t){return t==="all"?this.stopAll():typeof t=="number"?this.stopInstance(t)?1:0:this.stopByName(t)}fadeOut(t,e){if(!this.audioContext)return 0;let n=Math.max(.01,e);return t==="all"?this.fadeOutAll(n):typeof t=="number"?this.fadeOutInstance(t,n)?1:0:this.fadeOutByName(t,n)}fadeOutInstance(t,e){let n=this.instances.get(t);if(!n||n.stopped||n.fadingOut||!this.audioContext)return!1;let o=this.audioContext;n.fadingOut=!0;let i=n.gainNode.gain.value;return n.gainNode.gain.cancelScheduledValues(o.currentTime),n.gainNode.gain.setValueAtTime(i,o.currentTime),n.gainNode.gain.linearRampToValueAtTime(0,o.currentTime+e),setTimeout(()=>{this.stopInstance(t)},e*1e3),this.log(`Fading out instance #${t} (${n.soundName}) over ${e}s`),!0}fadeOutByName(t,e){let n=this.instancesBySound.get(t);if(!n||n.size===0)return 0;let o=0;for(let i of Array.from(n))this.fadeOutInstance(i,e)&&o++;return this.log(`Fading out ${o} instances of "${t}" over ${e}s`),o}fadeOutAll(t){let e=0;for(let n of Array.from(this.instances.keys()))this.fadeOutInstance(n,t)&&e++;return this.log(`Fading out all sounds (${e} instances) over ${t}s`),e}pause(t){return t==="all"?this.pauseAll():typeof t=="number"?this.pauseInstance(t)?1:0:this.pauseByName(t)}pauseInstance(t){let e=this.instances.get(t);if(!e||e.stopped||e.paused||e.fadingOut||!this.audioContext)return!1;let o=(this.audioContext.currentTime-e.startedAt)*e.playbackRate;if(e.loop)e.pausedAt=o%e.buffer.duration;else if(e.pausedAt=o,e.pausedAt>=e.buffer.duration)return!1;try{e.source.stop()}catch{}return e.paused=!0,this.log(`Paused instance #${t} (${e.soundName}) at ${e.pausedAt.toFixed(2)}s`),!0}pauseByName(t){let e=this.instancesBySound.get(t);if(!e||e.size===0)return 0;let n=0;for(let o of Array.from(e))this.pauseInstance(o)&&n++;return this.log(`Paused ${n} instances of "${t}"`),n}pauseAll(){let t=0;for(let e of Array.from(this.instances.keys()))this.pauseInstance(e)&&t++;return this.log(`Paused all sounds (${t} instances)`),t}resume(t){return t==="all"?this.resumeAll():typeof t=="number"?this.resumeInstance(t)?1:0:this.resumeByName(t)}resumeInstance(t){let e=this.instances.get(t);if(!e||e.stopped||!e.paused||!this.audioContext||!this.masterGainNode)return!1;let n=this.audioContext,o=n.createBufferSource();return o.buffer=e.buffer,o.loop=e.loop,o.playbackRate.value=e.playbackRate,o.connect(e.gainNode),e.source=o,e.paused=!1,e.startedAt=n.currentTime-e.pausedAt/e.playbackRate,o.onended=()=>{e.paused||this.cleanupInstance(t)},o.start(0,e.pausedAt),this.log(`Resumed instance #${t} (${e.soundName}) from ${e.pausedAt.toFixed(2)}s`),!0}resumeByName(t){let e=this.instancesBySound.get(t);if(!e||e.size===0)return 0;let n=0;for(let o of Array.from(e))this.resumeInstance(o)&&n++;return this.log(`Resumed ${n} instances of "${t}"`),n}resumeAll(){let t=0;for(let e of Array.from(this.instances.keys()))this.resumeInstance(e)&&t++;return this.log(`Resumed all sounds (${t} instances)`),t}stopInstance(t){let e=this.instances.get(t);if(!e||e.stopped)return!1;try{e.source.stop(),e.stopped=!0,this.log(`Stopped instance #${t} (${e.soundName})`)}catch{}return this.cleanupInstance(t),!0}stopByName(t){let e=this.instancesBySound.get(t);if(!e||e.size===0)return 0;let n=0;for(let o of Array.from(e))this.stopInstance(o)&&n++;return this.log(`Stopped ${n} instances of "${t}"`),n}cleanupInstance(t){let e=this.instances.get(t);if(!e)return;this.instances.delete(t);let n=this.instancesBySound.get(e.soundName);n&&(n.delete(t),n.size===0&&this.instancesBySound.delete(e.soundName)),this.activeSounds.delete(e.source),this.spatialSounds.delete(e.source)}setListenerPosition(t,e){t===this.spatialConfig.listenerX&&e===this.spatialConfig.listenerY||(this.spatialConfig.listenerX=t,this.spatialConfig.listenerY=e,this.spatialSounds.size>0&&this.updateAllSpatialSounds())}updateAllSpatialSounds(){for(let[t,e]of this.spatialSounds){if(!this.activeSounds.has(t)){this.spatialSounds.delete(t);continue}let{pan:n,distanceVolume:o}=this.calculateSpatialAudio(e.position.x,e.position.y);e.pannerNode.pan.value=n,e.gainNode.gain.value=e.baseVolume*o}}getListenerPosition(){return{x:this.spatialConfig.listenerX,y:this.spatialConfig.listenerY}}configureSpatial(t){this.log(`configureSpatial called with: ${JSON.stringify(t)}`),t.listenerX!==void 0&&(this.spatialConfig.listenerX=Math.max(0,Math.min(65535,t.listenerX))),t.listenerY!==void 0&&(this.spatialConfig.listenerY=Math.max(0,Math.min(65535,t.listenerY))),t.maxDistance!==void 0&&(this.spatialConfig.maxDistance=Math.max(1,t.maxDistance)),t.referenceDistance!==void 0&&(this.spatialConfig.referenceDistance=Math.max(1,t.referenceDistance)),t.rolloffFactor!==void 0&&(this.spatialConfig.rolloffFactor=Math.max(0,t.rolloffFactor)),t.panSpread!==void 0&&(this.spatialConfig.panSpread=Math.max(0,Math.min(1,t.panSpread))),this.log(`spatialConfig now: maxDistance=${this.spatialConfig.maxDistance}, refDist=${this.spatialConfig.referenceDistance}, panSpread=${this.spatialConfig.panSpread}`)}getSpatialConfig(){return{...this.spatialConfig}}setEffects(t,e,n,o){if(!this.audioContext||!this.masterGainNode)return;let i=this.instances.get(t);if(!i||i.stopped){this.log(`setEffects: instance ${t} not found or stopped`);return}let s=this.audioContext;e!==void 0&&(e>0?(i.lowpassNode||(i.lowpassNode=s.createBiquadFilter(),i.lowpassNode.type="lowpass",i.lowpassNode.Q.value=1,this.insertFilterNode(i,i.lowpassNode)),i.lowpassNode.frequency.setValueAtTime(e,s.currentTime),this.log(`setEffects: instance ${t} lowpass=${e}Hz`)):i.lowpassNode&&(this.removeFilterNode(i,i.lowpassNode),i.lowpassNode=void 0,this.log(`setEffects: instance ${t} lowpass disabled`))),n!==void 0&&(n>0?(i.highpassNode||(i.highpassNode=s.createBiquadFilter(),i.highpassNode.type="highpass",i.highpassNode.Q.value=1,this.insertFilterNode(i,i.highpassNode)),i.highpassNode.frequency.setValueAtTime(n,s.currentTime),this.log(`setEffects: instance ${t} highpass=${n}Hz`)):i.highpassNode&&(this.removeFilterNode(i,i.highpassNode),i.highpassNode=void 0,this.log(`setEffects: instance ${t} highpass disabled`))),o!==void 0&&(o>0?(this.ensureReverbInitialized(),!i.reverbSendNode&&this.reverbConvolver&&(i.reverbSendNode=s.createGain(),i.reverbSendNode.gain.value=0,i.outputNode.connect(i.reverbSendNode),i.reverbSendNode.connect(this.reverbConvolver)),i.reverbSendNode&&(i.reverbSendNode.gain.setValueAtTime(o,s.currentTime),this.log(`setEffects: instance ${t} reverb=${o.toFixed(2)}`))):i.reverbSendNode&&(i.reverbSendNode.gain.setValueAtTime(0,s.currentTime),this.log(`setEffects: instance ${t} reverb disabled`)))}ensureReverbInitialized(){if(this.reverbConvolver||!this.audioContext||!this.masterGainNode)return;let t=this.audioContext,e=t.sampleRate,o=Math.floor(e*.5),i=t.createBuffer(1,o,e),s=i.getChannelData(0);for(let u=0;u<o;u++){let a=u/e,r=Math.exp(-a*6);s[u]=(Math.random()*2-1)*r}this.reverbConvolver=t.createConvolver(),this.reverbConvolver.buffer=i,this.reverbGain=t.createGain(),this.reverbGain.gain.value=.5,this.reverbConvolver.connect(this.reverbGain),this.reverbGain.connect(this.masterGainNode),this.log("Shared reverb initialized")}insertFilterNode(t,e){if(this.masterGainNode){try{t.outputNode.disconnect(this.masterGainNode)}catch{}t.outputNode.connect(e),e.connect(this.masterGainNode)}}removeFilterNode(t,e){if(this.masterGainNode){try{e.disconnect()}catch{}try{t.outputNode.disconnect(e)}catch{}t.outputNode.connect(this.masterGainNode)}}calculateSpatialAudio(t,e){let{listenerX:n,listenerY:o,maxDistance:i,referenceDistance:s,panSpread:u}=this.spatialConfig,a=t-n,r=e-o,d=Math.sqrt(a*a+r*r),l;d<=s?l=1:d>=i?l=0:l=1-(d-s)/(i-s);let f=0;return i>0&&u>0&&(f=a/i*u,f=Math.max(-1,Math.min(1,f))),{pan:f,distanceVolume:l}}stopAll(){let t=this.instances.size;for(let[,e]of this.instances)if(!e.stopped)try{e.source.stop(),e.stopped=!0}catch{}return this.instances.clear(),this.instancesBySound.clear(),this.activeSounds.clear(),this.spatialSounds.clear(),this.log(`Stopped all sounds (${t} instances)`),t}getPlayingCount(){return this.instances.size}getActiveInstances(){return Array.from(this.instances.keys())}isPlaying(t){let e=this.instances.get(t);return e!==void 0&&!e.stopped}destroy(){this.stopAll(),this.soundBank&&(this.soundBank.clear(),this.soundBank=null),this.audioContext&&(this.audioContext.close(),this.audioContext=null),this.masterGainNode=null,this.initialized=!1,this.log("AudioManager destroyed")}log(t){this.options.debug&&console.warn(`[AudioManager] ${t}`)}};x(N,"AudioManager");var A=N;export{A as AudioManager,b as SoundBank};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@utsp/audio",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0-nightly.20251207012530.05b8403",
|
|
4
4
|
"description": "UTSP audio engine - Web Audio API management for UTSP applications",
|
|
5
5
|
"author": "THP Software",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^24.9.1",
|
|
47
|
-
"@utsp/types": "0.
|
|
47
|
+
"@utsp/types": "0.6.0-nightly.20251207012530.05b8403",
|
|
48
48
|
"typescript": "^5.6.3"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|