アンサンブルを鳴らしてみよう


  1. トラックとチャンネルの概念
  2. 実際の使い方
  3. コメントについて

もう、MMLの基本は完璧なので、ここからは、MIDIについてと、"kfm"独自の文法の説明になります。

トラックとチャンネルの概念

これから、少しMIDIというものについて解説します。「MIDIってよく聞くけど、MIDIって一体なんだろう?」って思います。さて、専門の本によれば、MIDIというのは、キーボードなどの演奏をデジタル情報として他の機器に伝えたり、記録したりする為のものです。

そして、現在インターネット上で、よく耳にするSMF(Standard MIDI File)というのは、そのMIDI情報を記録したものを、全世界標準の企画にしたものです。また、インターネット上では、標準が当たり前ですので、略して、MIDIファイルなどといえば、このSMFを指すことになります。もちろん、"kfm"も、このSMFを作成します。

普通、今の(ソフトシンセを含む)MIDI音源には、16個の別々のチャンネルがあり、様々な音色の中から、16種類の楽器を1度に発音することが出来るようになっているのです。

それでは、16個の和音しか鳴らせないのかと言えば、そんなことはありません。しかし、各MIDI音源によって同時に発音できる音数が決まっていますので、一度確認してみるといいです。

(ちなみに、Roland のソフトシンセ VSC-88の仕様には「最大同時発音数 128音」と、書かれていました。誰か本当に128音同時に鳴るのか確かめてみてください。)

ところで、チャンネルが16個だからと言って、16パートだけの演奏を作っていては、和音表記の苦手なMMLからは、最大発音数16音そこそこの曲しか打ち込めないことになります。

そこで登場するのが、トラックという考え方です。1つのチャンネルを、同じ楽器を使用するいくつかのトラックに分けてしまうのです。このように1つのチャンネルをいくつかのトラックに振り割る事によって、より多くの演奏パートを、演奏できるようにしているのです。

"kfm"では、0〜127までの合計128トラックを自由に扱う事が出来ます。

だから、もし、1曲の中で、バイオリンのパートが16パート、チェロのパートが4パート、コントラバスが1パート、あったとしても、バイオリンの16パートを、チャンネル1に、チェロの4パートを、チャンネル2に、コントラバスを、チャンネル3に、と、振り分ければ、問題なくj演奏できるというわけです。

 

実際の使い方

それでは、まず、トラックとチャンネルの指定方法を書きます。

_tr(n) nには、トラック番号を書きます。複数指定可能で、n1-n2(n1〜n2まで)、または、n1,n2(n1とn2)というように指定してください。
CH(n)
CH=n
nに、MIDI機器へ出力するチャンネル番号を書きます。(もちろん複数指定は出来ませんし、出来ても意味がありません。)

"kfm"では、1行目から順々にコマンドが読み込まれていきます。そのため、この"_tr()"でトラック番号を指定したら、それ以降の部分、次に"_tr()"が宣言されるまでの間を、1つのトラックと、見なします。

CHのチャンネル番号方法指定に、2つの方法があります。これは、後で(マクロの項で)理由を言いますが、大文字から成るコマンドには、どれも2つの指定法法があるのだと覚えておいてください。

なんだか、くだらない曲にこだわってしまいますが、こんなのはどうでしょう?

t120;テンポ指定

_tr(0)
CH(1)@72 l4 o5 v120 q14
gee2 fdd2 cdef ggg2

_tr(1)
CH(2)@0 l1 o4 v100 q14
c0e0g c0f0a c0e0a d0f0g0b1

_tr(2)
CH(3)@32 l4 o3 v100 q14
c.c.g f.f.d c.e.a g.d.g

1行目の"t"は、テンポ指定コマンドで、1分間に4分音符をいくつ分鳴らすかというテンポを指定します。値の範囲は、20〜999です。テンポをいろいろ変えて遊んでみてください。

それから、一度、トラック中でチャンネルを指定してしまえば、次に同じトラックを使うときも、そのチャンネル番号を覚えています。

{初めの2小節}
_tr(0)
CH=1 @0 v120 l8 q14
c4cdeeg4e eddc2

_tr(1)
CH=2 @33 v100 l1 q16
cc

{次の2小節}
_tr(0) l4 ee8f8g>c<a>c<g1
_tr(1) cc

そして、複数トラックを一度に指定する事もできます。全く同じ内容を書き込みたいとき(初期設定など)に便利です。

_tr(0-2,11,13){ 0,1,2,11,13 の複数トラックを指定 }
@0 v120 l4 o4 q16

_tr(2)  cdefg
_tr(11) efgab
_tr(13) gab>cd<


・コメントについて

追記ですが、MMLの途中にコメントを入れたい時があります。"kfm"では、2種類のコメントのタイプがあります。

{ ... } 囲まれた領域をコメントにします。ネスト出来ないので注意してください。
; ;から改行までの間をコメントにします。こちらは、ネストでもなんでもしてください。

(エディター"kfmpad"では、"{ ... }" コメントをジャンプポイントとして使用します。)

    l8cdefg { Comment1 }
    l8cdefg { Comment2 } cdefg
    l8cdefg ; Comment3

メインメニューの [Tool]-[Comment List] もしくは、F4キー、もしくは、ツールバー(下の図のボタン)のコメントリストの使い方、分かりましたか?

com_list.gif (2498 bytes)

MMLのソース中にある"{"..."}"で囲まれたコメントをリストアップしてくれるという優れものです。もちろん、その選んだコメントの個所へ、すぐにジャンプすることも出来るのです。(特許出願予定中?な、くらい便利です。)


次のページへ / 目次へ