ウィザード・コード

SoundManager2を使って、JavaScriptで簡易音楽プレイヤーを作成する

 

10/09/23、jQueryプレイヤーの新バージョンを公開しました。JeeGooContextプラグインを使用し、いくつか機能が追加されています。

※10/02/06、jQueryバージョン出来ました。

※10/01/26、js_music.jsを修正しました。

※10/02/07、js_music.jsを修正しました。js_music.jsをお使いの方は修正版の再アップをお願いします(パスの修正などお忘れなく)。

 SoundManager2はFlashの音楽再生機能をJavaScriptで実現するためのライブラリです。 JavaScriptのみでも音楽再生は可能でしたが、ブラウザによって機能に差があり、扱いにくい面がありました。 しかし、このライブラリを使うことで、Flashの知識や開発環境がなくても高性能なFlashのミュージックプレーヤーを利用することができます。
 IE以外のブラウザ(たとえばFirefoxなど)では、JavaScriptで音楽再生(EMBED、OBJECTタグなどを使って)するとたいていタイムラグが発生します。 これでは即時再生が求められる効果音などをページで使うときに困ります。 しかし、SoundManager2を利用することで、Flashの音楽機能をJavaScriptで制御することができるのです。
 ここでは、Flashが利用できる環境ではSoundManager2を使い、そうでない場合はブラウザに合わせた機能を使って音楽再生できるような音楽プレイヤーのスクリプトを紹介したいと思います。
サンプルはこちら

SoundManager2はここからダウンロードできます。

まずはセットアップ

このスクリプトではPrototypeとProtoMenuというライブラリを利用しています。

Prototypeはここから、(追記:Prototypeは、IE8に対応している最新のバージョン(v1.6.1)を利用してください。)
ProtoMenuはこのページからダウンロードできます。
 
 ProtoMenuに関しては、JavaScriptファイルCSSファイルがそれぞれ必要になります。

 ファイルを用意したら、まずPrototypeProtoMenuSoundManager2のJSファイルと、soundmanager2.swfというFlashファイル、 そしてproto.menuのCSSファイルをアップロードします。
次にHTMLのheadタグ内にSoundManager2以外のJSファイルと、proto.menuのCSSファイルを記述します。(ファイルパスの変更も忘れずに)

音楽ライブラリを作成する

音楽データを登録する

 次に音楽ライブラリを作るため、特定のJSファイルに音楽データの登録をします。次のJSファイルをダウンロードしてエディタで開いてください。

音楽データ用ファイル

 ファイルを開くとこのようになっていて、JSON(オブジェクト)形式で音楽データを登録するようになっています。 BGMとsoundの区分がありますが、基本的にBGMの配列内にデータを記述します。それぞれの音楽データには、 "name"と"url"というプロパティが設定可能で、"name"には"MUSIC01"といった曲名を設定し、 "url"には"music01.mp3"のようにファイル名(パスの記述は不要)を設定します。登録した音楽ファイルについては、 アップロードされているかどうかも確認してください。また、いくつでも音楽ファイルを追加することができますが、 配列の最後の要素でコンマをはずし忘れると、IEなどでエラー扱いになるので注意が必要です。

その他、細かい設定について

 音楽データの設定が終わったら、次にプレイヤーの設定を行います。次のファイルを同様にダウンロードしてエディタで開いてください。

プレイヤー作成用ファイル (2010/02/07 update)

 このファイル内では、最初の方にいくつか設定が必要な箇所があります。"audioImg"の配列には、 オーディオの再生/ミュートの切り替えボタンとなる画像データを設定します。
ここで使用している画像はICONFINDERというサイトでダウンロードできます。音量オン 音量オフ

 その他にsoundmanager2のJSファイルや、soundmanager2.swfのFlashファイル、音楽ファイルなどが置かれているフォルダのパスを書き換えます。

 必須ではないですが、プレイヤーアイコンは初期状態ではサイトの画面左上に出てしまいます。
プレイヤーを特定の要素のなかに置きたいという場合は、その要素のposition属性を"relative"か"absolute"にした上で、 上記のコードの26行目で、$$('body')[0]の部分をその要素指定のものに書き換えます。たとえば、 その要素のID属性が"id_name"ならば、次のようになります。

また、left・topプロパティでも位置を設定することができます。

プレイヤーの設定は以上で終了です。上記の二つのJSファイルを他のファイルと同様にアップロードした上でHTML内に埋め込みます。

その他、右クリック時のメニューをカスタマイズしたい場合、proto.menu.cssを開きます。 Proto.MenuのスタイルはデフォルトでGoogleスタイルになっています。たとえば、 横幅を変更したい場合は、下記のwidthプロパティを書き換えます。

またメニュースタイルには、 他にFirefoxやdesktopスタイルが用意されています。変更する場合、js_music.jsのコードを書き換えます。

プレイヤーの操作方法

 最後にプレイヤーの操作方法について説明します。画面のロードが終了すると、画面上に次のようなアイコンが出てくるはずです。音量オン
 このアイコンが音量のオンオフを制御します。左クリックすると音楽再生が始まり、もう一度押すと再生が停止します。
 曲目を選択するにはアイコン上で右クリックです。プレイリストが出てくるのでこの中から選択してください。ただし、Operaブラウザではうまくいかないようです。Ctrlキーを押しながら試してみてください。

プレイヤーのサンプル

 下のアイコンをクリックして試してみてください。

Music By TAM & 煉獄庭園 & 01SoundEarth