3. 応用編~拡張音色へのいざない

はじめに

ツクールではMIDIデータは基本的にGM対応で作ることになっており、本講座でもGM対応データを対象に述べてきましたが、最近のサウンドカードはGSやXG対応のものがが多くなってきており、また外部音源を使ってらっしゃる方も多いと思います。ここではツクールで扱うMIDIデータをGSやXG対応にするための解説を行っていきます。

3-1 各フォーマットの仕様

各フォーマットの仕様において今回重視する項目は、拡張音色の指定方法に関する規定です。拡張音色を指定するパラメータはMSBとLSBの2種類があり、その効果を比較してみると以下のようになります。

  GS XG
XGモード TG300Bモード
MSBの効果 バンクナンバーの指定 バンクセレクトの指定 バンクナンバーの指定
LSBの効果 バンクセレクトの指定 バンクナンバーの指定 使用しない(値=0)

GS音源とXG音源の互換性を考える時、どうしてもネックになってくるのがMSBとLSBの効果が逆になっていることです。GM対応データではMSBやLSBは使用しませんので、この問題が起きることはありませんが、拡張音色を使うためにはいずれかのフォーマットを使用しなければならず、その結果お互いの音源でうまく鳴ってくれないという状況に陥ってしまいます。拡張音色は使いたいが、どんな音源でもきちんと鳴らしたい。このことを満たすにはどのようにすればよいでしょうか?

3-2 TG300Bモード

XGには「モード」という概念があります。その中のひとつにTG300Bモードというモードがあるのですが、これはヤマハがほとんどGS対応のために規定したみたいなもの(ヤマハははっきりとは公言してはいませんが)で、通常XG音源はXGシステムオンを受信するとXGモードで演奏しますが、GSリセットを受信すると「TG300Bモード」に切り替わって演奏します。このモードはMSB,LSBの効果がGSと同じになっている等の特徴を持ち、そしてある程度のパラメータに対応しています(実はローランドも公にはしていないですが、SC-88Pro以降、XGシステムオンを受信するとある程度互換性を持った隠しモードに切り替わっています。ただ、TG300Bモード程の互換性は期待できません) どうやら、このTG300Bモードをうまく利用することが互換性を保つ近道なようです。

3-3 入力データについて

TG300Bモードにするためには、GSリセットを入力しておけば済む話です。ここで注意しておきたいのは、SC-88以降、GS音源に導入されたエクスクルーシブ・メッセージである「SYSTEM MODE SET」は、XG音源では受信されないという事です。「SYSTEM MODE SET」を受信してもモードは切り替わらず、よって音色の切り替えがうまくいきません。またTG300Gモードとはいえ、GS音源の各種パラメータの完全再現はできないということを忘れてはいけません。TG300BモードはSC-88レベルのデータまではある程度対応しているようですが、より高い互換性を保つために、入力するデータはせいぜいバンクナンバー,エフェクト(リバーブ,コーラスのみ)のタイプ,NRPN程度にとどめておいた方が無難だと思います。また、バンクセレクト(LSB)の値は必ず0にしてください。そうしておかないとTG300Bモードでは誤作動が起きる可能性があります。もっともLSBが0であるということは、GS音源で演奏される場合は、常にその音源が持つ最上位音色で演奏される(つまりSC-88ProではSC88Pro Map上の音色、そしてSC-88ではSC88 Map上の音色になる)という事ですので、0でも特に問題はありません。まあ(GS音源での)音色における互換性の面で一部不都合な点があることはあるのですが。

3-4 セットアップ,データの設定方法

基礎編で述べたとおり、ツクールにおけるセットアップ小節の扱いは特殊なものになっています。1小節以上のセットアップ小節をとると、それが何小節であっても瞬時にノートデータの箇所から開始するのですが、ここにGSリセットを挿入(GMシステムオンの場合もそうですが)した場合、XG音源で鳴らすとTG300Bモードに切り替わってくれません。しかも音色が全てピアノになってしまい、Ch10(つまりドラム)はスタンダードドラムになってしまいます。これは使用する音源がGS音源でも言えることで、GS音源でも音色がきちんと切り替わってくれません。これは、ツクールのセットアップ小節の処理方法の特殊さ故のセットアップエラーだと考えられます(2-1参照)

そこで、ツクールの仕様を逆に利用したいと思います。ツクールは最初のノートイベントから演奏を開始するわけですから、曲頭にノートイベントを挿入しておきます。このノートイベントはあくまでもツクールに曲頭を認識させるためのダミーノートですから、ベロシティは1、長さも1にしておきます。ベロシティを0にしてしまうと、シーケンサーによってはベロシティ0のノートイベントではなく、休符にされてしまう可能性がありますので、ベロシティは一応1にしておきます(注)
 そして、ダミーノートのSTを1にし、その次にGSリセットを入力します。これで拡張音色が使えるようになりました。この次に各種セットアップイベントを入力するわけですが、GSやXGの規格で、リセット命令と他のイベントは最低でも50ms離すようにと決められているので、GSリセットと各種イベントの間は50ms離しておきます。例えば、テンポ120、分解能480のとき、50msは24Tickになります。この値は適宜設定してください。以上のセッティングを実際のデータにすると、例えば以下のようになります。ここでは1小節目は16分の1拍子にしています。こうすることにより、無音部分が必要以上に流れることを防いでいます。

セットアップの例

(注)ベロシティが1ですので音が鳴ることには変わりないのですが、長さも1にしてますので、実際はまず聴こえません。さらに、ノートナンバーを0や127などの音域ギリギリにしておくと、聴こえる可能性はさらに下がると思います。また、実際はどうやらベロシティ0でも問題ないようです。"音が(たとえ聞こえなくとも)鳴っている状態"がどうしても気になる方は0にしてもかまわないと思います。

このテンプレートファイルを用意しました。ご自由にお使いください。
ダウンロード

3-5 ドラム,パーカッションについて

さて、拡張音色を使いたいという方の主な理由は、やはりGMのパーカッションの音色の少なさにあると思います。GMではパーカッションのプログラムは1種類しか規定されておらず、幅広い曲想を考えている方には物足りないものと思いますが、GS音源やXG音源は、たとえGMシステムオンを受信していても、パーカッションのプログラムチェンジは受け付けてくれます。要するに、バンクセレクトやバンクナンバーがGMの規定外なだけであって、プログラムチェンジ自体はGMの規定内だからです。GMではパーカッションのプログラムが1種類しか規定されていないというのは、あくまでも音色(プログラム)の"種類"の規定であって、プログラムチェンジを受信するかどうかという事とは別問題だからです。ですからGS対応やXG対応のデータを作ろうと考えていらっしゃる方の理由が、「スタンダードドラム」以外のパーカッションの音色を使いたいからというのであれば、ただ単にプログラムチェンジで操作が可能です。なにもセットアップ小節を気にしながら作る必要はありません。しかしここで注意して欲しいのは、再生環境が、例えばオンボードの音源でたまに見受けられるんですが、パーカッションのプログラムが本当に1種類しかない場合(つまりGM音源)は、プログラムチェンジのメッセージは受信してもそれに対応した音色が音源に入ってないため、結局スタンダードドラムで演奏されるということです。この場合、結果として演奏されるデータはおかしな聴こえ方になってしまいます。また、GSとXGではスタンダードドラム以外のセットでの音色の配列が異なる部分があります。この点に留意したデータを作る場合、やはりGSなりXGなりの指定をしなければいけません。

3-6 拡張音色の使用範囲

モードの仕組み、そしてツクールの仕様をうまく利用して、拡張音色が使用できることは分かりましたが、実際どの程度の拡張音色が利用できるのでしょうか? ここで、GS,TG300B共に比較的バリエーションの多いProgram Number 007:Organ1を例に見てみたいと思います。GSは88Pro MapとSC88 Map、TG300BはMU128のケースで見てみることにします。

CC00 88Pro Map SC88 Map TG300B
000 Organ 1 Organ 1 DrawOrgn
001 Organ 101 Organ 101 70sDrOr1
008 Trem.Organ DetunedOr.1 DetDrwOr
009 Organ.o Organ 109 70sDrOr2
016 60′s Organ 1 60′s Organ 1 60sDrOr1
017 60′s Organ 2 60′s Organ 2 60sDrOr2
018 60′s Organ 3 60′s Organ 3 60sDrOr3
019 Farf Organ ----- 70sDrOr3 *
024 Cheese Organ Cheese Organ CheezOrg
025 D-50 Organ ----- -----
026 JUNO Organ ----- -----
027 Hybrid Organ ----- -----
028 VS Organ ----- -----
039 Digi Organ ----- -----
032 70′s E.Organ Organ 4 DrawOrg2
033 Even Bar Even Bar Even Bar
040 Organ Bass Organ Bass Organ Ba
048 5th Organ ----- -----

"*"の音色はMU128以上のXG音源に搭載されています。

表を見てみると判るように、SC88 MapとTG300B(MU128音色を除く)の配列が同じものになっています。他のプログラムを見てみてもほぼ同様のことが言えました。つまり、制作環境がGS音源の場合はSC88 Map、そしてXG音源の場合はMU100までのTG300Bモードの音色表を参考にして指定すると、ある程度の互換性を保てることが分かります。

まとめ

以上、ツクールにおけるGS,XG対応MIDIデータの取り扱いについて説明していきましたが、ツクールのMIDIに関する詳細な仕様というものは公開されておりませんので、特にセットアップ小節に関する説明については大部分が経験則的なものになってしまいました。ですから、あくまでも僕の環境ではこうだったとしか言えない部分もあり、推測の域を出ない記述も多々あります。もし皆さんが本講座の内容を試してみて、記述どおりの結果が得られない時はご一報ください。確認の後、改めて解説させていただきます。それでは、より良いツクールライフを!

追記

RPGツクール2000 ver1.51以降、及びRPGツクール2003 ver1.06以降では、本文3-4の作業は不要です。データの頭にそのままリセット命令を入力していただいて結構です。これは上記verからHarmony.dll(ツクールのBGM演奏の管理を行うdll)の仕様が、音化けを防ぐようにツクール側の方で調整されるように変更されているためです。