MezonetJS

MezonetJSで使用可能なMML

発声 [cdefgab+#-]

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を演奏させます。

長さ [l]

音の長さを変えるには、

1[ce8a]

のように後ろに数字を付けます。eは8分音符になり、c,aは
デフォルトの長さ(最初は4分音符)です.

デフォルトの長さを変えるにはlの後に数字をつけます

1[l8ce4g+]

とすれば、c,g+は8分音符、eは4分音符になります.

'.'"は付点(もとの長さの半分の長さを追加)を意味します.

1[l4c.e8.]

とすれば、cは付点4分音符、eは付点8分音符になります

オクターブ [o,>,<]

オクターブを変えるには

1[o4cdeo5cdeo3cde]

のように、oの後にオクターブ番号をつけます。オクターブ番号は1から8までで、大きいほど高い音です。

また>,<でそれぞれ1オクターブ上げ下げできます。(ピアノの鍵盤の配置に準拠しています.他のMMLでは逆になっているものもあるので注意してください)

さっきの音は

1[o4cde>cde<<cde]

と書いても同じです

音量 [v]

vは、音量を変えます。vの後に0-15を指定します。0は無音、15が最大です.

音量2 [@v]

@vも、音量を変えます。@vの後に0-127を指定します。0は無音、127が最大です

音色 [@]

@は、音色を変えます。@の後に数字(0-95)を指定すると、それに対応した音色に変わります。

詳しくは、「音色エディット」を見てください(未実装).

テンポ [t]

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] (未実装)

@dtの後に数(-127~127)を付けると、音の高さが微妙にずれます

1[o4@dt1c] ;cより少し高い
2[o4@dt-1c]  ;cより少し低い

上のMMLを演奏すると、チャンネル1と2の音の高さが
少しだけ違うことによって「うなり」が発生します。

ポルタメント [@por] (未実装)

ポルタメントを発声します。
@por 開始声 終声 [長さ(省略可)]
開始声と終声は音階(cdefgab及びそれらに+#-をつけたもの)
を指定し、開始声の高さから終声の高さまでなめらかに高さが
変わります。長さは、ポルタメント発声中の長さで、4なら4分音符と
同じ長さです。

@por ce 8 は、ドからミまで、8分音符の長さでポルタメントを発声します

開始声と終声の間にオクターブ変更記号<,>が使えます
@por c>c は、ドから1オクターブ上のドまでのポルタメントを発声します

ビブラート [@lfo] (未実装)

@lfo 速さ(0-127),振幅(0-127),遅延(0-255)

減衰率 [ps]

psは音の減衰率を指定します。psの後に0-100の数字をつけます

1[ps5cde]
1[ps20cde]

上の二つを聞き比べると、下の方が音がとぎれ気味になります

エンベロープ選択 [pa]

paは、エンベロープの種類を選択します。paの後に0-15の数字をつけます。

エンベロープを変更するには、「エンベロープのエディット」を見てください(未実装)
デフォルトで定義されているエンベロープには、次のようなものがあります。

1[ps5]
1[pa0cde] ;単調に減衰する
1[pa1cde] ;減衰した後一定の音量に落ち着く
1[pa2cde] ;発声が遅れる。発声後は一定の音量
1[pa3cde] ;発声後、音量が増加する。

繰り返し [()]

( )は、( )の後につけた数字の回数だけ繰り返し演奏します

1[(cde)4]

は、ドレミを4回繰り返します。

1[((cd)2ef)4]

のようなネスト構造も可能です。

ラベルとジャンプ [@label,@jump]

@jumpにくると@jumpの後に書いてある0-9の数字にしたがって、
指定したラベルのある場所にジャンプします。

1[fga]
1[@label1]
1[cde]
1[@jump1]

と書くと、「ファソラドレミドレミドレミドレミ...」と永久に演奏します.

※現実装では次の制限があります.

マクロ機能 [ $xx$ ]

$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] (未実装)

@comの後に文字列("で囲む)を書くと、エディタのタイトルバーにその文字列
を表示します

1[@com"Sample Music"]

注釈 [;]

;をつけた場所から行の終わりまで注釈とみなされます

1[l4cdef]     ;ヴォーカル
2[o3l8(cege)2]  ;ベース

注釈2 [/ .. /]

C言語ライクな注釈が使えます。/* から行に関係なく
*/までが注釈になります

/*
2[edc]  この2行は演奏されません
1[cde]    
*/