diff options
Diffstat (limited to 'src/lib/startAudioContext.js')
| -rw-r--r-- | src/lib/startAudioContext.js | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/src/lib/startAudioContext.js b/src/lib/startAudioContext.js index 5a339a2..54bbe71 100644 --- a/src/lib/startAudioContext.js +++ b/src/lib/startAudioContext.js @@ -5,6 +5,8 @@ * @copyright 2016 Yotam Mann */ +window.__audio_context_started = false; + (function (root, factory) { if (typeof define === "function" && define.amd) { define([], factory); @@ -90,8 +92,9 @@ */ StartAudioContext.isStarted = function () { return ( - StartAudioContext.context !== null && - StartAudioContext.context.state === "running" + (StartAudioContext.context !== null && + StartAudioContext.context.state === "running") || + window.__audio_context_started ); }; @@ -148,31 +151,38 @@ * event has been triggered. */ function onTap() { - //start the audio context with a silent oscillator - if (StartAudioContext.context && !StartAudioContext.isStarted()) { - var osc = StartAudioContext.context.createOscillator(); - var silent = StartAudioContext.context.createGain(); - silent.gain.value = 0; - osc.connect(silent); - silent.connect(StartAudioContext.context.destination); - var now = StartAudioContext.context.currentTime; - osc.start(now); - osc.stop(now + 0.5); - } + try { + //start the audio context with a silent oscillator + if (StartAudioContext.context && !StartAudioContext.isStarted()) { + var osc = StartAudioContext.context.createOscillator(); + var silent = StartAudioContext.context.createGain(); + silent.gain.value = 0; + osc.connect(silent); + silent.connect(StartAudioContext.context.destination); + var now = StartAudioContext.context.currentTime; + osc.start(now); + osc.stop(now + 0.5); + } - //dispose all the tap listeners - if (StartAudioContext._tapListeners) { - for (var i = 0; i < StartAudioContext._tapListeners.length; i++) { - StartAudioContext._tapListeners[i].dispose(); + //dispose all the tap listeners + if (StartAudioContext._tapListeners) { + for (var i = 0; i < StartAudioContext._tapListeners.length; i++) { + StartAudioContext._tapListeners[i].dispose(); + } + StartAudioContext._tapListeners = null; } - StartAudioContext._tapListeners = null; - } - //the onstarted callbacks - if (StartAudioContext._onStarted) { - for (var j = 0; j < StartAudioContext._onStarted.length; j++) { - StartAudioContext._onStarted[j](); + + //the onstarted callbacks + if (StartAudioContext._onStarted) { + for (var j = 0; j < StartAudioContext._onStarted.length; j++) { + StartAudioContext._onStarted[j](); + } + StartAudioContext._onStarted = null; } - StartAudioContext._onStarted = null; + + window.__audio_context_started = true; + } catch (error) { + // } } |
