mobilesynth portを動かすアプローチでできることは、結局のところmobilesynthの機能の範囲で、その移植の安定化をはかってもあまり旨みが無いので、proof of conceptにしてももう少し魅力的な実装を使いたい。というわけで次に発見したのがSlMMLだ(正確に言えば発見したというより思い出した)。これは元々FlMMLというflashのライブラリがsilverlightに移植されたもので、他にもObjective-Cの移植がある。iPadアプリに使うということだけが目的ならocmmlをbtouchしてしまえば良いのだけど、それにしてもインターフェースを自作しないといけないので面倒だ。
というわけでいくつかslmmlのソースに手を加えて、一応MonoTouchでも使えるようにした。 http://github.com/atsushieno/slmmltouch
日本語の文字が入っていると落ちるとか、silverlight依存の部分を削ぎ落とす(もともとslmmlはMediaStreamSourceの応用なので当然にSLに依存している)といった作業と、CoreAudioのバインディングを作る作業(これはmobilesynth対応とあまり変わらない)がほとんどで、土日の半分くらいで出来た。
ただ、サンプルアプリがobjcのシグナルエラーやsegfaultで落ちることが多く、理由がいまいちよく分からない。しかもパフォーマンスがかなり悪い。任意のMMLを再生するのは諦めるしかない。この時点で高機能なバックエンドがほしいという目的はほとんど実現できなくなった...
この作業を続けるなら、まずSlMMLの最適化から始めるべきだろうけど、それだとmobilesynthのコードに深入りするのとあまり変わらない状況だ。
...というわけで、iPadまわりはこの程度で終わりにしておこうと思う。ちょうど明日にはようやくHTC Desireが届くので、今後はandroidに戦場を移すことになるだろう。
ただ、その前にmugeneアプリケーションを作成したいと思っている。
Leave a comment