3号MML→MIDIの変換に大苦戦したのでメモ
変換にはMML2MIDのWindows版を使用。
PetitModemで送ったMMLをMML2MIDで開けるように大量の置き換えをした。
具体的には、
・Q以外のすべてのアルファベットを小文字に
・qは大文字に
・#は+に
・シャープフラットは音長の前に書く(プチコン4と同じ仕様)
・MMLの最初に #swap<> 、#swap() の2行を追加
・チャンネルごとに改行を入れる。逆にそれ以外の改行はすべて削除。
・:0の前のテンポはどこかのチャンネルに入れる
・チャンネル指定(:n)を大文字アルファベット、スペース、Cn+1に置き換え
(例えば :0 → A C1、:1 → B C2 など)
この時Cの値は1〜16なので1ずれる。またC10は使わない(C9の次はC11)
その代わりドラムパートはすべてC10にする。C1〜16を使い切って足りないときは同じ楽器なら同じ番号でもよい
・各チャンネルの最初(Cnの後)に V1 を追加
・&は^に置き換え、^の後の音程を削除
( ^c → ^ , ^d → ^ ,...と置き換えすると楽)
スラーはできない
・v→k(音量→ベロシティ。( ) で変更されるのがMML2MIDではベロシティのため。)
・@v→v(ベロシティ→音量)
プチコンでは音量とベロシティの初期値は127なのでチャンネルの最初にk127v127を追加するとよい
・@d→D(未検証)
・エフェクト系は消す ポルタメントもなさそう
・楽器番号は0〜127にする。ただしドラムは@0
・マクロは1行ごとに分け、行の初めから$マクロ名 マクロ内容
マクロ名は$0a〜$9a, $0b〜$9b, $0c〜$9c, …, $0z〜$9zの260個まで
呼び出しは$マクロ名
・変数はZ{z0=値} 呼び出しはz0 のようにする
変換はMMLファイルをbin_w32\mml2mid.exeのファイルのアイコンにドラッグ&ドロップ
(これぐらい自動化したほうがよさそう)
http://hpc.jp/~mml2mid/