From 79851342bb9ece558578eff60c7f00d0650eb383 Mon Sep 17 00:00:00 2001 From: d07riv Date: Tue, 13 Aug 2019 05:50:32 +0300 Subject: [PATCH] fix safari audio --- package-lock.json | 2 +- package.json | 2 +- src/api/sound.js | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index a0642b4..f000871 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "diabloweb", - "version": "1.0.24", + "version": "1.0.25", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 4b046cc..d0ed071 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "diabloweb", - "version": "1.0.24", + "version": "1.0.25", "private": true, "dependencies": { "@babel/core": "7.4.3", diff --git a/src/api/sound.js b/src/api/sound.js index 1dd5fb8..02a4c95 100644 --- a/src/api/sound.js +++ b/src/api/sound.js @@ -9,6 +9,12 @@ function no_sound() { }; } +function decodeAudioData(context, buffer) { + return new Promise((resolve, reject) => { + context.decodeAudioData(buffer, resolve, reject); + }); +} + export default function init_sound() { const AudioContext = window.AudioContext || window.webkitAudioContext; if (!AudioContext) { @@ -29,7 +35,7 @@ export default function init_sound() { } const buffer = context.createBuffer(channels, length, rate); for (let i = 0; i < channels; ++i) { - buffer.copyToChannel(data.subarray(i * length, i * length + length), i); + buffer.getChannelData(i).set(data.subarray(i * length, i * length + length)); } sounds.set(id, { buffer: Promise.resolve(buffer), @@ -41,7 +47,7 @@ export default function init_sound() { if (!context) { return; } - const buffer = context.decodeAudioData(data.buffer); + const buffer = decodeAudioData(context, data.buffer); sounds.set(id, { buffer, gain: context.createGain(),