MMLの三大アプリケーションはマビノギ、TSSCP、はてなMML記法

ここでのMMLとはMusic Macro Languageの略で、音楽を記述するための簡易的な言語のことです。
日本においていまだに新しいMMLデータが頻繁に作成され、それが広く共有されるようになっているのはこの三つのうちのどれかでしょう。
(投げました)
マビノギはいわゆるネトゲーですが、なんとMMLを入力してそれを演奏させるという要素があるんです。しかもそれをゲーム内で売買することもできるらしいです。いくつかの楽器の音色が用意されています。確か最大三トラック使えたはず。
TSSCPはとよしま氏が作成されたTSSというMMLで記述するタイプのソフトウェアシンセサイザーを使用して、クリップボードにコピーされたMMLを演奏するツールで、記述を楽にするためのマクロ機能が搭載されています(TSSCPはマクロを展開してTSSに渡す)。TSSの音源には基本的なものではDuty比を選択可能な矩形波三角波ファミコン三角波(!)、鋸波、サイン波が用意されており、さらには波形メモリ音源、FM音源も利用可能です。トラック数はほぼ上限無しな上すべての音源を同時に使えるのでポテンシャルは非常に高いです。ちなみにTSSCP互換で、機能も拡張されており音源も独自実装な偽TCPというものも存在します。
さて新進気鋭のはてなMML記法ですが、これも前の二つに並ぶメジャーなものになる可能性を十分秘めています。

はてなmml記法でMOTHER3のあの曲とMoon Whistle(アナザー版)

http://d.hatena.ne.jp/hatenadiary/20071011/1192086766
ついにmml記法実装!というわけなのでJSMML向けに書いたのをmml記法にしてみた。


Another Moon Whistle - MOON WHISTLE #2

t134@2@E1,0,0,127,127q16o6a2<e2d32e32d4.&d16l4>ab<c>b12<c12>b12aga32b32a1.

MOTHER3 - ポーキーのポーキー

/:t144@3@w50v15o7q12 l32/:3gfd>bgfd>b<<d>bgfd>bgf<:/
l16q8</:8cd+://:8df://:8d+g://:2fg+b<d://:2fd>bg+:/
@w25q8l4cdq12d+.&d+16q8c16d+fq12g2r8 q16gq12<l16cdl8d+fgcf+4f+d2.r
l8dd+fl16gfl8d+dd4cd+2. >g4<l16cdl8d+dcd+d4>a<d2.r
dd+fl16gfl8d+dd4dc2&c8c o3l16d+g<c>g<cd+gd+g<cd+cd+g<cr8.
l4q16c<c>gq10a+l8a+q12g+2.&g+8 q10g+a+<cr16>a+.g+g+4g+q12g2.&g8
q10gg+a+r16g+.gg4gq12f1l16fd+drd+rfrd8g1&g8
>g4<l16cdl8d+fg>l16cg<l4cdd+.r16c16d+fq16g2v8g1:/;
/:t144@2v10o3q12 l8/:rg<g>g<g>g:/< l4cccc>gggg<cccc>
/:4g8<d16g16>:/< l8cr1r2.r8cr2.r8
l16/:/:4d8a<d>:/>/:4g8<dg>:/</:8c8g<c>:/:/l4cccc>
l16/:4f8<cf>://:4a+8<fa+>:/</:4d+8a+<d+>://:4c8g<c>:/
>/:4f8<cf>:/</:4d8a<d>:/>/:4g8<dg>:/<
q16 r1r2r4r8r16 <d+g2d+2c1:/;
/:t144@3@w50v6o7q12s16 l32r32/:3gfd>bgfd>b<<d>bgfd>bgf<:/
q8s64 l16</:8cd+://:8df://:8d+g://:2dfg+b<://:2d>bg+f:/
q12s16 @w12l4r32cdd+.&d+16c16d+fg2&g16 v6d+4l16d+fl8gg+a+d+
v6@w50q8 l16/:8df+://:8df://:16cd+://:8df+://:8df://:8cd+:/
q12o3cd+g<c>g<cd+gd+g<cd+cd+g<cd+r8.q16l4cd+c
@w12o6 q8l16/:8fc>af<://:8gc>af<://:4fc>af<://:4f+c>af<://:4fc>af<:/
v8q10 r8>>d+4l16d+fl8gg+a+r2r16 <d16l4gg+a+&a+8.g16<cdq16d+1:/;
/:t144@4
o2 l8/:v8q1>c<v3a16a16v8q12eq1v3a16a16v8q12eq1v3a16a16:/
/:8v8q1>c<v3a16a16v8q12eq1v3a16a16:/ v8q12er1.r4.er2.r8
/:16v8q1>c<v3a16a16v8q12eq1v3a16a16:/v8q1>c<v3a16a16 o3q16 l4v6c<<<c>>>g
o2 l8/:14v8q1>c<v3a16a16v8q12eq1v3a16a16:/ v8q12er1r1.r4. o5q4 l16/:4gfd>b:/:/;

いやーはてダ始めてほんと良かったなあ。

10/13追記

エンベロープを少しまじめに設定してみた。ノイズは後で直します。
エンベロープをまじめに設定してみた。採譜ミスを修正。ノイズはあとで。

/:t144@3@w50v12o7q12@e1,0,8,112,1 l32/:3gfd>bgfd>b<<d>bgfd>bgf<:/
l16q12@e1,0,8,112,1</:8cd+://:8df://:8d+g://:2fg+b<d://:2fd>bg+:/
@e1,0,8,112,8@w25q8l4cdq12d+.r16q8c16d+fq12g2r8 @e1,0,8,112,1q12gq12<l16cdl8d+fgcf+4f+d2.r
@e1,0,0,127,8l8dd+fl16gfl8d+dd4cd+2. >g4<l16cdl8d+dcd+d4>a<d2.r
dd+fl16gfl8d+dd4dc2&c8c @e1,0,8,112,2o3l16d+g<c>g<cd+gd+g<cd+cd+g<cr8.
@e1,0,0,127,8l4q16c<c>gq10a+l8a+q12g+2.&g+16r16 q10g+a+<cr16>a+.g+g+4g+q12g2.&g16r16
q10gg+a+r16g+.gg4gq12f1l16fd+drd+rfrd8g1&g16r16
>g4<l16cdl8d+fg>l16cg<l4cdd+.r16c16d+fq16g2v6g1:/;
/:t144@2v8o3q12@e1,0,0,127,1 l8/:rg<g>g<g>g:/< l4cccc>gggg<cccc>
/:4g8<d16g16>:/< l8cr1r2.r8cr2.r8
l16/:/:4d8a<d>:/>/:4g8<dg>:/</:8c8g<c>:/:/l4cccc>
l16/:4f8<cf>://:4a+8<fa+>:/</:4d+8a+<d+>://:4c8g<c>:/
>/:4f8<cf>:/</:4d8a<d>:/>/:4g8<dg>:/<
q16 r1r2r4r8r16 <d+g2d+2c1:/;
/:t144@3@w50v6o7q12@e1,0,8,112,1 l32r32/:3gfd>bgfd>b<<d>bgfd>bgf<:/
v6q12@w12@e1,0,8,112,1 l16r32d+/:7gd+://:8bg://:8<cd+>:/</:2dfg+b<://:2d>bg+f:/
q12@e1,0,8,112,4 @w12l4r16cdd+.&d+16c16d+fg2&g16 @e1,0,8,112,4v6d+4l16d+fl8gg+a+d+
v6@w50q12 @e1,0,8,112,1l16/:8df+://:8df://:16cd+://:8df+://:8df://:8cd+:/
q12o3cd+g<c>g<cd+gd+g<cd+cd+g<cd+r8.q16l4cd+c
@w12o6q12l16/:8fc>af<://:8gc>af<://:4fc>af<://:4f+c>af<://:4fc>af<:/
v8q10 @e1,0,0,127,8r8>>d+4l16d+fl8gg+a+r2r16 <d16l4gg+a+&a+8.g16<cdq16d+1:/;
/:t144@4
o2 l8/:v8q1>c<v3a16a16v8q12eq1v3a16a16v8q12eq1v3a16a16:/
/:8v8q1>c<v3a16a16v8q12eq1v3a16a16:/ v8q12er1.r4.er2.r8
/:16v8q1>c<v3a16a16v8q12eq1v3a16a16:/v8q1>c<v3a16a16 o3q16 l4v6c<<<c>>>g
o2 l8/:14v8q1>c<v3a16a16v8q12eq1v3a16a16:/ v8q12er1r1.r4. o5q4 l16/:4gfd>b:/:/;

はてなMML記法でのエンベロープの練習

2chMMLスレで保守代わりに投稿した小ネタでエンベロープの練習。
TSSのsコマンドに慣れてたからちょっと戸惑っているけれどもこっちのほうが詳細に設定できるんだよな。ちなみに偽TCPにはこっちと同等の命令が搭載されています。また、TSSのsのパラメータはほとんど@E1の三番目のと同じ意味(sの値の範囲は0-255、@E1は0-127であることに注意)。すみません、多分間違ってます。

t144@3v12o5l8@E1,0,127,64,8
q8b.r.<c+e>br4.@E1,0,64,20,8q12a4.a6b6<c+6>
v8@E1,0,127,20,8q16b2e2q12<c+2>a2v12;
t144@3v12o5l8@E1,0,127,64,8
q8g+.r.abg+r4.@E1,0,64,20,8q12f+4.f+6g+6e6v8
@E1,0,127,20,8q16g+2b2q12a4c+4e4d+4v12;
t144@2@E1,0,0,127,8v10o5l8q8c+.r.daf+r4.q16d4.&d6e6d6c+1>f+2b2;
t144@4@E1,0,0,64,4v6q2l16o6/:7aaaa<v10cv6>aaa://:4ar:/;

いま思いつく限りではてなMML記法(というかFlMML)に欲しい機能

  • ピッチモジュレーション(できればTSS互換で)
  • ノートシフト(できればTSSCP互換で)
  • マクロ機能(できればTSSCP互換で)
  • 相対音量変化(つまりTSSの(, )コマンド)
  • 個人的には@E1コマンドは偽TCP互換の@sが良かった…
  • テンポはトラック共通(つまり一つのトラックで宣言すればいいようにする)
  • TSSの^(d4&d8とd4^8が等価になる。タイの記述が簡単になる)
  • 微小音程変化(TSSのkコマンド。コーラスエフェクトには必要)
  • ステレオ化(できればTSS互換で)
  • TSSのsコマンドみたいに一音中で音程を変化させる機能も欲しい(一方向のピッチベンド)
  • はてな中のMML記法で書かれたMMLを集めたMMLライブラリー!!
  • 上の関連で曲にタイトルも付けられるといいね
  • ループ!忘れてた

今更言っても仕方ないけどFlMMLの人にはTSSCPとの互換性も考慮して欲しかった…せっかくのTSSCPMML資産を有効に利用できないのは残念。

10/12追記

ぶっちゃけ偽TCPにある機能は全部欲しい(笑)