MSGSとは?

Microsoft GS Wavetable SW Synth、略してMSGSは、Windowsに標準搭載されるMIDI音源である。

この記事は、大学に入ってから曲作りを始めた筆者が、約半年の間に得たMSGSに関する知識をメモするものである。MIDIで打ち込みをやっている人がこれを読んで、たまにはMSGSも使ってやるか、といった気持ちになってもらえれば幸いだ。

目次

心得

MSGSを使うにあたって心得るべきことはひとつ、「MSGSのためのMIDIデータを作る」ことだ。これはMSGSに限らず他の音源にも言えることだが、音源を選ばないMIDIデータを作ろうとすると、音源ごとの差が激しい音色を使うことが出来ず、どうしても妥協せざるを得ない部分が出てくる。

もちろん、複数の音源で聴き比べながらデータを調整することも楽しい作業ではあるが、音源を指定しないMIDIデータと、ある音源に特化したMIDIデータは別物と考え、MSGSの能力を最大限に引き出すためには互換性はすぱっと切り捨ててしまった方がよい。

また、譜面に書き下したときに人間が演奏できるかどうかを気にする人がいるかもしれないが、これも考慮するべきでない。むしろ、せっかくコンピュータを使っているのだから、コンピュータにしかできない演奏をしてもらおう。

少し長くなったが、まとめると、MSGSを使うときは互換性や譜面のエレガントさは気にせずに、使えるものはなんでも使うのがよい。泥臭さを嫌わずに、MSGSの可能性を探して欲しい。

音源スペック

あらかじめ断っておくと、MicrosoftはMSGSの仕様書のようなものは公開していない。ここに掲載する情報は独自に調べたものであり、必ずしも正確ではない。また、噂ではWindowsのバージョンによりMSGSの挙動は若干異なるらしい。ここでは筆者の使っているWindows XPにおいて調べた内容を掲載する。

表 1:音源情報
パート数 16
同時発音数 48
プログラムチェンジ 128 + 98
ドラムセット 1 + 8
最大ドラムパート数 16

MSGSはGSを名乗っていながら、GM規格のメッセージにすら一部対応していない変わり者である(本来GSはGMの上位互換規格だ)。また困ったことに、Reverb, Chorus, Delayといった音作りに必須とも言えるメッセージも受け付けてくれない。

しかしながら、ドラムセットを9つも持っていたり、それを全パートに割り当てられたりと、頑張っている面もある。そして、これらの事実は一般にあまり知られていない節があり、MSGSが低く評価される原因にもなっている。

では、音作りのパラメータとして有用なものを見ていこう。本記事における数値は、特に指定がない限り10進法表記を用いる。

表 2:コントロールチェンジ
Name CC Number
Modulation 001
Part Level 007
Panpot 010
Expression 011

コントロールチェンジに関してはこれだけしかない。やはりReverbなどがないのが寂しい気がするが、その割にModulationが実装されているのはやや意外。

表 3:RPN
Name RPN Number
PitchBend Range 000/000
Fine Tuning 000/001
Coarse Tuning 000/002

RPNには音程に関するものばかりが実装されている。強引な音作りに便利なPitchBend Rangeが使用可能なのはありがたいことだ。

表 4:システムエクスクルーシブ
Name Binary Parameter
GM System On F0 7E 7F 09 01 F7 なし
GS Reset F0 41 10 42 12 40 00 7F 00 41 F7 なし
Master Volume F0 7F 7F 04 01 00 xx F7 xx: 設定する音量
Use for Rhythm Part F0 41 10 42 12 [40 1x 15 yy] F7 x: 対象とするチャンネル
yy: 割り当てるドラムマップ

バイナリには16進法表記を用いた。角括弧で括った部分はチェックサムの対象であり、角括弧が閉じた直後の位置にその計算結果を挿入する必要がある。その他、システムエクスクルーシブについて分からない点があれば、Web上で検索することで欲しい情報はすぐに見つかるだろう。本項ではこれらエクスクルーシブの内容についてのみ解説する。

MSGSはGS Resetを受信しないとGMモードとして動作し、プログラムチェンジがバンクセレクトなしの128、ドラムセットが初期の1セットに制限されてしまう。これには何のメリットもないのでMIDIデータの先頭には必ずGS Resetを置くようにしよう。なお、GM System Onを使う必要はない。

MSGSのMaster Volumeは曲者である。この値を変更した後に発音されたノートはMaster Volumeの設定に従うのだが、ノートの発音中にMaster Volumeの値をいじっても、Expressionのようにその場で音量が変化することはない。したがって曲のフェードアウトなどに利用すると、滑らかに音量が変化してくれない可能性がある。面倒かつ泥臭い手法ではあるが、全パートにエクスプレッションをかけた方が綺麗な仕上がりになる。

システムエクスクルーシブで最も重要なのはUse for Rhythm Partだ。これで指定したパートがリズムパートとして利用できる。複数のドラムセットを使えるようになることで表現の幅が広がるだろう。ちなみに、Web上では「リズムパート化は好きなだけできるが、ドラムマップは2つまで」という情報を見かけたのだが、実際に使ってみると、3番以降のドラムマップを指定しても何故か期待通りに動作し、16パートすべてにそれぞれ別なドラム設定を割り当てることもできた。このあたりはどうなっているのかよく分からない。少なくとも2種類までのドラムセットは確実に同時利用できるはずだ。

打ち込みの工夫

音源スペックを踏まえて、エフェクト類が使えないハンデを乗り越えるような打ち込みをしよう。ここで紹介する手法はかつてのゲームBGM、特にSFCのゲームで頻繁に使われていたもので、既に知っている人も多いかと思う。

ここに、メロディを打ち込んだだけのサンプルデータを用意した。このデータを例に挙げながら打ち込み方の工夫を紹介していく。文字だけの説明ではイメージを掴みづらい部分もあるだろうから、これらのMIDIデータはただ聴き比べるだけでなく、シーケンサーソフトなどで中身のデータを是非覗いてみて欲しい。

音を響かせる

ReverbやDelayが使えないのならば、音響効果に聞こえるようなノート配置をすればよいのである。

まず、音を響かせたいメインパート「A」と、それの補助パート「B」を用意する。Aの音響効果を表現するのがBの役割になる。

Bの音色設定はAと同じにして、音量はAの40%~80%くらいに設定する。そして、Aのノート配置をすべてコピーしてBに貼り付ける。このとき、Aと同じタイミングではなく、Bの方が遅れて発音されるような位置に貼り付ける。遅らせる間隔の目安は16分音符~4分音符ひとつ分ほど。

音量と間隔は何度も聴きなおしながら変えていって、自分が一番気に入った設定にするとよい。

この程度の工夫でそれなりに響いているような感じが出せる。何もしないよりはずっと良く聴こえるだろう。これは、音量の大きいパートや、フルートやバイオリンといった生っぽい音に対して特に有効な手法である。

音に厚みを持たせる

今度はChorusを真似る方法を紹介する。

先ほどのようにパート名をA、Bとする。Bの音色設定はAと同じに、音量はAよりも小さくする。

ここまでは前回と同じだが、今回はAのノート配置を位置を変えないままBにコピーする。そして最後にBのチューニングを少しだけずらす。

チューニングにはRPNのFine Tuningを使うとよい。値の目安は-1024~+1024くらいか。これも聴きながら少しずつ値を変えていこう。

チューニングをずらすことで音が太い感じになり、Chorusをかけたのと似た効果が得られる。また、Bだけでなく、AのチューニングをBと対称にずらすのもよいだろう。

新しい音を作る

MSGSは全体的に音が薄く、一部の音色を除いては、素の状態でメロディーなどの目立つ部分を演奏させるには心許ない。

その対応策のひとつは上記のChorusを真似る方法だが、ほとんど同じ手法で、今度は新しい音色を作りだすことができる。それは、音に厚みを持たせる手法において、Bのチューニングをずらす代わりに、Bの音色そのものを変えるだけでよい。

MSGSは元々の音が薄い分、音同士はよく混ざってくれる。Aと、やや音量を抑えたBとで同時に同じノートを演奏させることで、二つの音が混ざって別の音色が鳴っているかのように聴こえるようになる。Aをメインの音色として、Aの薄っぺらい部分をBが補助するようなイメージだ。

混ぜる音色は流石に何でもよい、というわけにはいかず、中には水と油のごとく分離して聴こえてしまう相性の悪い音色同士もある。

基本的に、似た音色同士のものを足し合わせていけば間違いは少ない。たとえば、Flute (PC#073) と、これに似た音色であるSoprano Sax (PC#064) を足し合わせると、よく混ざってFluteの芯の弱さが補強されるだけでなく、微妙なビブラートがうまく表現できる。

逆に、Piano 1 (PC#001) とChurch Organ (PC#019) といった全くかけ離れた音同士では、どうしても2つの音色を聴き分けられるほどに分離してしまう。複数の楽器が同じ音を演奏していることを表現したい時にはこれもよいかもしれないが、音色を混ぜ合わせて新しい音を作るという観点からは失敗である。

それでも、MSGSは前述の通り、薄い音のおかげで音同士は混ざりやすいので、どんな選び方をしても大抵はうまくいってしまう。適当に音色を変えながら再生していると、意外な組み合わせで綺麗な音が出ることも少なくない。結局のところ、音作りについても試行錯誤することが大切だ。

自由自在に

ここまでに音を響かせる手法、音に厚みを持たせる手法、新しく音を作る手法を紹介した。

実際に打ち込むときは、メロディーパート「A」をメインとして、補助パート「B」はAと違う音色で同じタイミングで演奏させて、別の補助パート「C」はAと同じ音色で遅れて演奏させて…といった風に、組み合わせて使うことが多い。

むしろ、はじめに「音作り」があって、それをあえて分類したときに、上記の3つの手法になるのである。したがって、慣れてきたらこれらの手法の枠に囚われる必要はない。

たとえば、音を響かせるために遅れて演奏するパートは元のパートと同じ音色でなくてもよい。新しい音を作るとき、サポートするパートは元のパートのノート配置をオクターブで演奏してもよい。とにかく色々と試して自分が一番良いと思える音を作ろう。

ドラムの音も作る

補足として、リズムパートも素の状態で使わずに、音作りをするべきである。

ドラムの音作りは簡単で、複数の打楽器をひとつの打楽器に見立てて同じタイミングで配置するだけでよい。この際、ベロシティを調整して音同士がうまく混ざり合うようにする。

問題があるとすれば、そもそも混ぜ合わせるほど打楽器の種類が多くないということだが、そこでシステムエクスクルーシブのUse for Rhythm Partによる複数ドラムセットの同時使用が威力を発揮する。

また、打楽器は音程を変えるだけで別の音に聴こえるようになるものが多い。そこでチューニングを利用して音作りに使える素材を増やすことも重要だ。

ちなみに、MSGSのCoarse Tuningはリズムパートに対して無効なので、チューニングにはPitchBendを利用することになる。その際、RPNのPitchBend Rangeを最大値の24に設定しよう。

PitchBend RangeはPitchBendを限界までかけたときの音程の変化量を決定するパラメータで、初期値の2だと半音2つ分までしか変化しないが、最大値の24にすると半音24つ分、つまり2オクターブまで変化させることができる。これを利用してドラムのチューニング幅を広げることで、より多くの音素材を利用できることになる。

リズムパートの音作りの本命はスネアだろう。次点がハンドクラップあたりか。ハイハットやキックなども作れないことはない。しかし、すべての打楽器について音作りが必要なわけでもなく、一番目立つ音に手を加えるだけでも随分と変わって聴こえる。

パート数との戦い

音作りを始めると、どうしてもパート数がかさみがちになる。ひとつのパートに3つも4つも補助パートをつけたくなる気持ちはとてもよく分かるのだが、最大パート数16という制限があるので、少しは節約を考えなければいけない。

そのひとつは、単純に音作りをしないことだ。そもそも音作りによる補助パートが貴重なパート数を消費しているのだから、そこを減らす工夫をすればよい。つまりは、音作りをするパートとしないパート、取捨選択をするのである。メロディーや、音量が大きく目立つパートは存分に音作りをしてよい。しかし、たとえばPart Levelが30に設定されているような、目立たないパートの音を良くするために、わざわざ補助パートを割り当てる必要があるかといえば、Yesとは言いがたい。

それでもパート数が足りなければ、今度はパートの使いまわしを考える。打ち込んだデータを見渡してみると、ひとつのパートが曲全体に渡って音を鳴らし続けているような状況は、意外に少ないことがわかる。そのようなパートは、フレーズが変わって暇になった瞬間を見計らって、Program Changeなどのメッセージを詰め込んで、別の音色として再利用すればよい。パートの管理が面倒になるのはやむを得ない。

おすすめの音色

最後に、筆者が見つけたMSGSの使いやすい音色を紹介しよう。バンクセレクトを有効にするためにGS Resetの送信を忘れないように。

Detuned EP2 : 008 [008/000]

(コロン右側の読み方はPC#[MSB/LSB]である。PC#はプログラムチェンジ番号、MSB/LSBはバンクセレクト番号。)

とても素敵なエレクトーン。単独でも使えるし、何より補助パートとして優秀で、大抵の音とうまく混ざり合う。

Detune Or1 : 016 [008/000]

Detuned EP2をオルガンにしたような音色。基本的には同じような使い方になるだろうが、こちらの方が癖があり力強い。

Slap Bass 1 : 036[000/000]

低音がちゃんと鳴ってくれるベース。補助に何か別の生音系のベースを足すと更に良い。MSGSのベース音は全体的に優秀だと思う。

Syn.Bass 101 : 038 [001/000]

シンセ系のベースは低音でビヨンビヨンしがちだが、この音色ならその心配はない。音は小さいようでいてよく通る。しかしPart Levelは最大値の127にしておくべきか。

Orchestra : 048 [008/000]

バンクなしのStringsに比べてほんの少しだけ丸くなった音。こちらの方が補助パートに使いやすいように思う。

Trombone : 057 [000/000]

色々使える音素材。MSGSの金管楽器は弱いものが多いので、これをメインにして自分で作った方がよいかもしれない。

Flute : 073 [000/000]

木管楽器と足し合わせて音を作るならこれ。メインでも補助でも可。高音域はよく通るのでそのまま使って申し分ない。

Pan Flute : 075 [000/000]

立ち上がりにノイズが欲しいときはこれを補助につけるとよい。シンセ系の音とも相性が良い。もっときついノイズが欲しければBottle Blowを使おう。

Square : 080 [001/000]

バンクなしのSquare Waveに比べて濁りがない音色。どの音域でもメイン、補助とも活躍できる。

Sine Wave : 080 [008/000]

言わずと知れた正弦波。Squareよりは使いづらかったりする。低音を演奏させるとファミコンによくあるベース音が出る。

また、PitchBend Rangeを最大値の24に設定した上で、Sine Waveの発音に合わせてPitchBendを0から-8192(最低値)までスライドさせるとTR-909のキック音のような音が出せる。MSGSはシンセ系のキック音を持っていないので、これは強引ながら有用な代用品となる。Sine Waveの代わりにSquare WaveやSquareを使うと濁った感じのきつめのキック音になる。

Saw : 081 [001/000]

バンクなしのSaw Waveに比べて純粋な感じの音が出る。Squareと同じような使い方ができるだろう。

Elec Perc : 118 [009/000]

これもシンセ系のキック音の代用として使えるが、低音付近の発音が少し残念。

Telephone 2 : 124 [001/000]

電話の音。何かと思うかもしれないが、これを何重にも重ねて鳴らすとトランスっぽい音になる。

まず音程を正すためにCoarse Tuningを-5、Fine Tuningを-5000ほどに設定する。そして和音を配置したら、それをコピーして元の和音の上に2~4オクターブにわたってペーストすると、元の電話の音からは考えれないような音色が出せる。ただし、これをやると同時発音数を物凄く消費するので、その点は留意のこと。

おすすめのドラム音

少ないながら、打楽器の音色についてもおすすめを紹介しよう。

Gated SD

POWER (PC#016) またはELECTRONIC (PC#024) に含まれるスネア音。スネアの音作りの主力であり、MSGSにおいてこのダーン!という音を出せる打楽器は他にない。

Timbale

ほぼすべてのドラムセットに含まれるHigh TimbaleおよびLow Timbaleは、膜を叩いた感じの音がするため、生音系のスネアの補助として重宝する。チューニングでスネア音とよく混ざるように調整しよう。

上の例ではTimbaleの他にスネア2種類を足し合わせた。バランスの調整は少し面倒だが、それなりに生音っぽく似せることができる。

Slap

ほぼすべてのドラムセットに含まれる。チューニングによりハンドクラップやスネアの素材になるだろう。

808 Snare Drum

TR-808 (PC#025) のスネア音。ハンドクラップの素材に使えるほか、MSGSでドラムンベースにあるようなリズムパートを作ろうと思えば必ず必要になってくる音だろう。音程を下げるとなかなか面白い音になる。

あとがき

以上で筆者の持っているMSGSに関する知識はすべてアウトプットしたはずである。それなりのDTM経験者なら知っていることばかりだろうし、DTMに興味のない人にはまったく意味の分からない、いかにも中途半端な記事になってしまった感は否めない。

書いている途中で何度もやめようかと悩みつつも、今年の春にX680x0同好会というサークルに入会して、音班として学んできたことを考えたとき、真っ先に思いつくのがMSGSの話であることに変わりはなかった。

筆者には音楽的な知識がほとんどない。夏休みに間に読もうと思っていたコード理論の本も、結局一度も手をつけることがなかった。それ以前にも、音楽をまともに勉強したことがない。すべてが体で覚えろの独学のような状態だった。

それは打ち込みに関しても同じで、試行錯誤の末に、本記事に書いたような内容を身につけてきた。だから記事にしておきたかったというのもある。分かりづらい表現もあっただろうし、そもそも筆者自身が勘違いしている部分もあるかもしれない。それでも、何かの参考にでもしてもらえれば嬉しく思う。

昔、打ち込みを始めたばかりの頃はMSGSは使い物にならないひどい音源だと思った。ある程度の知識を得て、作曲するようになり、再びMSGSを使ってみると今度は使いごたえのある面白い音源だと思った。

何故この時代にMSGSなんだと聞かれても、そこにあるからだとしか答えようがないが、制限された環境で何かを達成しようとする試みは、実際にやってみて初めてその楽しさが分かるものだと思う。みなさんにも是非MSGSで遊んでほしい。