1[cc+re-]
のように使用します。
1[ ]
は、チャンネル1を使って[]の中に書かれた内容を演奏する
という意味です。チャンネルは1~10まであって、同時に演奏すると和音が発生できます
1[ceg]
2[egd]
と打てば、2重和音が出ます。
1-3[ceg]
は、チャンネル1,2,3全てにcegを演奏させます。
1,3[ceg]
は、チャンネル1,3にcegを演奏させます。
音の長さを変えるには、
1[ce8a]
のように後ろに数字を付けます。eは8分音符になり、c,aは
デフォルトの長さ(最初は4分音符)です.
デフォルトの長さを変えるにはl
の後に数字をつけます
1[l8ce4g+]
とすれば、c,g+は8分音符、eは4分音符になります.
'.'"は付点(もとの長さの半分の長さを追加)を意味します.
1[l4c.e8.]
とすれば、cは付点4分音符、eは付点8分音符になります
オクターブを変えるには
1[o4cdeo5cdeo3cde]
のように、o
の後にオクターブ番号をつけます。オクターブ番号は1から8までで、大きいほど高い音です。
また>
,<
でそれぞれ1オクターブ上げ下げできます。(ピアノの鍵盤の配置に準拠しています.他のMMLでは逆になっているものもあるので注意してください)
さっきの音は
1[o4cde>cde<<cde]
と書いても同じです
v
は、音量を変えます。vの後に0-15を指定します。0は無音、15が最大です.
@v
も、音量を変えます。@vの後に0-127を指定します。0は無音、127が最大です
@
は、音色を変えます。@の後に数字(0-95)を指定すると、それに対応した音色に変わります。
詳しくは、「音色エディット」を見てください(未実装).
t
はテンポを変えます。tの後に32-1023を指定します.全チャンネル共通で1つだけテンポを指定します.
1[t120cdt150efg]
2[gfedc]
チャンネル2はテンポの指定がありませんが、チャンネル1のテンポ
が変化すると、それに応じてチャンネル2のテンポも変化します
&を2つの音の間に挟むと、スラーを意味します
1[c&d]
2つの音が同じ音の場合、タイを意味します
1[c&c]
^は、直前に発声した音の長さを伸ばします
^の後ろには長さを指定することができます
1[l8 c4^]
は、 1[c4&c8]
と同じ,1[c4^2]
は、 1[c4&c2]
と同じです
@dt
の後に数(-127~127)を付けると、音の高さが微妙にずれます
1[o4@dt1c] ;cより少し高い
2[o4@dt-1c] ;cより少し低い
上のMMLを演奏すると、チャンネル1と2の音の高さが
少しだけ違うことによって「うなり」が発生します。
ポルタメントを発声します。
@por 開始声 終声 [長さ(省略可)]
開始声と終声は音階(cdefgab及びそれらに+#-をつけたもの)
を指定し、開始声の高さから終声の高さまでなめらかに高さが
変わります。長さは、ポルタメント発声中の長さで、4なら4分音符と
同じ長さです。
@por ce 8 は、ドからミまで、8分音符の長さでポルタメントを発声します
開始声と終声の間にオクターブ変更記号<
,>
が使えます
@por c>c は、ドから1オクターブ上のドまでのポルタメントを発声します
@lfo 速さ(0-127),振幅(0-127),遅延(0-255)
ps
は音の減衰率を指定します。psの後に0-100の数字をつけます
1[ps5cde]
1[ps20cde]
上の二つを聞き比べると、下の方が音がとぎれ気味になります
pa
は、エンベロープの種類を選択します。paの後に0-15の数字をつけます。
エンベロープを変更するには、「エンベロープのエディット」を見てください(未実装)
デフォルトで定義されているエンベロープには、次のようなものがあります。
1[ps5]
1[pa0cde] ;単調に減衰する
1[pa1cde] ;減衰した後一定の音量に落ち着く
1[pa2cde] ;発声が遅れる。発声後は一定の音量
1[pa3cde] ;発声後、音量が増加する。
( )は、( )の後につけた数字の回数だけ繰り返し演奏します
1[(cde)4]
は、ドレミを4回繰り返します。
1[((cd)2ef)4]
のようなネスト構造も可能です。
@jump
にくると@jump
の後に書いてある0-9の数字にしたがって、
指定したラベルのある場所にジャンプします。
1[fga]
1[@label1]
1[cde]
1[@jump1]
と書くと、「ファソラドレミドレミドレミドレミ...」と永久に演奏します.
※現実装では次の制限があります.
$x$[cde]
は、マクロ変数xに cde を代入します
マクロ変数は、アルファベットの列を$で囲んだものです
1[ o4 $x$ o5 $x$ ]
のようにすると、$x$は全てcdeに置き換わり
1[ o4 cde o5 cde ]
と同じ音が演奏されます
$b$[v15ps5]
$a$[$b$cde]
1[$a$]
のようにマクロ定義の中にマクロが使用できます(最大15階層ネスト可)
'
は、指定したチャンネルを待機状態にします。
待機状態から演奏を再開するのは、全てのチャンネルが
「待機状態になる、または演奏が終了する」までです。
1[l4 cde' fga]
2[l4 fgab' cde]
この例では、チャンネル1がcde
を演奏後、待機します。そのとき
チャンネル2はまだb
を演奏していないので、それを演奏したあと
待機状態になります。このとき1と2両方が待機状態になったので
演奏が再開され、fga
,cde
が同時に演奏されます。
@comの後に文字列("で囲む)を書くと、エディタのタイトルバーにその文字列
を表示します
1[@com"Sample Music"]
;をつけた場所から行の終わりまで注釈とみなされます
1[l4cdef] ;ヴォーカル
2[o3l8(cege)2] ;ベース
C言語ライクな注釈が使えます。/*
から行に関係なく*/
までが注釈になります
/*
2[edc] この2行は演奏されません
1[cde]
*/