・トラックとチャンネルの概念
普通、MIDI音源には、16個のチャンネルがあり、様々な音色の中から、16種類の楽器を1度に発音することが出来る仕組みになっています。
サクラでは、その16のチャンネルを、0〜511のトラックのいずれかに割り振って使います。
初期状態では、トラック0にチャンネル1、トラック1にチャンネル1、トラック2にチャンネル2、トラック3にチャンネル3・・・と、割り振られています。
これを割り振りなおすには、Track(n)とChannel(n) という命令を使います。
このように、違う楽器を16種類割り当てることが出来ます。
Track(0) Channel(1)
Voice(1)//チャンネルの1番に、音色の1番(ピアノ)を設定。
l4 o5 cdefgfedcegec1
Track(1) Channel(2)
Voice(33)//チャンネルの2番に、音色の33番(ベース)を設定。
l4 o3 ccccccccccccc1
・トラックと時間
音というものは、音の高さと、それが発せられる時間によって成り立っています。サクラでは、Time命令によって、音の発せられる時間を制御できます。
この命令には2種類の指定方法があります。
- Time( 小節:拍:ステップ ) 指定
普通の音楽製作ソフトで利用されている時間の指定方法です。
初期状態では、Time( 1: 1: 0)から始まります。
Time( 1:1:0 )//1小節目の1拍目に設定。
l4 cdef
Time( 2:1:0 )//2小節目の1拍目に設定。
l4 gfed cdef
Time( 3:1:0 )//3小節目の1拍目に設定。
l4 efga //即ち、音が重なる
ところが、インターネットなどで他人に公開するためのデータには、音源のリセット命令や、音色エディットの命令を送るために、1、2小節間を空けておきます。
そこで、System.MeasureShift(n)を使うと、その開始小節を変えることができます。
Include(stdmsg.h);//リセット命令のため
System.MeasureShift(1);
Time(0:1:0)
ResetXG();ResetGS();ResetGM();//音源リセット
Time(1:1:0)
l4 cdef gfed cege cege cege c1
また、音楽と言うのは、だいたい四小節で区切りですので、開始小節を0小節目から始める事にすれば、ちょうど、4の倍数小節目が、区切りの良い小節になるので、計算が楽です。(この辺りは好みの問題になってきますけれど。。。)
Include(stdmsg.h);//リセット命令のため
System.MeasureShift(2);
Time(-1:1:0)
ResetXG();ResetGS();ResetGM();//音源リセット
Time( 0:1:0)
l4 cdef gfed cege cege
Time( 4:1:0)
l4 cdef gfed cege cege
Time( 8:1:0)
l4 cdef gfed cege cege
Time(12:1:0)
l4 cdef gfed cege cege
//...
- Time = StepTime 指定
Timeをステップ値を指定します。しかし、考えてみても、時間を四小節目に合わせるのに、四分音符分解能が96だと1小節が96X4=384で、四小節は1小節が4つだから、4を掛けて、384X4=...なんて使い方はしません。
時間をちょっと進めたいときなどに、相対的に、
Time = Time + !4;
と、指定します。
この例では、 r4 とほぼ同じ意味(*1)で、あまり意味がありません。あとで、変数が出てくるのですが、変数をこのTimeと組み合わせると、いろいろと面白いことが出来るようになります。
(*1: r4 では、発音イベントを行ってしまうので、正確には、r*4と同じ意味です。 r*で、発音イベントを処理しません。)
//変数を使って楽をする例
l4 cdef //...MMLが続いていて...
Int A;//変数Aを宣言。Aが生まれた。
A = (Time);//Aに現在の時間を代入。
l4 cdef gfed//...永遠と続くMML...
//あ、Aの位置に戻りたいなぁ・・・
//戻ろう!
Time = A;//これで、Aの時間に戻れました。
l4 efga //...めでたし、めでたし。