VSQデータの出力に挑戦して5日目。ようやくVocaloid2 Editorが読み込んで発生することの出来る簡単なvsqデータをmugeneで生成できるようになった。MMLにこんな感じで記述して、コンパイルするだけで、.vsqファイルが出来上がる:
// マスタートラック 0 VSQ_INITIALIZE_MASTER t120 BEAT4,4 // ボーカルトラック 1 VSQ_INITIALIZE_TRACK VSQ_SETUP_FIRST_TRACK VSQ_SETUP_DONE 1 あいうえおが 1 l8o5 c4.d2efg2a2 1 OUTPUT_VSQ_TEXT
歌詞と発音コマンドが1つでも食い違うと例外が飛ぶという大変な状態だけど、これで音階と歌詞を別々に記述して効率よく打ち込みができるようになった(例によってMMLでないと嫌だという人にしか意味がないが)。
歌詞のマクロはかなりいかがわしいので、これでどこまできちんと書けるのか正直かなり疑わしいのだけど、とりあえずポルタメントなども指定できるはずなので(しかもスペクトラムが使える...はず)、ノウハウさえ分かっていれば、ブレシネスやオープンネスなど、NRPNやメタトラックでいじれるパラメータはvocaloid2 editor並にいじれるようになるのではないかと期待している(もういじれるのかもしれないが未確認)。
ちなみに、出来上がってから実験してみて気付いたのだけど、発音命令のためのNRPN出力を生成するためにいろいろがんばっていたのは、どうもあまり意味がなかったようで、この辺のNRPNは無くても再生できてしまうようだ(!)。まあRewireなどでデータを送る時にはmeta情報が切り捨てられることになるのかもしれないけど。その意味ではNRPN出力の正しさは全くもって未知数だ。
しかし当初はmugeneの機能のproof of conceptとして試作してみるつもりだったのに、気がついてみたらいろいろvsq対応のための特異な命令をいくつも追加してしまった。思えば拡張性を確保するためのリファクタリングを行ういい機会だったのかもしれない。まあ、コードを改善すること自体は目的ではなかったので(今でも目的はMMLの書きやすいコンパイラを作ることだ)、無理に手を出していたらいつまでも完成しなくてかえってやる気がなくなっていただろうから、これでいいのだろう。
実装がもう少し安定したらVSQ出力のデモになるサンプルMMLを書いてみようと思う。
Leave a comment