From 793af7caed4b9de100c2fa54292db7e976787667 Mon Sep 17 00:00:00 2001 From: jorsi Date: Mon, 1 Jun 2020 11:12:00 -0400 Subject: [PATCH] replace missing audio with placeholder beep --- script/audio.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/script/audio.js b/script/audio.js index 4b37d2d..5a10989 100644 --- a/script/audio.js +++ b/script/audio.js @@ -54,6 +54,19 @@ var AudioEngine = { } return true; }, + _getMissingAudioBuffer: function () { + var buffer = AudioEngine.audioContext.createBuffer( + 1, + AudioEngine.audioContext.sampleRate, + AudioEngine.audioContext.sampleRate + ); + // Fill the buffer + var bufferData = buffer.getChannelData(0); + for (var i = 0; i < buffer.length / 2; i++) { + bufferData[i] = Math.sin(i * .05) / 2; + } + return buffer; + }, _playSound: function (buffer) { if (!AudioEngine._canPlayAudio()) return; @@ -164,6 +177,11 @@ var AudioEngine = { return fetch(request).then(function (response) { return response.arrayBuffer(); }).then(function (buffer) { + if (buffer.byteLength === 0) { + console.error('cannot load audio from ' + src); + return AudioEngine._getMissingAudioBuffer(); + } + return AudioEngine.audioContext.decodeAudioData(buffer, function (decodedData) { AudioEngine.AUDIO_BUFFER_CACHE[src] = decodedData; return AudioEngine.AUDIO_BUFFER_CACHE[src];