2012年3月11日日曜日

構文解析まではできた

独自PSG音源エミュレータで音楽を鳴らすためのMMLコンパイラを作成中。
本当は、この土日で完成させる予定でしたが、昨日、スマートフォンを買ったり、色々と設定やらをしたり、遊んでいたところ、完成しなかった・・・orz

とりあえず、今日の昼から開発を再開して、構文解析まではほぼ完成。
ただ、色々と細かい所ができてないです。

構文仕様としては、下図のような感じになりました。(色々足りないかも)

ごく簡単なマクロ言語です。
「$なにがし」でマクロを定義して、「Ch0~5」でチャネル毎の音符情報を書きます。

分解性能を周波数と同値にしたお陰で、「%」というオペランドを使って、音の長さに対するキーオンの時間の割合というものを定義できました(これがやりたかった)。%を低めに設定すればスタッカートみたいな感じになり、高めに設定すればレガートになる感じです。

ちなみに、ボリューム(音量)としては、マスターボリューム(全チャネル共通のボリューム)とチャネル別のボリュームのみで、ヴェロシティ(音符単位のボリューム)は無い仕様にしました。
できなくもないけど、私が作る曲では概ね要りません。
必要な時は、MIDIからの変換ツールの方でボリュームオペランド(v)で調整すれば良いし。
ただ、それだとデータ量が多くなってしまうので、改善の余地ありかもしれませんが、今のところ、多彩なヴェロシティの曲を作るつもりは無いというのが一番の理由。)
一応、データ的にはヴェロシティーに対応させる空き領域は有りますが。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...