From 59da2990b12063dc1f7d4deff93405fe2abac5dd Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Tue, 27 Aug 2019 21:04:52 -0400 Subject: [PATCH] audio: clear buffers when stopping in case browser keeps playing anyway --- doc/notes.txt | 1 - src/audio.ts | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/notes.txt b/doc/notes.txt index f8eaddff..09754ddf 100644 --- a/doc/notes.txt +++ b/doc/notes.txt @@ -175,7 +175,6 @@ TODO: - can't step back twice? - compiler bug in chase - "shared" in URL doesn't work, leave in URL? (also importURL) - - alert when skeleton file loaded or file not found WEB WORKER FORMAT diff --git a/src/audio.ts b/src/audio.ts index 92abfb0f..7d317e80 100644 --- a/src/audio.ts +++ b/src/audio.ts @@ -384,6 +384,12 @@ export var SampleAudio = function(clockfreq) { idrain = (idrain + 1) % bufferlist.length; } } + + function clearBuffers() { + if (bufferlist) + for (var buf of bufferlist) + buf.fill(0); + } function createContext() { var AudioContext = window['AudioContext'] || window['webkitAudioContext'] || window['mozAudioContext']; @@ -425,7 +431,6 @@ export var SampleAudio = function(clockfreq) { // Chrome autoplay (https://goo.gl/7K7WLu) if (this.context.state == 'suspended') { this.context.resume(); - console.log('AudioContext should resume'); } return; // already created } @@ -447,6 +452,7 @@ export var SampleAudio = function(clockfreq) { this.stop = function() { this.context && this.context.suspend(); + clearBuffers(); // just in case it doesn't stop immediately } this.close = function() {