VSQ/Vocaloidサポート統合まわりで躓いていたmugeneのIDE?構想だけど(テキスト音楽サクラみたいなのを想像すると近い)、とりあえずSMFだけでも簡単に作れるようにしようと思って、やっつけで編集ツールを作ることにした。はずだったのだけど、いくつか問題に当たって、回避しているうちに時間が無くなってしまったので、とりあえずやっつけでコンパイルと再生しかしてくれないmugene-winというwinformsツールが出来上がった。寝る時間が近づいてきたので、手短に。
- mugenelibのコンパイラのエントリポイントにいろいろ手を加えて、コンソール以外からの呼び出しにもあまり不自由しないようにした。
- 99.99%のユースケースで取り込まれるマクロは全て取り込むことにした。これでコマンドライン引数にはMMLファイルを渡すだけでコンパイルできるようになった。従来のモードは --nodefault オプションで対応した(csc/gmcsの--noconfigみたいなものだ)。VSQサポートに使われるマクロは、発音命令の意味が変わるので取り込まないが、--vsq が指定されたら --nodefault が無い限り取り込むようにした。
- monodevelopのtarball packagingまわりがうまく動作しないところにいろいろハマったので、いろいろ手直しした。
さてmugene-winは、今日コードを書き始めた時は、Scintilla.NETを使っていた。しかしこれはwin32依存になってしまうし、そこまでして作ってもおいしくない気もしている。エディタとしてはTextBoxよりはるかにまともそうだけど。あとmonoで動かすとどうもcodepage1361が無いと言われてエラーになってしまう。調べてみると、確かにハングルの後出し仕様なんて対応していない(encodingの実装が書かれたのは2001年とか2002年とかだ)。これはencodingの実装を加えないと、mono on windowsですら動かせない。というわけでScintillaは使わないことにした。
そうするとTextBoxでやるくらいでやっつける以外の方法を思いつかなかったのだけど、TextBoxをエディタとして使うというのはさすがにナンセンスすぎるので、とりあえず編集不能にして、ファイル選択だけやらせて、MMLの編集は好きなエディタでやりましょうね、というツールに方向を変えた。
それでも、まだSMFをビルドしてそれをPortMidiPlayerに渡して自動再生させるという作業がある。また、winformsではやらないかと思うが、どうせならmldspみたいなビジュアルプレイヤーと連動させたい。
まあ、とりあえずはこれでmugeneは今までよりもはるかに使いやすくなったはずだ。これでVocaloidと連動して曲が再生できるようになったら楽しいのだけど。
Leave a comment