リズムモードでは、任意のアルファベット(A-Z, a-z)の1文字に、マクロ文字列を割り当てることが出来ます。これは、リズム楽器を記述するのに適しています。
普通MIDI楽器のリズムチャンネルでは、以下のようにキーボードの1音1音に違う音が割り当てられています。
ノート番号 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
MMLノート名 | o3c | o3c+ | o3d | o3d+ | o3e | o3f | o3f+ | o3g |
割り当て楽器 | Kick | Stick | Snare | Clap | Snare2 | Tom | Hi-Hat | Tom |
そのため、これをMMLで記述すると、o3c o4d+ o5g o2f+と、1音ごとにオクターブを変えたりシャープをつけたりと、煩わしいことこの上なく、どの音程が何のリズム楽器なのか、後で見てもさっぱりわからないという状況になってしまいます。
そこで、あらかじめ、スネアの音は、アルファベットのsに、ハイハットの音は、hに割り当てると決めておけば、リズム楽器の表記が簡単になります。
*注意*
リズムモードにしたからと言って、自動的に リズム楽器チャンネルに設定されるわけではありません。
リズム楽器を鳴らす場合には、GM音源、GS音源の場合は、チャンネル10がリズム楽器チャンネルになっています。そしてXG音源の場合には、プログラムチェンジとバンクチェンジを使います。Voice(リズムマップ番号,127,0)を書きこんでください。→詳しくはお使いのMIDI音源のマニュアルを。
宣言:
Rhythm{ ... }リズムモードにするには、そうしたい部分を
Rhythm{ 〜 }
で囲います。Rhythm{
// 何にもないけど、ここはリズムモード
}
マクロ定義:
$(char){ 文字列 }アルファベット一文字(char)に、文字列を割り当てます。 Channel(10);//リズムチャンネルに
//リズムマクロの定義
$b{n36,}//bにn36,を割り当てる
$s{n38,}//sにn38,を割り当てる
Rhythm{ //リズムモード
[4 l4 b s b s8s8 | b s b s16s16s8 ]
}
リズムモード内で、関数呼び出しや、変数を使いたいときは、それらの文を、(...)で囲ってください。
(...)の中は、リズムモードと見なしません。Channel(10);//リズムチャンネルに
Rhythm{
$b{n35,} $s{n40,}
(v.onNote(80,60); q.Random(10);)
//()の中は、リズムモードと見なさない。
[4
l16 bbsb bssb
(EP.onTime(40,127,2))
sbbb sbbs
]
}
ところで、同時にいろいろな音を鳴らしたい場合は、どうすれば良いのでしょうか?
トラックをいくつも作れば、良いのでしょうけど、それも面倒だという場合があります。
そんなときは、"r-1"などのようにすると、1小節分タイムポインタを戻すことが出来ます。Track(10) Channel(10)
$b{n36,}
$s{n38,}
$h{n42,}
$c{n49,}
Rhythm{l16 [4
c1 r-1
hhhh hhhh hhhh hhhh r-1
brrb srrb rrbr srrr
]}
次は、ノートオンオプションを使って、リズムにグルーブ感をつけてみましょう! //----------------------------------------
//リズムで遊ぼう!
Track(10);Channel(10)
$b={n36,};$s={n38,};$h={n42,};$m={n44,};
//サンプルフレーズをマクロ文字列に登録。
#sample = { l16
Sub{ Rhythm{
[4 hhhh hhhh rhrh mrhh ]
}}
Rhythm{
[2 [2 brbr srrb rrbr :srrr ] ssss]
}
}
//さぁ、タイミングを使って遊ぼう!
t.onNote(0,2);#sample;r4
t.onNote(0,8);#sample;r4
t.onNote(0,8,4,-2);#sample;r4;//めくるめくゆらめく
//次は、ベロシティだ!
t.onNote(0,4);
v.onNote(120,70);#sample;r4//表にアクセント
v.onNote(70,120);#sample;r4//裏にアクセント
v.onNote(100,60,80,60,120,50,80,60);#sample;//1拍3拍にアクセント
リズムに関しては、\Sample\Rhythm\フォルダーの中にサンプルをたっぷり入れておきましたので、遊んでみてください。
●リズムマクロに引数を付ける。
リズムマクロの中に、?を書くと、もし、Rhythmモードで、その後ろに数字があったとき、?を、数字に置換して展開するようになってます。
$b{n36,?,,100} と定義して、Rhythm{ b4 }で、 n36,4,,100 と展開される
これで、ベロシティ付きリズムや、タイミング付きリズムを表現できます。
$S{n38,?,,127}
Rhythm{ l8[4 ssSs ssS16S16s ] }
●リズムモードの中の "Sub"
リズムモードで、"Sub"を使うには、"(Sub)"のように、カッコで括る必要があります。
しかし、毎回これを書くのは、非常に面倒なので、以下のように、(Sub)を省略することができます。
CH(10);l16
Rhythm{
[4
{ hhhh hhhh hhhh hhhh }
{ b__b s__s b_s_ s__s }
c1
]