LoginSignup
1
1
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

howler.js の「Audio Sprites」を活用して音声ファイルの特定の部分を指定して使う

Last updated at Posted at 2024-06-25

以前、JavaScript で音を鳴らすのにちょこちょこ使っていた「howler.js」に関する記事です。

●howler.js - JavaScript audio library for the modern web
 https://howlerjs.com/

image.png

公式ページを下に進むと、howler.js の特長が列挙されています。
「シンプルな API」「様々な音声コーデックをサポート」「他に依存しないライブラリ」などと、使いやすさを示すようなものもいくつか書かれています。

image.png

個人的に気になったのは、それとは別方向の特長になりますが、「Spatial Audio」が気になりました。

さらに下に進むと、デモがいくつか掲載された部分もあります。

image.png

余談: Spatial Audio関連

自分が気になったと書いた Spatial Audio関連の話は、GitHub の以下に書かれていたりするようです。

●goldfire/howler.js: Javascript audio library for the modern web.
 https://github.com/goldfire/howler.js?tab=readme-ov-file#plugin-spatial

image.png

このあたりは、また別途見てみようと思います。

また、デモの中にも Spatial Audio関連のものがあります。

image.png

本題: Audio Sprites

それでは、今回の本題の「Audio Sprites」の話です。

特長を列挙していた説明の部分では、以下のように説明されているものです。

image.png

できることは、「1つの音声ファイルをいくつかの部分に区切って、その区切った個々の部分を、指定して再生に使える」という感じのものです。

できることを具体的に体験できる以下の公式デモがあるので、これを試してみるのが分かりやすいと思います。

image.png

利用方法

この Audio Sprites を使う方法は、GitHub の以下の部分に書かれています。

●goldfire/howler.js: Javascript audio library for the modern web.
 https://github.com/goldfire/howler.js?tab=readme-ov-file#define-and-play-a-sound-sprite

image.png

音声ファイルの特定の部分を、「先頭からの秒数(単位はミリ秒)=再生開始位置」と「再生開始位置を基準にして再生する区間の秒数(単位はミリ秒)」の数値を使って指定し、その区間に名前をつけ、その名前を指定して利用するというやり方になるようです。

実際に試してみる

それでは、実際に試してみます。

利用する音声ファイル

今回利用する音声ファイルは、Springin’ Sound Stock の「ジングル12-リザルト-」です。
以下のページで同じものを取得できます。

●10秒BGM | 無料 BGM・効果音のフリー音源素材 | Springin’ Sound Stock
 https://www.springin.org/sound-stock/category/bgm-short/

HTMLファイル

今回の内容を実装した HTMLファイルを以下に示します。

お試し用に、シンプルなものにしました。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Howler.js Audio Sprites Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/howler/2.2.4/howler.min.js"></script>
  </head>
  <body>
    <h1>Howler.js Audio Sprites Example</h1>
    <button onclick="playSound('sound1')">Sound 1</button>
    <button onclick="playSound('sound2')">Sound 2</button>
    <button onclick="playSound('sound3')">Sound 3</button>

    <script>
      var sound = new Howl({
        src: ["jingle_12.mp3"],
        sprite: {
          sound1: [0, 1000],
          sound2: [2000, 1000],
          sound3: [4000, 1000],
        },
      });

      function playSound(soundId) {
        sound.play(soundId);
      }
    </script>
  </body>
</html>

動作テスト

上記の HTMLファイルをブラウザで開きます。

image.png

そして、3つあるボタンをそれぞれ押すと、MP3ファイルの一部のみを簡単に再生することができました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1