基礎講座3

基礎講座も最終章。もう頭パンク寸前でしょーけどファイトです!(^-^;) チャネルとトラックの区別をつけるため、ケータイの着メロ作成モードでいう旋律1、旋律2という呼び方をここではパート1、パート2…という風にします。

ドラムトラック
チャンネル9にプログラムチェンジを使わないと、自動的にドラムトラックとして扱われます。まずは始めにパート(チャネル)7,8,9に普通にドラムパートを記述する例を見てみましょう。

7[I177N1]
8[I161{N8N8R4}2]
9[I166{R4N4}2]

プログラムチェンジでI177(クラッシュシンバル1)、I161(バスドラL)、I166(スネアM)を設定する事により、それぞれのパートでInst.IDから128引いた値 49、33、38がノートナンバーとして自動設定されています。

さて、これらのドラムパートを全てチャンネル9に突っ込んでしまいましょう。パートに任意のチャネルを割り当てるには環境変数$C、ノートナンバーの指定には$Nを使います。

7[$C9$N49N1]
8[$C9$N33{N8N8R4}2]
9[  $N38{R4N4}2]

パート0〜15、16〜31は自動的にチャネル0〜15に割り当てられるので、パート9のところでは$C設定は省略しています。チャンネル9をドラムトラックとして使うメリットは、空きチャネルが増えるのでその分ノーマル音色に使えるパートが増えると言うこと、デメリットは音量設定がチャンネル単位であるため、それぞれのドラムセットごとに細かい音量設定ができない、ということです。

発音中処理
SMML3の基本構文は、発音前のコマンド、発音コマンド、発音中のコマンドの順で記述するようになっています。例えば、

V20 !-240 A1

という風に発音コマンドA1の前に、音量設定とピッチベンド(デチューン)を行っています。このA1で発音中に音量を変化させたり、ピッチベンドさせたり、パンポットを移動させたり、ということがSMML3では標準で可能になりました。発音中のコントローラとして使えるのはピッチベンド(!)と、コントロールチェンジ(@)の2種類です。各コマンドの最後の引数にそのメッセージを挿入する位置を100分率で指定します。

例えば、先程のAで全音符分発音している時、50%発音し終わった時点でピッチベンドを20にするには、

A1 !20,50

とします。更に、60%発音し終わったところでコントロールチェンジ11(エクスプレッション)を120にするには、

A1 !20,50
  X120,60

とします。もちろんXを@11としてもいけますがユーザコマンドを使ったほうが便利でしょう。しかし、クレッシェンドをしたい場合や、ギターのチョーキングのような処理をしたい場合、このように発音中のある時点ごとに値を入力してたら大変です。そこで、FDF記述法というものを用います。ある地点xである値yにするというのをここでは(x,y)という風に記述することにします。

例えば、40%位置から100%位置にかけて、X30からX120へ徐々に変化させたいなら、

X30:127,40:100,90

とします。(40%,30)→(100%,127)の間は計算で自動補完し、90個のメッセージに内部展開されます。さらに、この変化位置の定点を増やしたい場合があると思います。発音中に一回最大音量にはなるんだけど、そのあとだんだん小さくしたりとか。

例えば、ピッチベンドで、

A:(0%,-200)
B:(30%,8191)
C:(70%,6000)
D:(100%,0)

において、A→B→C→Dとしたいとします。そしたら、

!-200:8191:6000:0, 0:30:70:100, 20:7:30

とすればいいです。第1引数に設定値、第2引数に挿入位置、第3引数が各区間ごとの生成メッセージ数です。A→B間が20個、B→C間が7個、C→D間が30個の!コマンドの列に内部展開されます。

基礎講座終了です!お疲れ様でした!

メインへ