ゲームミュージックのための

MMLプログラミング入門

(その1)



いまや、音楽なしではゲームは語れないというほど、ゲームと、ゲームミュージックは切っても切りはなせないものになってきた。同人ソフト関係でも、かなり凝ったゲームミュージックを作っている人達が増えてきているよね。テクノポリスの読者の中でも、ゲームミュージシャンを目指しているヒトも多いと思う。
そこで、MUSIC LALFの発売を機会に、MUSIC LALFを使ったゲームミュージシャン入門を連載することになった。MMLとは何かから、キマったサウンドを作る高度な裏ワザまで、順を追って解説する予定だ。ゲームミュージックは聞くだけという全くの初心者から、すでにいくつもの作品をものにした上級者まで、誰にとってもヒントとなる情報を届けたい。さて、MUSIC LALFはPC-8801シリーズと、PC-9801シリーズとがターゲットマシンなので、この連載もこの両機種の話が中心となる。でも、MML言語の基本とか、他の機種でも共通して使えるノウハウも多いので、他の機種を中心に開発しているヒトにも、じゅうぶんに参考になると思う。

最近では、アメリカ製のゲームを中心に、シンセサイザーを自動演奏させるための共通のコントロール方式である「MIDI規格」を使って、シンセ音源モジュールでテーマやバックミュージックを鳴らすソフトも出はじめている。しかし、このタイプのゲームでゲームミュージックを楽しむには、パソコンの本体とは別に音源モジュールが必要になるため手軽には楽しめず(その分、スゴい迫力のサウンドが楽しめるんだけどね)、パソコン本体に内蔵されたサウンド機能を利用する、内蔵音源がまだまだ主流となっている。一般に「ゲームミュージック」といった場合には、このような内蔵音源による演奏を意味している。MUSIC LALFも、それぞれの機種の内蔵音源を使って曲を演奏する、音楽プログラムを開発するためのツールだ。

それでは、内蔵音源は一体どんな機能を持っているのだろうか。PC-8801と、PC-9801の場合、その機能は大きくわけて二つのタイプがある。まず第一のタイプは、FM音源が3音と、PSG音源が3音のタイプ。これはPC-8801mkIISR以降のタイプとPC-8801シリーズ用サウンドボードI、PC-9801用のサウンドボードに使われているものだ。ちょっと専門的にいえば、これらの内蔵音源にはYAMAHA製のYM-2203というLSIが使われている。専門家の間では、OPNと呼ばれることもある。第二のタイプは、FM音源が6音に、PSG音源が3音、これにサンプリングによるドラム音源と、ユーザが自由にサンプリングした音を鳴らすことのできるPCM音源が加わっているタイプ。これはPC-8801mkIIFA、MA、PC-88VA2、VA3、PC-98DO+の各機種と、PC-8801シリーズ用サウンドボードII、で使われている。こちらの方は、YAMAHA製のYM-2608というLSIが使われている。専門家の間では、OPNAと呼ばれることもある。このなかで、FM音源3音と、PSG音源については、YM-2203と全く同じように使える設計なので、音源としてはアッパーコンパチブルになっている。

ここでFM音源とPSG音源についてちょっと説明しておこう。そんなコトはもう先刻御存知という読者も多いと思うけれど、ものにはステップというものがあるので、おつき合いしていただきたい。
FM音源は、FM方式(Frequency Modulation)により音色の合成を行う音源だ。YM-2203やYM-2608では、TX-81ZやEOSといったYAMAHAのシンセサイザーに使われているのと同じ、4オペレータ方式の音源を使用している。だから、これらのシンセと同じように、自由にリアルな音色を合成して演奏することができる。
PSG音源は、パソコンではおなじみのBeep音で使われているような矩形波に、音程と、簡単な音の立上りや、余韻の変化(これをエンベロープという)をつけてメロディーを演奏できるようにしたものだ。だから、いかにも機械的な、無機質な音がする。任天堂のファミリーコンピュータは、このタイプの音源しか内蔵していない、といえばその音色のイメージはわくだろう。
FM音源も、PSG音源も、それぞれ三声のパートを、別の音色を使い、別のメロディーで演奏することができる。だから、内蔵音源としてYM-2203を使っているマシンでは、単音で全部で6パートまで同時に演奏することができる。PSG音源は音色という面では弱いけれど、これでも立派に3パート演奏することができるため、厚みのあるサウンドを作るときには、これをどう活用するかがカギになる。

このように内蔵音源は、パソコンの内部に組み込まれた一種の周辺機器だ。したがって、内蔵音源でメロディーを演奏するには、音源LSIをコントロールする必要がある。このためには、音源のLSIに対して、鳴らしたい音程や音色を指定するバイナリデータ(一種のマシン語のデータと考えてほしい)を、演奏する曲の中身にあわせて転送しなくてはならない。
単に鳴らすことだけが目的ならば、演奏専用のアプリケーションを作って、その中からコントロールすることもできる。この場合は、たとえば譜面入力とか、鍵盤のシミュレーションとか、かなり人間よりのマンマシンインタフェースで「演奏」させることも可能だ。実際こういうタイプのソフトが、いろいろ市販されていたり、フリーソフトウェアとしてパソコン通信で流通している。しかし、今回の場合は、ゲームミュージックを作るのが目的なので、ゲームの進行に合わせて、ゲームのプログラムの中から、自在に演奏させる曲をコントロールしたい。このためには、前もって曲を演奏するためのバイナリデータを作っておき、これをゲームのプログラムから呼び出して使えるようにする必要がある。

ゲームなどのプログラムを開発するときは、御存知のようにcやPascalなどの言語、あるいはアセンブラを使ってソースプログラムを書き、これをコンパイラを使って「コンパイル」して、オブジェクトとよばれる直接パソコンで走らせるためのマシン語のデータを作る。
ちょうどこれと同じように、ゲームミュージックを作るときも、まず演奏したい曲を「プログラム」として書き、これをコンパイルしてバイナリデータを作る必要がある。このために使われるのが「ミュージックコンパイラ」と呼ばれる音楽用の「言語」だ。ここで作られたバイナリデータにより音源LSIをコントロールするためには、「ドライバ」と呼ばれるプログラムが使われる。この「ミュージックコンパイラ」と「ドライバ」を合わせたものが、MUSIC LALFのようなゲームミュージック開発のツールとなる。

さて、このようなミュージックツールでは、音楽の表記法としてはMML(Music Macro Languageの略)を用いているものが多い。MUSIC LALFも、このMMLを元にした表記を基本としている。コンピュータデータとして音楽を扱うために、曲データをコンピュータが取り扱えるカタチで表現する「音楽言語」は、古くからいろいろなモノが開発されてきたが、MMLもその一つだ。これは、一つ一つの音符を、アルファベットと数字の組み合せで表記するもので、人間にとっても比較的読み書きしやすい特徴がある。さて、次回はこのMMLによる曲の表記から解説しよう。




つぎにすすむ

「まるボ」アーカイブにもどる


はじめにもどる