mugeneがある程度曲データをコンパイルできるようになって、mldspがそれなりにビジュアルに再生してくれるのであれば、これにMMLエディタを統合してしまえば、ちょっと便利なオーサリング環境が構築できるのではないかと思っている。デスクトップで実現するのであれば、エディタコンポーネントはちょいと心当たりがある。
しかし、それ以上に、web上で完結できるのであれば、それはそれでアリじゃないかと思い始めた。mldspはSilverlightアプリだから、ブラウザDOMへのインタラクティブなアクセスは可能だ。
その場合、ネックになるのはMIDIデバイスへのアクセスだ。FlashにもSilverlightにもMIDIデバイスのアクセスを許すAPIは無い(Flashであればustreamがユーザの承認のもとでWebCamにアクセスできるので、同じようにMIDIデバイスへのアクセスも可能なんじゃないかと考えたが、どうやらマイクとカメラだけらしい)。MIDIファイルを再生させるだけならembed要素などを使えば(uglyながら)可能だが、一時停止などSilverlightからの(Javascriptを介した)インタラクティブな操作ということになるとそうもいかない。
そこでまず思いついたのがHTML5のaudio要素だ。audio要素であれば、JavascriptからHTMLAudioElementを叩けば、再生や一時停止などが指示できる。もしかしてこれでmidiファイルがサポートされているのではないか、と期待して試してみたが、少なくともcontrols属性を付けて出てきたUIオブジェクトは、未サポートのメディアのものだった。そうすると、今度はカスタムメディアサポートをadd-onとして実装できないかというところに行き着くわけだけど、mozillaのMDCが落ちていていろいろ確認できない。
そしてもう一つの可能性に気づいた。Javaにはjavax.sound.midiというインターフェースがある。だから、Appletを作ってそこからMIDIファイルを再生するようにすればいいのではないか。AppletにはどうやらJavascriptを介した操作の仕組みがあるらしい(ほとんど知られていないそうだが)。MIDIデバイスへのアクセスについては、一度ユーザから認証を得る必要があるそうだが、それさえクリアできれば後は問題なくいけるようだ。
実現方法としては、NPAPIを調べてfirefoxのadd-onを作るより、Appletを書く方が簡単かもしれない(書いたこと無いけど)。ただ、今さらAppletかとも思うし、それならばNPAPIの勉強でもした方が面白いかもしれない。そもそも、カスタムメディアサポートがあるのかどうかも分からないのだけど。
Leave a comment