GM用データの作り方




[トップページ] / [MIDIとDTMの広場]


【はじめに】

SC-88用、MU80用など、対象とする音源によって、MIDIデータの作り方は変わります。特にエクスクルーシブメッセージは、メーカーや音源によってさまざまです。これらは、難解ではありますが、その音源のマニュアルの「MIDIインプリメンテーション」や「MIDIデータフォーマット」を読み、それに沿って使用することになります。

では、GM用のデータを作りたい場合はどうしたらよいのでしょう。音源のマニュアルには、「GM用データを作成するには、GMシステムオンを入れる」とは書いてあるものの、それを入れさえすればGM用データになるわけではありません。実際には多くの制限があるのですが、それを知らないと、機種に依存するデータを作成してしまいます。そこで、GM用データの作り方をここでまとめてみたいと思います。なお、ここで用いるGMという言葉は、GMシステムレベル1を指していますので、予めご了承ください。ゲームミュージックとは関係ありません(笑)。


【音源をリセットする】

まず、データの先頭にGMシステムオンを入力します。具体的には、F0 7E 7F 09 01 F7というエクスクルーシブデータを書きます。エクスクルーシブは、MIDI規格で定義されていない、メーカー(あるいは機種)固有の命令を使う時に用いるものですが、GMシステムオンは、GM音源のための共通の命令です。

メーカーIDを指す2番目のデータが7Eになっています。これは、ユニバーサルノンリアルタイムメッセージを表しています。メーカーを問わないということが、ここからも分かると思います。

GMシステムオンを受け取ると、SC-88Proでは、音色名の前にアンダーバーが出ます。例えばフルートは、074_Fluteになります。XG音源では、XGモードになります。

GS音源もXG音源も、GMでリセットすると、バンクとNRPNを受け付けなくなります。なお、SC-88Proでは本体の操作でもバンクの変更が不可能となりますが、MU90では変更できました。


【音色を選ぶ】

GMでは、16チャンネル使用できることが必須となっていて、チャンネル10をリズムに使います。シーケンスソフトでの編集時は、リズムをどのトラックに入力しても、また複数のトラックに入力しても構いませんが、そのトラックの送信チャンネルを10にする必要があります。チャンネル10以外をリズムに用いることはできません。

・メロディ
チャンネル1〜9と11〜16は、メロディ用として使います(メロディとは、ここでは単にリズム以外のパートを指します)。チャンネル11〜16は、1〜9だけでは足りない時に使うようにするとよいでしょう。

音色は、キャピタル(バンク0)の128音からしか選べません。どんなにたくさんの音色がある音源でも、GM状態ではバリエーション音色を使うことはできないのです。よって、バンクの情報を入れてはいけません。また、SC-88以上の音源で用いるマップの指定もしてはいけません。音色の設定をする際には、プログラムチェンジのみ入力します。

128音の中なら、どれでも安心して使えるかというと、実際はそうでもありません。同じ音色でも、音源(あるいはマップ)によって音の性質がかなり違うものがあります。多くの音源で違和感のない演奏をさせたいのなら、少なくとも、普及しているGS音源とXG音源の間での差があまりない音色を選びたいところです。これについては、他のページで紹介する予定です。

・リズム
チャンネル10では、リズム音色(ドラムセット)を使用します。GMでは、ドラムセットの種類を選ぶことができず、スタンダードのセットしか使うことができません。これはすなわち、プログラムチェンジでドラムセットを指定できないことを意味します。

リズムでは、35〜81までのノートナンバーが使用できます。それ以外のノートは、音源によって異なる楽器の音が発音されることがあるので、使用しないようにします。

【RPN】

ピッチベンドセンシティビティとファインチューンを設定する時に、RPNを使うことができます。一度設定したら、RPNヌルで、RPNが指定されていない状態にするのが望ましいでしょう。なお、GM用データでNRPNを使うことはできません。

・ピッチベンドセンシティビティ
ピッチベンドセンシティビティ(ベンドレンジ)は、ピッチベンドを使った時の、音の高さの変化の度合いを決めるものです。初期値は2(2半音)になっていて、0〜24の間で設定します。なお、順番が重要であるのと、音源に負担をかけないようにするために、ステップタイムを適当に確保します(ここでは4)。
NOTE K#  ST  GT VEL
* Picth Bend Range
RPN(M)    4 101   0
RPN(L)    4 100   0
DATA(M)   4   6  12 ← ピッチベンドセンシティビティを12に
・ファインチューン
ファインチューン(ファインチューニング、マスターファインチューニングとも呼ばれる)は、チューニングをセント単位で変更するものです。セントとは、半音の音程を100等分したチューニングの単位です。DATA(M)とDATA(L)の両方を使って設定します。DATA(M)=64、DATA(L)=0の時に0セント(変化なし)で、DATA(M)=127、DATA(L)=127の時は、+100セントとなります。また、両方が0なら-100セントとなります。
NOTE K#  ST  GT VEL
* Master Fine Tune
RPN(M)    4 101   0
RPN(L)    4 100   1
DATA(M)   4   6  66 ← 両方が66の場合、+3.93セントになり、
DATA(L)   4  38  66 ← NOTE#69=441.0Hzになります
・RPNヌル
RPNの設定が終わったら、RPNヌルを送信して、RPNを未設定の状態にします。これは、DATA(M)もDATA(L)も必要ありません。
NOTE K#  ST  GT VEL
* RPN Null
RPN(M)    4 101 127
RPN(L)    4 100 127

【エフェクト】

リバーブとコーラスは、受信が義務づけられていませんし、音源によってかかり具合が異なるため、あまり推奨されるものではありません。使用するのなら、ほどほどの数値にしておくのが無難です。ちなみに、GS音源やXG音源では、設定しなくともリバーブセンドレベルが40になっています。

使用するとしても、リバーブとコーラスのセンドレベル(CC#91とCC#93)のみで、リバーブタイプやリバーブタイムなどを変えることはできません。これらはエクスクルーシブメッセージで設定するものだからです。

SC-88のディレイ、SC-88ProのEFX、XG音源のバリエーションエフェクトやインサーションエフェクトは使用できません。要するに、ユニバーサルでないエクスクルーシブメッセージは、すべて使用禁止です。CC#94をディレイのセンドレベルとして用いることがありますが、必ずしもそうとは限らないので、使用しないようにしましょう。


【パンポット】

パンポットは、0〜127の範囲で値を決めます(0が左、64が中央、127が右)。ランダムパンが用意されている音源がありますが、エクスクルーシブメッセージで設定するため、使用することはできません。

リズムを扱うチャンネル10では、通常はパンポットの設定をしません。また、個々の楽器のパンポットはNRPNで指定するものなので変更できず、そのままの状態で使うことになります。

GS音源やXG音源では、ドラムセット全体としてのパンポットは、個々の楽器のパンポットの設定を相対的に変化させるようになっているので、どうしてもリズム楽器の位置を変えたい時には、使用するのも手です。しかし、すべてのGM音源で確実に有効になるとは限りませんし、そもそも各楽器のパンポットの値が統一されているわけでもないので、意図した位置にならない音源もあるでしょう。


【ボリュームとエクスプレッション】

ボリュームとエクスプレッションは、どちらも音量の制御を行うもので、GM用データでも使用できるメッセージです。

ボリュームは、セットアップ小節のみで用いて、そのチャンネル(結果的には音源の各パート)の音量を決めるものです。それに対してエクスプレッションは、一つ一つの音に対しての細かい音量変化に用います。このように使い分けることによって、音量のバランスを調整する時に、セットアップ小節にあるボリュームの値を変更するだけで済みます。

GMシステムオンによって、エクスプレッションは最大の127になり、ボリュームは100になります。このままの値で使用する時も、念のためセットアップ小節で設定をしておいた方がよいでしょう。


【マスターボリューム】

マスターボリュームは、各音源用のエクスクルーシブメッセージで制御するのが普通ですが、ユニバーサルメッセージでのマスターボリュームも用意されています。F0 7F 7F 04 01 LL MM F7です。2番目の値の7Fは、ユニバーサルリアルタイムメッセージであることを意味しています。

LLにはボリュームの値の下位バイトを、MMには上位バイトを指定します。ただし、GS音源やXG音源は、下位バイトは使われず、上位バイトの値がそのまま0〜127のマスターボリュームとして使われます。

初期のGS音源では、このメッセージによってマスターボリュームを制御することができないので注意が必要です。もし確実に全体の音量を制御したいのなら、発音中の音に対してすべてエクスプレッションを使うのが望ましいでしょう。しかし、既にエクスプレッションが使用されたデータの上から、さらにエクスプレッションで音量を徐々に上げたり下げたりするのは容易ではありません。代わりにボリュームを使いたいところですが、ボリュームをセットアップ小節以外に含めると、音量のバランス調整をする時に面倒になるという問題が起こります。どうするのが最善かは、なかなか悩むところです。


【その他】

これまでに挙げたもの以外で使用できるものは、モジュレーション、ホールド1、ピッチベンド、ノートオン/オフ、テンポくらいのものです(他にもありますが)。

同時発音数は、トータルで24以内か、メロディ16+リズム8以内ということになっています。あまり一度に多くの音を出さないように気を付ける必要があります。

大量のデータを一気に送らないような配慮も必要でしょう。GM用データに限ったことではありませんが、データが密集していると、演奏に大きく影響します。GM音源というのは機種が特定できないだけに、特に重要な点です。

「こんなに制限があったら、満足する曲などできない」と思うかもしれません。もちろん、音源特有の機能を使わなければ表現できない曲もありますが、クオリティの高い音楽にできるかどうかは、その人次第だと私は思います。

「ひょっとして、今まで音源の力に頼っていたのではないか」と感じている人は、これを機会に、一度GM用データを作ってみることをおすすめします。それから、改めて音源の性能をフルに活用したデータを作ってみれば、驚くほど上達している自分に気付くかもしれません。


[トップページ] / [MIDIとDTMの広場]