プログラムチェンジは
音色の切替をするためのメッセージです。シンセサイザーやキーボードの音色切替ボタンを押すと、通常はプログラミングチェンジメッセージが送出されます。
プログラムチェンジも本来コントロールチェンジの一種なのですが、使用頻度が高いため独立のメッセージとして定義されています。
プログラムチェンジメッセージは次のようになっています。
☆プログラムチェンジ CnH xxHn : チャンネル (0H〜FH) xx : プログラムナンバー (00H〜7FH) |
プログラムナンバーとは
音色を表すための番号です。このプログラムナンバーに対する音色の規定はないので、
マスターから
スレーブにプログラムチェンジが送出されたときに必ずしもマスターとスレーブが一緒の音色になるとは限りません。
また、ナンバーが 1番から始まらないものや 1番を受信したときに自動的に 45番に切り替えるといった
プログラムチェンジテーブルを持つものがあったりするので、プログラムチェンジを受信したときにどのような変化をするかをしっかり把握しておくことが大切です。
プログラムナンバーは 0〜127までの128種類を表せます。しかし、最近128以上の音色を持つ音源は珍しくありません。128以上の音色を扱うためにはどうすればいいのでしょうか?
こういうときのために
「バンクセレクト」というメッセージがあります。
読んで字の如く
バンクをセレクト(選択)するためのメッセージです。
バンクとは128音色の固まりを縦横にいくつも並べたようなものです。概念的には下の図のようなビルがあったとすると、バンクで何階の何番ロビーかを指定してプログラムチェンジで何号室かを指定している感じです。
|
バンクをビルに置き換えてみたら… 例えば、バンクの MSB を階数 ( F )、LSB を廊下ナンバー ( L )、プログラムナンバーを部屋ナンバー ( R ) だとすると、全音色は左のビルの全ての部屋に相当し全部で 2,097,152 部屋あることになる。(部屋数がこうなるわけは下の文で解説) 各メーカーとも音色はわかりやすくなるように配置されている。例えば、バンク MSB=0、LSB=0、プログラムチェンジ=0 が GrandPiano で、MSB=0、LSB=1、プログラムチェンジ=0 が GrandPianoK のように、バンクが違っても同じプログラムナンバーであれば似たような音色が選択できるようになっていることが多い。
|
メッセージは次のようになっています。
☆バンクセレクト BnH 00H xxH BnH 20H yyHn : チャンネル (0H〜FH) xx : MSB (00H〜7FH) yy : LSB (00H〜7FH) |
今まで見てきたメッセージとは少し違う形式ですね。実はこれが
コントロールチェンジの形式なのです。
バンクの指定には MSBと LSBの 2つの情報が必要です。それぞれが 0〜127の間の値をとるので、
MSB128 X LSB128 = 16,384個 のバンクをもてます。つまり、プログラムチェンジとバンクセレクトを組み合わせると
合計 2,097,152音色が選択可能となるわけです。
音色数が増えるとデメリットも生まれてきます。音色数があまりに多すぎて自分の使い音色を探すのが困難になるのです。そこで各メーカーとも音色の配列は一定の規則に従い機能的に配列するように工夫しているようです。例えばある音源では MSB=127、LSB=0 でドラム用のバンクを選択し、プログラムチェンジによってドラムキットの種類を決定するというような仕組みになっています。
なおメッセージを送信するときに
バンクセレクトの MSB → LSB → プログラムチェンジという順で送らなければなりません。また誤動作をふさぐためにある程度間隔を空けておくのがよいでしょう。
プログラムチェンジとバンクセレクトを使ったサンプルを聞く
プログラムチェンジを使用するときにはいくつかの注意が必要です。プログラムチェンジを受信する直前まで音源が発音状態で完全に音が消えていない場合、音源がどのような処理をするかは機種によって異なります。
即座に消音するもの、音が新しい音色に変わってしまうもの、などいろいろなケースがあると思います。
他にもダンパーペダルを使って音をのばしているときやエフェクトの切替時なども同じ事が言えます。
このような理由からプログラムチェンジの送信タイミングには十分留意しないといけません。特に物理モデリング方式の音源など切替に数百ミリ秒 (※1000ミリ秒 = 1秒) かかるものは余裕を持って送信するようにします。