汎用性のあるSMFを作る

ネットでSMF(Standard Midi File.いわゆるMIDIデータのこと)を配信する際、より多くの人に聞いてもらえるようにする為には 様々な音源で再現できるようなデータを作成する必要があります。一般的なMIDI音源の多くがGM規格に対応しているので、 多くの人が聞けるようなSMFを作る為にはGM規格を満たしたデータにする必要があります。 しかし、GM規格ではエフェクトを使用できない、NRPNが使用できない、 キャピタルバンクの音色しか使えない(GM128音色しか使えない)といった制限があります。 それゆえ、自分のしたい表現ができないのでは、と思うこともあるでしょう。
そこで、汎用性あるSMF、すなわち様々なGM音源に対応できるようなSMFを作る上で役に立ちそうな技術を紹介したいと思います。

留意点
1.音に拡がりを与える
2.音を重ねる
3.擬似ディレイ
4.デチューン
5.音源の初期化について
6.代替音色の入力
7.同時発音数
8.転送速度、音源の処理
入れ知恵+へ
よいこへの入れ知恵へ
家に戻る

留意点

まず、GM対応のSMFを作る場合、以下の事は頭に入れておいてください。
・キャピタルバンク(GM128音色)の音色しかない音源でも再生できるようにする。
 (GM規格に対応した音源ならどれでも再生できるようにする。)
・ドラムパートはch10のみ。
・エフェクトを使用できない音源もある。
・コントロールチェンジ、NRPN、もしくはエクスクルーシブメッセージを用いた音色エディットができない音源もある。

1.音に拡がりを与える

音に拡がりを与えたい場合、コーラスというエフェクトを使えば拡がりを与えることができます。 しかし、GM音源によってはコーラスエフェクトが使えない場合がありますし、 音を拡げたいけれども、コーラスエフェクト特有の変調感はいらないという場合もあります。
そこで、ここではコーラスエフェクトを使わずに音を拡げる方法について述べます。
パッドやストリングス、ブラス等、よく和音で演奏するような音色の場合、 音に拡がりを与えたい場合がよくあります。コーラスエフェクトを使わずに音に拡がりを与えるには、 各音ごとに音の定位を変えてやればいいのです。

hirogari1.mid
hirogari2.mid

”hirogari1.mid”ではド、ミ、ソ、シの一音それぞれを、別のパートに入力し、それぞれ異なった定位を与えています。 しかし、これでは同時に4パートも使ってしまいます。
そこで、パート数に余裕が無い場合、”hirogari2.mid”のようにド、ミをパート1に、ソ、シをパート2に入力し、 パート1を左よりに、パート2を右よりに、といった具合に分けてやるのもいいと思います。

2.音を重ねる

GM128音色をそのまま使うのでは、いまいち満足できない場合もあります。 そこで、異なる音を重ねるといった方法はどうでしょうか?

kasane.mid

”kasane.mid”ではパート1にピアノを入力し、パート2にシンセストリングスを入力して音を重ねています。 他にもいろいろ組み合わせがありますので、いろいろ試してみるといいと思います。

3.擬似ディレイ

ディレイとは遅延させた音が聞こえてくる山彦のようなエフェクトです。 しかし、このエフェクトを用意しなくても(内臓していなくても)同様なことはできます。
元となるフレーズと同じフレーズをある程度ずらして重ねればいいのです。 しかし、元の音と遅れて発音される音の大きさが同じというのも何ですので、 遅れて発音される方のフレーズは元となるフレーズよりも音を小さめにするといいでしょう。

delay1.mid
delay2.mid

元のフレーズに対しベロシティの値を70%にしたフレーズを、”delay1.mid”では4分音符分だけ後に重ねて貼り付け、 ”delay2.mid”では16分音符分だけ後に重ねて貼り付けています。

delay3.mid

”delay3.mid”ではパート1に元となるフレーズを、パート2に第1の遅延フレーズ(元のフレーズに対し4分音符分の遅延、 ボリュームは70%(パートが別なのでボリュームで音量を調整しています))、パート3に第2の遅延フレーズ(元のフレーズに対し2分音符分の遅延、 ボリュームは50%)を入力し、遅延してくる音が左右から聞こえてくるようにしています。このような擬似ディレイも面白いと思います。

4.デチューン

元となるフレーズと同じ音色でわずかにピッチのずれたフレーズを重ねることによって音に深みを与えます。

detune.mid

”detune.mid”ではパート2にRPNのMaster Fine Tuningを使ってピッチをずらした音を入力しています。 RPNのMaster Fine Tuningは64がデフォルトで、0で半音低く、127で半音高くなります。 音をずらした方の値は、個人的には64±4〜5あたりが適当なのではないかと思っています。

5.音源の初期化について

音源を初期化するエクスクルーシブメッセージにはGMシステムオン、GSリセット、XGシステムオン等があります。 GSリセットはGS音源を初期化し、XGシステムオンはXG音源を初期化します。 しかし、他の音源を使用している場合、これらのエクスクルーシブメッセージでは初期化できない場合もあります。
そこで、GM規格に対応した音源ならどれでも、初期化できるようにし、 なおかつ固有の音源としての初期化もできるようにするためには、 以下のように冒頭にGMシステムオンのエクスクルーシブメッセージを入力し、 その後、音源固有の初期化エクスクルーシブメッセージ(GSリセット、XGシステムオン等)を入力するといいでしょう。
GMシステムオンから1拍後にGSリセットを入力している
GMシステムオンから1拍後(4分音符=1拍として)にGSリセットを入力している
(譜面で見るとこんな感じ)
 
GMシステムオンから1拍後にGSリセットを入力している
ステップエディタ(イベントリスト)で見るとこんな感じ
テンポ120の場合、1拍あたり0.5秒ですから、上記のデータですと、GMシステムオンの後、 0.5秒後にGSリセットが音源に送信されることになります。
この画像では”Location”の項目に矢印が3つありますが、左から順に、小節、拍、クロック(Tick)を表しています。
(数値入力と呼ばれる手法で打ち込みをされている方々にはおなじみですね)
SSW5.0ではカーソルをこれらの数値に合わせ、キーボードから値を入力することによって、 これらの数値を変えることができます。
ちなみに、SSW5.0の分解能(1拍あたり480等分までの細かい表現が可能)は480ですので、クロック(Tick)の値は0〜479です。
いわゆる”数値入力”と呼ばれる打ち込みができるシーケンスソフトなら、他のものでも同様なことはできると思いますので、 やったことのない方はマニュアルを参考にして一度試してみるといいでしょう。

音源の初期化にはある程度時間が必要とされますので、初期化している間は、音源へのデータ送信は控えるべきです。
音源によって初期化に必要な時間は異なるのかもしれませんが、音源初期化メッセージ送信後、最低でも0.2秒間は音源への送信間隔を空けるべきだと言われています。
(参考文献:MIDIバイブルII(リットーミュージック出版編集部編))
ちなみに、SC-88Proの場合、音源初期化のエクスクルーシブメッセージを送信した後、0.05秒間はSC-88Proへ他のデータを送信しても無視されるそうです。
上記の事を守らないと楽曲の再生に異常をきたす可能性があり、 場合によってはその他のMIDIデータの再生にも影響を与える場合があります(エクスクルーシブメッセージによる音源リセットで音源が初期化されないような現象が起こるとこうなる)。

6.代替音色の入力

手持ちの音源にはない音色を選択した場合、GM音源の場合、Bank MSB/LSBは使えませんから、 キャピタルバンクの音色で再生されます。しかし、GS音源の場合は直前に使用していた音色で再生されます。 GS音源で音源に無い音色を使用したデータを再生した場合、直前に選択していた音色がフレーズに合わないと、 楽曲が破綻した状態になりかねません。そこで、音源固有の音色を使う場合は、 その音色の前に、キャピタルバンクの音色(GM128音色)のどれかを代替音色として入力しておくと、対象音源以外の音源でもある程度は再生されます。

daitai.mid
daitainashi.mid

”daitai.mid”ではSC-88Pro固有の音色である”Flute 2 :”の前にキャピタルバンクの”Flute”を入力しています。 ”daitainashi.mid”では音色は”Flute 2 :”しか入力していません。 GS音源をお持ちの方は、パート1をSC-55MAPかSC-88MAPにして試して見るといいでしょう。

7.同時発音数

ここで述べる発音数というのは譜面やMIDIデータ上の発音数ではなく、音源としての発音数です。 音源によって異なりますが、選んだ音色によってはソロであるにもかかわらず、発音数をいくつも消費する場合があります。 この辺りの事は音源のマニュアルを参考にして下さい。
GM規格ではパート数16、同時発音数24音となっています(GS音源でもSC-55の同時発音数は24音です)。 この条件で再生できるようにするには同時発音数のことも考える必要があります。

guitar.mid

”guitar.mid”はGS音源向けのSMFで、音色に”12-str.Gt”を選択しています。ドミソミドミソミというアルペジオですが、 音を伸ばしているために、3和音になっている所があります。また、GS音源の場合、 ”12-str.Gt”は単体で2つの発音数を消費する音色ですから、この場合、同時発音数は最大で6ということになります。
ギターの音を伸ばすというのは、リアルさを演出するための方法の一つですが、 音源や音色によっては同時発音数も考慮した方がいいかもしれません。

8.転送速度、音源の処理

MIDIの転送速度、音源での処理にも限界があります。
MIDIインターフェースを使用している場合、転送速度は31.25Kbpsです(RS232CやUSB等で直結している場合はこの限りではない)。 ですので、この転送速度で処理しきれない大量のデータを音源に送信するとデータを取りこぼしたりして、 まともに再生できない恐れもあります。
そこで、
8-1.同時に送信しなくてもいいデータはタイミングをずらして音源に送信する。
8-2.無駄と思われる入力は省く。
といったことをすればいいと思います(当たり前かもしれませんが)。8-2.については、 数値入力画面(ステップエディタ、イベントリストとも言う)を見て本当に無駄な箇所が無いか、確かめるといいと思います。 例えば、コントロールチェンジをグラフィカルなツールで入力していると、 同じ値が連続して入力される等、無駄と思える箇所が出てくることがあります。 ちなみに、シーケンスソフトによってはグラフィカルなツールにおけるコントロールチェンジの入力間隔を変えられるものもあります(下図参照)ので、 適当と思われる入力間隔に変更しましょう。
INTERVAL=30
入力間隔(INTERVAL)が30の場合
 
INTERVAL=240
入力間隔(INTERVAL)が240の場合
入力間隔(INTERVAL)を240にした場合ですと、INTERVALが30の場合と比べて間隔が大きくなる分、楽曲の表現は大雑把になりますが、 データの送信量が減るために音源への負担は軽くなります。
ちなみに、上記の画像はSSW5.0の画面です。SSW5.0では分解能が480ですので、 INTERVALが240ですと、半拍ごとに値を変えていることになります。

また、エクスクルーシブメッセージは音源の処理に負担をかけますので、 少しづつ、間隔を空けて音源へ送信した方がいいでしょう(下図参照)。
大量のエクスクルーシブメッセージを送信する時は送信間隔を空ける
上の図では音源初期化以外のエクスクルーシブメッセージの送信間隔を120クロック(Tick)分空けています。

ページ上部へ

入れ知恵+へ

よいこへの入れ知恵へ

家に戻る