PC-Blues # 036 midiとの闘い。

  ウェブサイトにmidiファイルを置く場合、〈a〉タグでリンクをつけてしまえば、あとはブラウザがよろしくやってくれることになっている。ところが、ページで絵だの文字だの見せながらBGMに入れようとすると途端に厄介なことになる。こういう場合、html4.01では汎用タグとして〈object〉タグがあるわけだが、こいつは古めのブラウザでは対応ができていなかったりするらしい。そこで〈embed〉というタグを使う。これはネットスケープ3以降の独自タグだが、さすがに古いので実質的標準ということになっている。 さて、自分のブラウザで〈object〉が動作するかどうか確認したい人は以下のリンクで確認されたい。

  ところが独自規格が大好きなのは某MS社も同じでこちらは〈bgsound〉というタグがあり、これはインターネットエクスプローラでしか動作しない。

  というわけで現状でもっとも安直に動作する〈embed〉で極悪シリーズを構成したのだが、いまどきのネットスケープ6や7のウインドウズ版はmidiの再生機能をもつwinampやrealplayerを一緒にインストールするくせにプラグイン設定がわるく適当なプラグインをさらにインストールしてやらないとBGMのmidiが鳴らないらしい。サポートアプリケーションにwinampなどを指定してもさっぱり効果がない。

  ところが旧バージョンであるネットスケープ4.78(23.6MB)を使えばあっさり鳴るではないの。マジメに探せば、いまどきのクールなプラグインもあるのかもしれないがメンチャイのでこのプラグインをネットスケープ7にさしこんでやるとあっさり7でも鳴りました。やったことは、NS4.78から【npaudio.dll】 233KB を、c:\program files\netscape\netscape\pluginsにコピーしただけ。なお4年前のシロモノであるからひょっとするとセキュリティーホールかなんかがあるかもしれない。windowsというのはあいかわらずよくわからん世界である。足を洗いたいひとはどうぞ。その点Linuxの場合はmp3でもmidiでもplugger一発である。が、こちらもながらくアップデイトされてはいない。

  ところが、これであっさり終らないから、たいへんである。こんどはインターネットエクスプローラである。これは〈embed〉タグでmidi再生すると二曲めあたりからフリーズするのだそうである。これはwindows98とかmeとかのwin3.1系列で発生し、ntや2000といったOS/2-NT系列では発生しないそうである。bgsoundのほうでは発生しないということなので、MSお得意の意図的不良動作というやつかもしれないが、NTカーネルでは発生しないところをみると本当のバグなのかもしれない。

  ともあれ、インターネットエクスプローラではembedを使わずにbgsoundを使い、その他のブラウザではembedを使うということになるとcgiか、javascriptを使うしかない。というわけで、javascriptなんぞを探してきた。

<SCRIPT type="text/javascript">
<!--
if (navigator.appName == "Microsoft Internet Explorer")
{
document.write("<bgsound src=\"air.mid\" loop=\"1\">")
}
else
document.write("<embed loop=\"false\" hidden=\"true\"  autostart=\"true\"  src=\"air.mid\">")
//-->
</SCRIPT>
</head>
<NOSCRIPT><bgsound loop="1" src="air.mid"></NOSCRIPT>

  さてこの手のjavascriptはたいていネットスケープかどうかを判定し、そうでなければIEと判定するものが多いのだが、いまや、opera,にsafari、phoenix,mozilla,wazilla,lynx,kfm,w3mとブラウザは百花繚乱である。そのなかで唯一インターネットエクスプローラだけがスネモノなわけであるからこれを識別することが肝要である。よって、まず、インターネットエクスプローラかどうかを判別してその場合はbgsoundを出し、そうでなければembedとするのがよかろう。 が問題は、〈noscript〉である。

  このタグはjavascriptが実行されなかった場合に表示する文字列を指定するという性格から〈body〉〜〈/body〉に書くのが作法である。しかし、〈bgsound〉は〈head〉〜〈/head〉に書くのが作法らしい。インターネットエクスプローラはスネモノとはいえ、使用実績としては現在のところダントツの一位である。javascript offの場合の記述はひとつしかできない。とはいえ、lynxとかw3mとかjavascriptをonにしようにもできないブラウザというのもあるから、やはり〈embed〉にしたものか。html原理主義者と化して〈object〉か。しかしナンボ正しくても使用者がいなくては意味がない。

  とりあえず〈body〉に〈bgsound〉と書いてみたけれど何か不具合はないだろうか。

[前へ] [次へ]
[Home] [目次]

2003/5/16