音楽を鳴らしたいの?

Webページで音楽を鳴らすことについて。

どうやって鳴らす?

本来W3Cの仕様にはサウンドを明示的に定義するタグはないが、IEが独自にbgsoundを導入、またembedによるプラグインで実現する。実はこれらの性能は一長一短である。

bgsoundによる実装

一般に

<bgsound src="ファイルURL" balance="0" loop="-1" volume="-2000">

とする。IEとOpera7がこれに対応している。長所としては読み込みがスムーズ。背景曲に特化した要素なので表面に出ることがない。短所は逆にユーザーが細かい設定を行えない。JavaScriptで制御しないとページを開いた瞬間に鳴り出す。

embedによる実装

一般に

<embed src="ファイルURL" height="20" width="100" autostart="true" loop="true" repeat="true"></embed>

とする。プラグインなので音楽を再生できるプラグインが入っていれば基本的に最近のブラウザなら動作する。長所はユーザーが細かい設定を行えることだ。問題は短所で、embedでロードされる音楽データが読み終わるまで、一時的にブラウザが応答不能になる。低速回線を使っている場合読み込みが完了するまでウインドウがフリーズ状態になってしまう。

bgsoundかembedどちらがいいか

bgsoundは読み込みがスムーズだがユーザーが簡単に弄れない。逆に、embedは最初鳴らさずにユーザーが任意に鳴らすことができるが、読み込みの間は応答不能になる。一長一短だ。一体どちらを使えばいいかだが、まず絶対条件として、「いきなり鳴らしてはいけない」。作ったほうはそれでいいかもしれないが、夜ネットをやってるときなどはいきなり音楽がなると非常に迷惑だ。閲覧者はバックミュージックなんてどうでもいい。最低限音楽がなることを事前に明示するか、ページを開いてもいきなり鳴らないようにすべきだ。この点においてはembedが優秀だが、第2にユーザーは待たされるのが嫌い。トップページに2MBのビットマップを指定されたら、低速回線を使っている人にとっては地獄。即読み込みをストップするかウインドウクローズだ。embedの場合、一時的にウインドウが応答不可になるので間違いなくウインドウクローズしか道がない。MIDIならサイズも10〜30KBなので問題ないが、MP3やWAVEを指定されると正直embedはウザい。大きなファイルはbgsoundのほうがスムーズだ。しかしbgsoundではいきなり鳴り出す。

私の見解としては、ファイルが大きい場合bgsoundをJavaScriptでコントロールするのが無難。動作環境は限られるが、そもそもIE以外やJavaScriptをOFFにしてるヤツは音楽なんて絶対に聴かない。そうでなくとも音楽を鳴らすのは嫌われるのだから、この程度が丁度よいと思う。

これは以下の簡単なスクリプトで実現できる。ファイル名の部分に流したいファイルを入れればいいので曲目数は自由に追加できる。またhref="#"の部分にもファイル名を加えておくとJavaScriptがOFFのときでも通常はプラグインが起動して音楽を鳴らすことが出来る。

<bgsound src="" id="SOUND" balance="0" loop="-1" volume="-2000">
<a href="#" onclick="document.getElementById('SOUND').src='ファイル名';return false;">音楽を鳴らす</a>/
<a href="#" onclick="document.getElementById('SOUND').src='';return false;">音楽を止める</a>

DEMO: 音楽を鳴らす/ 音楽を止める

MIDIはhttp://www.tam-music.com/より。

ページ情報

作成日時
2005/08/30
最終更新日時
2005/08/30
HTML4.01版
index.html
XHTML1.1版
index.xhtml
XML原本
index.xml