Web Audio のサウンド再生を一時停止 (ポーズ) する - JavaScript

Web Audio のサウンド再生を一時停止 (ポーズ) するコードを紹介します。

概要

Web Audio のサウンド再生を一時停止する場合には、AudioContextのsuspend()メソッドを呼び出します。
一時停止した状態からサウンドを再生する場合は、AudioContextのresume()メソッドを呼び出します。

実装例

コード

下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, user-scale=yes, initial-scale=1.0, maximum-scale=5.0" />

  <script type="text/javascript">
    var request, source, stopflag = 0;

    function playSound() {
      request = new XMLHttpRequest();
      request.open("GET", "sound2.mp3", true);
      request.responseType = "arraybuffer";
      request.onload = completeOnLoad;
      request.send();
    }

    function completeOnLoad() {
      context = new AudioContext();
      source = context.createBufferSource();

      // オーディオをデコード
      context.decodeAudioData(request.response, function (buf) {
        source.buffer = buf;
        source.loop = false;
      });

      source.connect(context.destination);
      source.start(0);
    }

    function playPause() {
      context.suspend();
    }

    function playRestart() {
      context.resume();
    }

  </script>
</head>
<body>
  <a href="javascript:void(0);" onclick="playSound();">再生</a><br />
  <a href="javascript:void(0);" onclick="playPause();">停止</a><br />
  <a href="javascript:void(0);" onclick="playRestart();">再開</a><br />
</body>
</html>

解説

Web Audio APIによるサウンド再生の詳細はこちらの記事を参照してください。

再生されているサウンドを一時停止する場合には、オーディオコンテキストの suspend() メソッドを呼び出します。
上記のコードでは、[停止]リンクをクリックすると、playPause() 関数を呼び出します。関数中の context.suspend(); メソッドを呼び出し、オーディオ再生を一時停止します。
  function playPause() {
    context.suspend();
  }

停止したサウンドを再開する場合は[再開]リンクをクリックします。 playRestart()関数が呼び出され、関数中の context.resume(); メソッドにより、オーディオの再生を再開します。
  function playRestart() {
    context.resume();
  }

実行結果

上記のHTMLファイルを表示します。下図のページが表示されます。


[再生]リンクをクリックします。タブの左端にスピーカーのアイコンが表示され、サウンドの再生が始まります。


[停止]リンクをクリックすると、サウンドの再生が一時停止します。タブの左端のスピーカーのアイコンは表示されたままです。 [再開]リンクをクリックすると、サウンドを停止した位置から再生が再開されます。


Web Audio APIのサウンド再生を一時停止する処理を実行できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2021-03-27
作成日: 2021-03-26
iPentec all rights reserverd.