【スニペット】JSからWebSoundAPIで音を再生

鳴らす音をソースから取得して、取得出来たらコールバックで再生関数を呼ぶ。

/**
* doPlaySound
* @param  {String}  url sound-source
*/
const doPlaySound = function(url) {

   window.AudioContext = window.AudioContext || window.webkitAudioContext;
   let context = new AudioContext();

   let req = new XMLHttpRequest();

   req.responseType = 'arraybuffer';

   req.onreadystatechange = function() {
       if (req.readyState === 4) {
           if (req.status === 0 || req.status === 200) {
               context.decodeAudioData(req.response, function(buffer) {
                   playSound(buffer);
               });
           }
       }
   };

   req.open('GET', url, true);
   req.send('');
};

コールバックから呼ばれる再生関数

/**
* playSound (helper function)
* @param  {AudioBuffer}  buffer sound source
*/
const playSound = function(buffer) {

   window.AudioContext = window.AudioContext || window.webkitAudioContext;
   let context = new AudioContext();

   let source = context.createBufferSource();
   source.buffer = buffer;
   source.connect(context.destination);
   source.start(0);
};

使い方

doPlaySound('sound/1.wav');

毎度ご覧頂き感謝です♪ お布施をしていただくと、僕の喫茶店での執筆時のコーヒー代になります。とても助かります。