Web MML作曲ツールを作った

Loreleiプロジェクトに最近集中していて完全にそれ以外のサイトがおろそかになっている。プログラムの開発していると、毎日、毎時が新しいことの発見で、少しも飽きがこない。

とりあえず、問題は多いながらも登録、ログイン、コメント、再生機能はできた。ついでに、楽器のエミュレーションも実装した。Mabinogiでは、楽器によってならせる音の範囲が決まっている。それを外れると低ければ1オクターブ上がり、高ければ1オクターブさがるという仕組みである。自分は、楽器の情報などもデーターベース化することにした。そして、その中にMabinogiとGM音源の音のマッピング、可能演奏範囲、FLMML互換などの情報をすべて格納している。

で、このWeb MML作曲ツールでも入力されたMMLが演奏可能かどうかをチェックするために使っているのだ。この作曲ツールは、消夢作のツールをまるかぶりして作るつもりだったが、こちらでは、XHTMLを使っていたりDojoを使っていることでそのままソースを使うことができなかった。結局表示系のほとんどのコードを書き直す羽目になってしまった。しかも、IEの外部JavaScriptの呼び出しにおけるDOM操作にも泣かされた。ページ埋め込みの場合はコーディングが楽だが、外部にするとdocument.getElementsByNameなどの命令が全然使えなくなってしまうのだ。FireFoxやSafariでは問題なく表示されるがだけにデバッグは大変だった。

結局まびらぼと同じ方法でスクリプトを呼び出す羽目になった。まぁ、これで問題はないだろう。

が、あったのだ。Getメソッドの限界である。本来Getメソッドで送ることができる文字数はエンコードした状態で256文字程度。つまり、練習ランク程度のMMLでもGetメソッドで送るのは規格外であったわけだ。そういうこともあって、最初はPOSTでMMLを送信するように作っていたわけだが、FireFoxでは走るのにIEでは走らない。同じプラグイン使っているのにである。

もうIEには泣かされっぱなしだ。

また、これまで、dojox.avでメディアファイルを表示していたが、次期バージョンのdojoでは廃止になりdojox.embedになるらしい。早速dojoをナイトリービルドのものに入れ替えて、コードを書き換えたら、苦労して作った作曲ツールが、またしてもIEでは正常に表示できなくなってしまったのであった。