MML to MP3 with ぼーか郎における
FlMMLの MML(はてなダイアリーの MML) から mml2mid の MML への変換処理の詳細
2008-05-16

Written by Kenzi NOIKE
E-mail: knoike@gmail.com
blog: http://knoike.seesaa.net/


MML to MP3 with ぼーか郎:
http://noike.info/~kenzi/cgi-bin/mml2mp3/


FlMML の MML マニュアル:
http://coderepos.org/share/wiki/FlMML/Reference

mml2mid の MML マニュアル:
http://coderepos.org/share/wiki/FlMML/Reference

表1の変換処理について,提案・バグ・不具合などがありましたら, 掲示板 まで,お気軽にどうぞ.

表1 コマンド変換表
変換前
(FlMML 用 MML)
変換後
(mml2mid 用 MML)
MML としての役割.変換処理メモ.
CDEFGAB cdefgab 音名.
R r 休符.
# + シャープ(半音上げる)
T[n] t[n] テンポ指定.テンポ値 n は,そのまま.
O[n] o[n] オクタープ指定.オクターブ値 n は,そのまま.
L[n] l[n] デフォルト音価指定.音価数値 n は,そのまま.
V[ns] y7,[nd] FlMML での大まかなベロシティ(音量)指定を mml2mid での MIDI ボリューム指定(コントロール・チェンジ 7)に変換する.
ns:0〜15 → nd:0〜127.
nd = int((ns * ((127-7) / 15.0)) + 7)
@V[n] k[n] 細かいヴェロシティ(音量)指定.ヴェロシティ値 n は,そのまま.
< > オクターブ上げ.(FlMML と mml2mid とで逆向きになる)
> < オクターブ下げ.(FlMML と mml2mid とで逆向きになる)
&(タイ) ^ タイ.
変換例: C2&C8. → C2^8.
&(スラー) (単に削除する) スラー.
変換例: C2&D8. → C2D8.
ゲートタイムの調整は行っていないので,実際の出音はスラーらしくならない可能性がある.
; (トラック英数字をインクリメントする) mml2mid の MML では,各行頭にトラックを表す英数字が必要であるので,変換時にそれを付加している.
; が出現したときに,そのトラック英数字をインクリメントする.
/* ... */ /* ... */(無変換) FlMML では /: がループ開始なので,/ の時点では何も処理をせず,/* かどうかを判断してから無変換のままにするかどうかを決定する.
Q[ns] Q[nd] ゲートタイムの割合の指定.
ns:0〜16 → nd:0〜8.
nd = int(ns / 2)
/:n 〜 / 〜 :/ [〜 : 〜 ]n 繰り返しの指定.
@P[n] p[n] パンポットの指定.小さいほど左,大きいほど右.デフォルトは 64.
@D[ns] D[nd] デチューン.
現在,暫定的な変換処理をしている.
FlMML の MML での ns の 単位は cent であり, mml2mid の MML での nd は, RPN イベントによるデチューンの値であるので,単位の変換が必要であると思われるが, 現在のところ,ns をそのまま用いてしまっている.
ns:-64〜63 → nd:-64〜63.
nd = ns
@'a' FlMML では,フォルマント・フィルタによる発声.
mml2mid では,ぼーか郎による発声.
拡張仕様として, @'あ' という形式での指定も可能.
さらに,「あ」,「い」,「う」,「え」,「お」以外の音節も指定可能.(@'る' など)
@'i' (上と同じ)
@'u' (上と同じ)
@'e' (上と同じ)
@'o' (上と同じ)
@[n] (表2にない場合は,そのまま @[n])  表2にしたがって変換する.
表2にないときは,そのまま変換せずに出力するので, n > 4 を指定することで,GM 音源の音色番号を直接指定できる拡張仕様として使用できる.
@E1,[a], [d], [s], [r]   表2にしたがって変換する.
表2にないときは,削除する.
@E2,[a], [d], [s], [r]   エンベロープフィルター
削除する.
@F[a], [freq], [reso], [kt]   フィルター
削除する.
@N[n]   表2にしたがって変換する.
表2にないときは,削除する.
@W[n]   表2にしたがって変換する.
表2にないときは,削除する.
NS[n] _[n] ノートシフト




表2 FlMML での @[n], @E, @N, @W の組合せから,mml2mid での @音色指定への変換表
FlMML mml2mid オクターブ・シフト FlMML での音色 参考にしたサイト
@0 @0 0 サイン波(あらゆる音がサイン波になるよりはピアノになるほうがよさそう)
@1 @81 -1 ノコギリ波
@2 @82 0 三角波
@3 @80 -1 パルス波
@4 @0 0 ホワイトノイズ(GM 音源にホワイトノイズの音色がないので,とりあえず,ピアノ音色に変換します)
@3 @E1,0,170,0,12 @W50 @0 -1 ピアノ http://d.hatena.ne.jp/korinchan/20071021/
@2 @E1,0,100,0,10 @4 -1 エレクトリック・ピアノ http://d.hatena.ne.jp/korinchan/20071021/
@3 @E1,1,32,96,4 @W20 @16 0 オルガン http://d.hatena.ne.jp/korinchan/20071021/
@2 @E1,1,32,110,4 @19 0 オルガン http://d.hatena.ne.jp/korinchan/20071021/
@3 @E1,4,32,96,12 @W20 @21 -1 アコーディオン http://d.hatena.ne.jp/korinchan/20071021/
@3 @E1,0,100,0,32 @W30 @24 -1 アコースティック・ギター http://d.hatena.ne.jp/korinchan/20071021/
@3 @E1,0,200,0,15 @W6 @30 0 エレクトリック・ギター(ディストーション) http://d.hatena.ne.jp/korinchan/20071021/
@1 @E1,0,80,0,4 @35 -1 ベース http://d.hatena.ne.jp/korinchan/20071021/
@1 @E1,8,20,110,12 @40 -1 バイオリン http://d.hatena.ne.jp/korinchan/20071021/
@2 @E1,0,64,0,32 @46 -1 ハープ http://d.hatena.ne.jp/korinchan/20071021/
@1 @E1,1,16,60,2 @56 -1 トランペット http://d.hatena.ne.jp/korinchan/20071021/
@3 @E1,4,16,80,3 @W35 @65 -1 サックス http://d.hatena.ne.jp/korinchan/20071021/
@3 @E1,4,20,64,4 @W50 @71 0 クラリネット http://d.hatena.ne.jp/korinchan/20071021/
@2 @E1,4,20,64,4 @73 0 フルート http://d.hatena.ne.jp/korinchan/20071021/
@3 @E1,0,0,127,0 @W50 @80 0 PSG音源 http://d.hatena.ne.jp/korinchan/20071021/
@3 @E1,0,0,127,1 @W50 @80 0 PSG音源 http://d.hatena.ne.jp/korinchan/20071021/
@1 @E1,0,20,112,2 @81 -1 シンセリード http://d.hatena.ne.jp/korinchan/20071021/
@4 @E1,0,5,0,0 @N0 C10 o2 f+ 0 ハイハット http://d.hatena.ne.jp/korinchan/20071021/
@4 @E1,0,5,0,1 @N0 C10 o2 f+ 0 ハイハット http://d.hatena.ne.jp/korinchan/20071021/
@4 @E1,0,64,0,32 @N90 C10 o2 d 0 スネアドラム http://d.hatena.ne.jp/korinchan/20071021/
@4 @E1,0,20,0,10 @N127 C10 o2 c 0 バスドラム http://d.hatena.ne.jp/korinchan/20071021/
@4 @E1,150,0,127,300 @N100 @122 0 潮騒 http://d.hatena.ne.jp/korinchan/20071021/
@4 @E1,0,30,0,1 @N0 C10 o2 f+ 0 ハイハット http://d.hatena.ne.jp/mosshm/20071024/p1
@4 @E1,0,30,0,20 @N110 C10 o2 e 0 スネアドラム http://d.hatena.ne.jp/mosshm/20071024/p1
@3 @W55 C10 o1 b 0 バスドラム http://d.hatena.ne.jp/mosshm/20071024/p1
@3 @W40 C10 o3 d 0 タムH http://d.hatena.ne.jp/mosshm/20071024/p1
@4 @E1,0,4,1,3 @N8 C10 o2 f+ 0 ハイハット http://d.hatena.ne.jp/mosshm/20071208
@4 @E1,0,20,34,1 @N90 C10 o2 b- 0 noise http://d.hatena.ne.jp/mosshm/20071208
@0 @E1,0,15,5,1 C10 o1 b 0 バスドラム http://d.hatena.ne.jp/mosshm/20071208
@4 @E1,0,5,15,1 @N105 C10 o2 b- 0 ハイハットオープン http://d.hatena.ne.jp/mosshm/20071103
@3 @E1,0,150,10,12 @W45 @0 0 ピアノ http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,170,0,12 @W50 @0 0 ピアノ http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,150,20,24 @W40 @4 0 E・ピアノ http://bbsmml.so.land.to/parameter.htm
@3 @E1,1,50,50,12 @W50 @17 0 ロックオルガン http://bbsmml.so.land.to/parameter.htm
@1 @E1,1,30,100,12 @W25 @80 -1 シンセリード http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,80,30,36 @W54 @88 0 シンセベル http://bbsmml.so.land.to/parameter.htm
@3 @E1,1,60,50,36 @W26 @19 0 パイプオルガン http://bbsmml.so.land.to/parameter.htm
@2 @E1,2,20,120,24 @52 -1 コーラス http://bbsmml.so.land.to/parameter.htm
@2 @E1,1,20,120,8 @81 0 ファミコン http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,50,30,12 @W42 @24 -1 フォークギター http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,50,50,24 @W50 @26 -1 E・ギター http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,20,80,15 @W12 @30 -1 D・ギター http://bbsmml.so.land.to/parameter.htm
@3 @E1,1,20,60,24 @W6 @31 -1 ロックギター http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,50,40,12 @W20 @34 -1 ピックベース http://bbsmml.so.land.to/parameter.htm
@3 @E1,1,60,0,12 @W36 @38 -1 シンセベース http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,30,12,12 @W20 @106 -1 シャミセン http://bbsmml.so.land.to/parameter.htm
@1 @E1,4,20,110,12 @40 -1 バイオリン http://bbsmml.so.land.to/parameter.htm
@1 @E1,2,20,110,12 @43 -1 コントラバス http://bbsmml.so.land.to/parameter.htm
@2 @E1,0,64,0,12 @46 -1 ハープ http://bbsmml.so.land.to/parameter.htm
@3 @E1,8,40,110,12 @W62 @48 -1 ストリングス http://bbsmml.so.land.to/parameter.htm
@3 @E1,1,40,6,12 @W80 @32 -1 A・ベース http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,24,0,2 @W56 @45 0 ピチカート http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,28,6,12 @W26 @107 -1 コト http://bbsmml.so.land.to/parameter.htm
@3 @E1,2,30,70,12 @W64 @56 -1 トランペット http://bbsmml.so.land.to/parameter.htm
@3 @E1,2,30,70,18 @W20 @57 -1 トロンボーン http://bbsmml.so.land.to/parameter.htm
@3 @E1,6,30,70,12 @W64 @60 -1 ホルン http://bbsmml.so.land.to/parameter.htm
@3 @E1,4,30,70,12 @W30 @58 -1 チューバ http://bbsmml.so.land.to/parameter.htm
@3 @E1,1,40,60,12 @W24 @61 -1 ブラス http://bbsmml.so.land.to/parameter.htm
@3 @E1,3,40,70,6 @W52 @73 -1 フルート http://bbsmml.so.land.to/parameter.htm
@3 @E1,3,50,80,6 @W52 @72 -1 ピッコロ http://bbsmml.so.land.to/parameter.htm
@3 @E1,3,40,60,6 @W56 @77 0 シャクハチ http://bbsmml.so.land.to/parameter.htm
@3 @E1,4,30,60,6 @W52 @75 0 パンフルート http://bbsmml.so.land.to/parameter.htm
@0 @E1,3,40,60,6 @W52 @79 -1 オカリナ http://bbsmml.so.land.to/parameter.htm
@3 @E1,2,24,80,6 @W32 @64 -2 ソプラノサックス http://bbsmml.so.land.to/parameter.htm
@3 @E1,2,30,70,6 @W68 @65 -1 アルトサックス http://bbsmml.so.land.to/parameter.htm
@3 @E1,2,30,60,6 @W40 @71 -1 クラリネット http://bbsmml.so.land.to/parameter.htm
@3 @E1,3,50,40,18 @W76 @68 -1 オーボエ http://bbsmml.so.land.to/parameter.htm
@3 @E1,3,40,70,12 @W62 @22 -1 ハーモニカ http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,40,30,8 @W50 @11 -1 ビブラフォン http://bbsmml.so.land.to/parameter.htm
@0 @E1,0,40,30,4 @W50 @12 -1 マリンバ http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,40,0,4 @W98 @47 0 ティンパニー http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,40,10,4 @W50 @114 -1 スチールドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,30,0,0 @N95 C10 o2 e 0 ロックドラム, A:スネアドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,24,0,0 @N120 C10 o2 c 0 ロックドラム, B:バスドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,10,0,0 @N90 C10 o2 c+ 0 ロックドラム, Y:リムショット http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,10,0,0 @N10 C10 o3 f+ 0 ロックドラム, X:タンバリン http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,8,0,0 @N0 C10 o2 f+ 0 ロックドラム, ↑:クローズハイハット http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N100 C10 o3 d 0 ロックドラム, →:タムH http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N110 C10 o3 c 0 ロックドラム, ↓:タムM http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N120 C10 o2 a 0 ロックドラム, ←:タムL http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,30,0,0 @N15 C10 o2 b- 0 ロックドラム, L:オープンハイハット http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,50,0,0 @N0 C10 o3 a 0 ロックドラム, R:クラッシュシンバル http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,40,0,0 @N95 C10 o2 e 0 E・ドラム, A:スネアドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N120 C10 o2 c 0 E・ドラム, B:バスドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,8,0,0 @N12 C10 o3 d+ 0 E・ドラム, Y:ライドシンバル http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,10,0,0 @N10 C10 o3 f+ 0 E・ドラム, X:タンバリン http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,8,0,0 @N0 C10 o2 f+ 0 E・ドラム, ↑:クローズハイハット http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N108 C10 o3 d 0 E・ドラム, →:タムH http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N115 C10 o3 c 0 E・ドラム, ↓:タムM http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N122 C10 o2 a 0 E・ドラム, ←:タムL http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,40,0,0 @N15 C10 o2 b- 0 E・ドラム, L:オープンハイハット http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,50,0,0 @N0 C10 o3 a 0 E・ドラム, R:クラッシュシンバル http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,20,0,0 @N70 C10 o2 e 0 シンセドラム, A:スネアドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,10,0,0 @N110 C10 o2 c 0 シンセドラム, B:バスドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,20,2,0,0 @N0 @119 0 シンセドラム, Y:スクラッチ http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,10,0,0 @N10 C10 o3 f+ 0 シンセドラム, X:タンバリン http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,6,0,0 @N10 C10 o2 f+ 0 シンセドラム, ↑:クローズハイハット http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N30 C10 o3 d 0 シンセドラム, →:タムH http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N50 C10 o3 c 0 シンセドラム, ↓:タムM http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,20,0,0 @N70 C10 o2 a 0 シンセドラム, ←:タムL http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,0,30,0 @N10 C10 o2 b- 0 シンセドラム, L:オープンハイハット http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,50,0,0 @N0 C10 o3 a 0 シンセドラム, R:クラッシュシンバル http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,16,0,0 @N94 C10 o2 e 0 ガクダンセット, A:スネアドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,50,0,0 @N116 @116 0 ガクダンセット, B:グランカッサ http://bbsmml.so.land.to/parameter.htm
@4 @E1,0,30,0,0 @N0 C10 o5 a 0 ガクダンセット, Y:トライアングル http://bbsmml.so.land.to/parameter.htm
@4 @E1,5,80,0,0 @N40 C10 o3 g 0 ガクダンセット, X:スネア・ロール http://bbsmml.so.land.to/parameter.htm
@4 @E1,10,100,0,0 @N104 C10 o3 e 0 ガクダンセット, ↑:ドラ http://bbsmml.so.land.to/parameter.htm
@4 @E1,5,60,0,0 @N10 C10 o3 f+ 0 ガクダンセット, →:タンバリン・ロール http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,10,0,0 @N10 C10 o3 f+ 0 ガクダンセット, ↓:タンバリン http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,16,0,0 @N94 C10 o2 e 0 ガクダンセット, ←:スネアドラム http://bbsmml.so.land.to/parameter.htm
@4 @E1,200,200,0,0 @N30 C10 o3 c+ 0 ガクダンセット, L:シンバル・ロール http://bbsmml.so.land.to/parameter.htm
@4 @E1,1,60,0,0 @N40 C10 o3 a 0 ガクダンセット, R:シンバル http://bbsmml.so.land.to/parameter.htm
@3 @E1,0,150,20,12 @W45 @0 0 bbs→mml 変換 でピアノ音色を変換して得たパラメータ http://bbsmml.so.land.to/
@4 @E1,0,8,0,0 @N127 C10 o2 c 0 $BD http://sketch.txt-nifty.com/blog/2007/10/flmml_html_a760.html
@4 @E1,0,40,0,0 @N16 C10 o2 e 0 $SD http://sketch.txt-nifty.com/blog/2007/10/flmml_html_a760.html


表2の音色変換について,提案・追加希望・バグ・不具合などがありましたら, 掲示板 まで,お気軽にどうぞ.