diff --git a/data_static/glide/web_audio_html.xml b/data_static/glide/web_audio_html.xml index 60b7a52b..b0e8ff4a 100644 --- a/data_static/glide/web_audio_html.xml +++ b/data_static/glide/web_audio_html.xml @@ -144,7 +144,9 @@ debug.setValue = (id, value) => { Logic to handle each individual Engine Stream */ -let DEFAULT_STREAM_PARAMETERS = {}; +let DEFAULT_STREAM_PARAMETERS = { + fadeDist: 2500 +}; class EngineStream { constructor(id, streamManager) { @@ -196,13 +198,13 @@ class EngineStream { this.pannerNode = new PannerNode(context, { panningModel: "equalpower", //"HRTF", - distanceModel: "inverse", + distanceModel: "linear", positionX: this.position[0], positionY: this.position[1], positionZ: this.position[2], - refDistance: this.params.fadeDist * 0.1, + refDistance: this.params.fadeDist * 0.5, maxDistance: this.params.fadeDist, - rolloffFactor: 0.8 + rolloffFactor: 1.0 }); this.pannerNode.channelCount = 1; @@ -239,10 +241,11 @@ class EngineStream { this.compressorNode = undefined; // Remove references to data - this.layers = undefined; + this.layers = {}; this.position = undefined; this.inputs = undefined; this.params = undefined; + this.isPlaying = false; } setPosition(x, y, z) { @@ -268,6 +271,13 @@ class EngineStream { const layer = this.layers[id]; + // Remove event handlers from the load request, if it exists + if (layer.loadRequest) { + layer.loadRequest.onload = null; + layer.loadRequest.onerror = null; + layer.loadRequest.onabort = null; + } + // Abort an existing download request, if it is active if (layer.loadRequest && layer.loadRequest.readyState < 4) { layer.loadRequest.abort(); @@ -386,8 +396,10 @@ class EngineStream { const inputs = this.inputs; const params = this.params; - this.pannerNode.refDistance = params.fadeDist * 0.1; - this.pannerNode.maxDistance = params.fadeDist; + if (params.fadeDist > 0) { + this.pannerNode.refDistance = params.fadeDist * 0.5; + this.pannerNode.maxDistance = params.fadeDist; + } let baseVol = params.volume * this.volumeMultiplier; let pitch = 1;