まず最初にすることは、音源のリセットです。さもないと、前のデータの設定を引きずったまま演奏をすることになってしまいます。ここでは、GM音源、GS音源、XG音源のリセットの方法を紹介していきます。なお、リセットは、音源が処理するのに時間を必要とするので、ステップタイムを十分に確保するようにしてください。音源のマニュアルには約0.05秒と書いてあることが多いですが、もう少し余裕を持って確保したほうが安全です。
リセット中は、MIDIメッセージを送信してはいけません。リセットのデータを送信後、あまり時間を確保せずにメッセージを送った場合、それは有効にならないかもしれないのです。
リセットは、音源全体の初期化をするものなので、どこかのトラックに1つだけ入れておきます。同じリセットのメッセージを複数のトラックに入れる必要はありません。
NOTE K# ST GT VEL * GM System ON Tr.Excl 48 0 0 ← [7E 7F 09 01 F7]GS音源やXG音源は、GMシステムオンを受信すると、NRPNとバンクセレクトが機能しなくなります。ただし、そのあとにGSリセットやXGシステムオンを受信すると、また使えるようになります。
NOTE K# ST GT VEL * GS Reset RolDev# 16 66 RolBase 64 0 RolPara 48 127 0あるいは
NOTE K# ST GT VEL * GS Reset Tr.Excl 48 0 0 ← [41 10 42 12 40 00 7F 00 41 F7]
NOTE K# ST GT VEL * System Mode Set MODE-1 Tr.Excl 48 0 0 ← [41 10 42 12 00 00 7F 00 01 F7]SC-88用データでありながら、SC-55系の音源でも演奏されることを意識するのであれば、システムモードセットのあとにGSリセットも入れるとよいでしょう。SC-88Proのマニュアルには、どれか1つだけとは書いてありますが、それぞれに十分な時間を確保すれば、特に問題はないと思われます。
NOTE K# ST GT VEL * XG System ON Tr.Excl 48 0 0 ← [43 10 4C 00 00 7E 00 F7]XG音源には、オールパラメータリセットという命令もありますが、こちらは音源の内部の設定(液晶のコントラストなど)をすべて初期化してしまいます。通常は、XGシステムオンでリセットさせましょう。
ギターなどでは、初期状態のピッチベンドのレンジ(通常は2になっている)では表現できない演奏法がいくつかあります。このような場合、レンジを12にしたり24にしたりします。ピッチベンドのレンジを12に変更するには、
NOTE K# ST GT VEL * Bend Range 12 RPN(M) 4 101 0 RPN(L) 4 100 0 DATA(M) 4 6 12 ← ここ(VEL)に値を入力
と書きます。なお、レコンポーザの場合、レンジを8や16にしたほうが、ピッチベンドの数値が扱いやすくなります。
「GM用データの作り方」の「RPN」も参考にしてください。
レコンポーザでは、トラックエクスクルーシブデータを入力し終わると、以下のような表示がされます。
NOTE K# ST GT VEL Tr.Excl 0 0
この場合、ベロシティを入力する所がマスターボリュームの値になるので、
NOTE K# ST GT VEL * Master Volume VEL Tr.Excl 12 0 126 Tr.Excl 12 0 125 Tr.Excl 12 0 124 : :
と書けば、だんだん小さくなっていきます。下げるタイミング(間隔)は、STの値で制御します。気にならなければ、VELの所の値は、126 124 122と間引いてもかまいません。
エクスクルーシブのデータを何度も入力するのは面倒なので、一度書いたら[K]でいったん消し、[Y]でコピーしましょう。しかし、VELの値をだんだん小さくするコマンドは、ここでは使えないので、その数値は入力していくしかないようです。
できたら、パートセーブをして、いつでもすぐに使えるようにしたほうが楽です。4小節や8小節など、いろいろなパターンでフェードアウトを作っておくことをおすすめします。
GMレベルでマスターボリュームを制御する命令もあります。ただし、初期のGS音源では対応していないため、注意が必要です。詳しくは、「GM用データの作り方」の「マスターボリューム」を参照してください。
XG音源では、マスターアッテネータというものもあります。マスターボリュームとは逆に、数値が大きいほど音が小さくなります。
ボリュームとエクスプレッションは、どちらも音量の制御を行うものです。ボリュームは、主にセットアップ小節に置いて、そのパートの音量を決めるものです。エクスプレッションは、個々の音に対しての細かい音量変化に用います。このような使い方をすれば、あるパートの音量を少し上げたり下げたりしたい場合に、セットアップにあるボリュームを変えるだけで済みます。
「GM用データの作り方」の「ボリュームとエクスプレッション」も参考にしてください。
とかく集中しがちなセットアップ小節での処理の分散方法として、私は以下のやり方をよくしています。
Tr.1 Tr.2 Tr.16 NOTE K# ST GT VEL NOTE K# ST GT VEL NOTE K# ST GT VEL 60 80 0 0 60 83 0 0 * XG System ON VOLUME 4 7 110 VOLUME 4 7 105 ‥ Tr.Excl 72 0 0 PANPOT 4 10 40 PANPOT 4 10 78 REVERB 4 91 70 REVERB 4 91 30 : :
この例では、Tr.16にリセットのメッセージを入力しています。その間、ほかのトラックはTr.16のSTよりも多く休符を確保します。しかも、トラックナンバーが増えるごとに、ST値を一定間隔で増やして確保しておきます(この場合、80→83→86と、3ずつ増やしていきます)。
そして、個々のトラックのコントロールチェンジなどの命令をST=4として書き並べています。こうすると、最初の休符の長さが微妙に違うため、そのあとのデータが少しずつずれて送信され、一気に送られることが、ある程度防げます。
これを図にしてみます。ステップタイム1つ分を○で表し、
●=MIDIメッセージが送られている、○=何も送られていない
とすると、1つのMIDIメッセージにつき、ST=4が確保されている場合、●○○○と書けます。実際には、MIDIメッセージが処理される時間は不明ですが、送信するタイミングがこの場所にあるという解釈をしてください。
そして、トラックナンバーが増えるにつれ、3ステップずつ増やしていったため、それぞれのトラックの頭に○○○を付け足していきます。なお、下の図は、最初の80ステップを省略しています。
→時間の流れ Tr. 1 ●○○○●○○○●○○○●○○○●○○○●○○○●○○○●○○○●○○ Tr. 2 ○○○●○○○●○○○●○○○●○○○●○○○●○○○●○○○●○○○ Tr. 3 ○○○○○○●○○○●○○○●○○○●○○○●○○○●○○○●○○○● Tr. 4 ○○○○○○○○○●○○○●○○○●○○○●○○○●○○○●○○○●○ Tr. 5 ○○○○○○○○○○○○●○○○●○○○●○○○●○○○●○○○●○○ Tr. 6 ○○○○○○○○○○○○○○○●○○○●○○○●○○○●○○○●○○○ Tr. 7 ○○○○○○○○○○○○○○○○○○●○○○●○○○●○○○●○○○● Tr. 8 ○○○○○○○○○○○○○○○○○○○○○●○○○●○○○●○○○●○ Tr. 9 ○○○○○○○○○○○○○○○○○○○○○○○○●○○○●○○○●○○ Tr.10 ○○○○○○○○○○○○○○○○○○○○○○○○○○○●○○○●○○○ Tr.11 ○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●○○○● Tr.12 ○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○●○ Total 10011011111121122122222232233233333
このようにすると、最大でも3つ重なるだけで済みます。トラック数が16あっても、最大で4つです。もう少しうまいやり方も考えられますが、ずらす数字と空ける数字がいつも一定で、あまり難しいことを考える必要がないのが利点です。ただし、そのトラック全体のST値をずらしてある場合は、それを考慮して最初の休符を設定しないと、正確に上記のようにはならないので注意してください。
問題点は、後ろのトラックのステップ数が足りなくなる可能性があることです。少し詰めて、2ずつ増やして3空ける、でもいいでしょう(その分、密集しますが)。後ろのトラックも最初から送信すればいいのですが、最初の休符の数値を決めるのに少し混乱するかもしれません。ここで挙げたやり方と同じにする必要はありませんが、とにかく音源に負担をかけないよう、少しずつ送信することが重要です。
また、一連の設定を行ったあとには、何もしない時間を設けましょう。設定直後に音を鳴らすと、その音の出だしがおかしくなることがあるからです。
演奏前の大事な設定ですので、確実に音源が処理できるよう、このような配慮をする必要があります。一気に送って大丈夫だったとしても、別の環境ではうまくいかないかもしれないのです。