ゲーム音楽とMIDI その3(結)

MIDIや独自形式の演奏データで鳴らされていたゲーム音楽は、PCM、CD-ROM、ストリーミングの普及でどう変わったのでしょうか。サンプリングの基本、FFVIIやUnrealの中間的な方式、現代のインタラクティブオーディオまでたどります。

Share
「MIDIはなぜゲームから消えた?」の文字、PCM・ストリーミングを表す図、白髪の人物を描いた第3回アイキャッチ

MIDIはなぜゲームから消えた? ― PCM・ストリーミングと現代ゲームサウンド

ゲーム音源の歴史シリーズ

  1. ゲームの音はどう作られていた? ― 専用回路・PSG・FM音源の時代
  2. MIDIとは何だったのか? ― ゲーム音楽と演奏データの革命
  3. MIDIはなぜゲームから消えた? ― PCM・ストリーミングと現代ゲームサウンド ← 今ここ

前回は、MIDIが音声データではなく、

「何を、いつ、どのように演奏するか」を伝える情報

であることを見てきました。

MIDIや独自形式の演奏データを使って曲を鳴らす方式は、少ないデータで長い音楽を演奏できるため、ストレージもメモリも小さかった時代のゲームと非常に相性のよい方法でした。

しかし現在のゲームでは、BGMを .mid ファイルで直接再生することは、以前ほど一般的ではありません。

代わりに使われているのは、録音した楽器、ボーカル、環境音などの実際の音のデータです。

何が変わったのでしょうか。

最終回では、PCMとサンプリングの基本から、CD-ROM、Final Fantasy VII、Unreal、そして現在のインタラクティブオーディオまで追いかけます。


PCMは「音そのもの」を数字にする

PSGやFM音源は、回路や計算によって波形を作っていました。

PCM(Pulse Code Modulation)は考え方が違います。

実際の波形を一定間隔で測り、その値を数字として記録します。

例えばマイクから入った音を、

実際の波形
     ↓
一定間隔で測る
     ↓
数値にする
     ↓
保存する

ことで、あとからその波形を再現できます。

これが、録音した声や楽器をゲームで鳴らすための基本になります。

連続したアナログ波形を一定間隔でサンプリングし、振幅を段階的な数値へ量子化してPCMデータにする流れ

サンプリング周波数と量子化ビット数

PCMを理解するときに、よく出てくる数字が二つあります。

サンプリング周波数

1秒間に何回、波形の値を測るかです。

44.1kHzなら、1秒間に44,100回測ります。

回数が増えるほど、時間方向に細かく波形を記録できます。

量子化ビット数

測った波形の高さを、何段階の数値で表現できるかです。

例えば、

  • 8bitなら256段階
  • 16bitなら65,536段階

で値を表せます。

考え方としては、

         振幅方向
            ↑
       量子化ビット数
            │
            │
            └────────→ 時間方向
                     サンプリング周波数

です。

縦方向の細かさが量子化ビット数、横方向の細かさがサンプリング周波数であることを示す図

「8bitゲーム機だから8bit音声」ではない

ここは、ゲーム機の話で特に誤解されやすいところです。

ファミコンやSG-1000などを「8bitゲーム機」と呼ぶ場合、その8bitは主にCPUのデータ幅を指しています。

一方、

8bit PCM
16bit PCM

という場合は、音声の量子化ビット数です。

同じ「8bit」という言葉でも意味が違います。

さらに、PSGやFM音源は、録音したPCM波形を「何bit・何kHz」で保存して再生することを基本にした方式ではありません。

ですから、

「このゲーム機は8bitだから、音も8bitだった」

とは単純には言えません。

第1回の年表でPSGやFM音源のPCM bit数を「該当なし」としたのは、このためです。


PCMはMIDIより後に生まれたわけではない

ここまで読むと、

MIDIの時代が終わって、その後PCMが登場した

ように感じるかもしれません。

実際には、PCMそのものはずっと以前から存在します。

ゲームでも短い音声サンプルを再生する方法は早くから使われていました。

問題は、大量のPCMデータをゲームへ入れるコストです。

録音時間が長くなるほど、

  • ROMやディスク容量を使う
  • RAMを使う
  • 音声用メモリを使う
  • データを読み込む帯域が必要になる
  • 再生処理も必要になる

という負担が増えます。

数秒の効果音なら現実的でも、

何分もあるBGMを何十曲も丸ごと保存する

となると、昔のゲームでは大きな問題でした。

だから、MIDIや独自形式の演奏データを使う方式には大きな意味があったのです。


「短い録音素材+演奏データ」という方法

そこで非常に重要になったのが、

短いPCMサンプル + 演奏データ

という方式です。

例えば、ピアノの音を曲の最初から最後まで録音する必要はありません。

ピアノの短い音を素材として用意し、

ピアノのサンプル
ドラムのサンプル
ベースのサンプル
ストリングスのサンプル
       +
どの音を
いつ
どの高さで
どの強さで鳴らすか
       ↓
ゲーム機上で演奏

という方法を使えます。

このように、「どの音を、いつ、どの高さや強さで鳴らすか」などを時間の流れに沿って記録した演奏データを、シーケンスデータと呼びます。

PCMの短い楽器サンプルとシーケンスデータを組み合わせて、ゲーム機上でBGMをリアルタイム生成する仕組み

このシーケンスデータは、MIDIファイルそのものとは限りません。

ゲーム機やゲームエンジンごとに、独自形式のシーケンスデータが使われる場合もあります。

しかし、

音素材と演奏情報を分離する

という発想は、前回までに見てきたMIDIと非常によく似ています。


CD-ROMで何が変わった?

1990年代になると、家庭用ゲーム機でもCD-ROMが使われるようになります。

CD-ROMは、それ以前のROMカートリッジと比べて非常に大きな容量を持ちます。

さらに音楽CDと同じCD-DAなら、16bit・44.1kHzのステレオ音声を完成した音楽として収録できます。

すると、

「演奏データを入れて本体で演奏させる」

だけでなく、

「完成した音楽を録音して、そのまま入れる」

という選択肢が現実的になります。

ただし、CD-ROMが登場した瞬間に、すべてのゲームが録音BGMへ切り替わったわけではありません。

容量以外にも、

  • RAM
  • 読み込み速度
  • CDドライブのシーク
  • 同時に必要なゲームデータ
  • ループ
  • BGMの切り替え
  • 効果音やボイスとの競合

など、ゲーム特有の事情があります。

そのため1990年代は、いろいろな方式が混ざった非常に面白い時期になりました。


Final Fantasy VII ― CD-ROMでも、曲を本体で演奏していた

1997年のPlayStation版『Final Fantasy VII』は、この中間時代を説明するのに分かりやすい例です。

元のBookStack記事でも、

サンプリング音源+演奏データ

を使った作品として扱っていました。

公開されているFFVIIのサウンド形式解析資料によると、ゲーム内の楽器音はPlayStationのADPCMサンプルとして格納されています。FF7 Flat WikiのINSTR.ALL解析でも、楽器サンプルがPSX ADPCMフレームとして収録されていることが説明されています。

そしてFFVIIは、こうした楽器サンプルとMIDIに似た独自形式の演奏データを組み合わせ、ゲーム機上でBGMを鳴らしていました。

この演奏データは、解析資料ではAKAOシーケンスと呼ばれています。AKAO sequenceの技術解析では、MIDIに似た役割を持ち、PlayStation向けに調整された独自形式として説明されています。

つまり、単純化すると、

楽器のPCM/ADPCMサンプル
        +
MIDIに似た独自形式の演奏データ
(AKAOシーケンス)
        ↓
PlayStationの音源で演奏

という構造です。

ここで大事なのは、「FFVIIがMIDIファイルを再生していた」と言うことではありません。

実際に使われていたのは、AKAOシーケンスという独自形式の演奏データです。

しかし、

音素材と演奏情報を分けて、ゲーム機上で曲を作る

という考え方は、MIDI時代から続くものです。

CD-ROM時代になっても、この方法にはまだ十分なメリットがありました。


Unreal ― MIDIでも録音BGMでもないTracker音楽

1998年のPCゲーム『Unreal』も面白い例です。

Unrealでは、Tracker/Module系の音楽が使われました。

Unreal系の古い技術資料を保存しているUnreal Archiveでは、UMX形式がMOD/Tracker系のファイルをもとにした音楽コンテナであることが説明されています。

また、Unreal Editorでは .mod.it.xm.s3m などのTracker形式をUMXへ取り込むことができました。

Tracker音楽も、考え方は、

PCMサンプル
   +
パターン
   +
音程・音量・エフェクトなどの演奏情報

です。

つまり、完成した音楽を最初から最後まで録音しているわけではありません。

しかしMIDIのように「外部の音源へ演奏を依頼する」のとも違います。

音素材そのものを楽曲ファイル内に持ち、音程・音量・エフェクトなどの演奏情報を記録したパターンを、決められた順番で再生する。

MIDIと録音済みBGMの間にある、非常に実用的な方式でした。


1990年代は「MIDIから録音へ一直線」ではなかった

ここまでの流れを整理すると、ゲーム音楽は、

MIDI
       ↓
録音BGM

と単純に切り替わったわけではありません。

時代 よく見られた考え方
1990年代前半 FM音源、MIDI、独自形式のシーケンスデータ、サンプル音源
1990年代中盤 MIDI/独自形式のシーケンスデータ+PCMサンプル
1990年代後半 PCMサンプル+シーケンスデータ、Tracker、録音BGMが混在
2000年代 録音音声や圧縮音声のストリーミングがより実用的に
現代 録音素材+リアルタイムミキシング+動的制御

技術は一斉に置き換わるのではなく、新しい選択肢が増え、その中で用途に合う方法が選ばれていったと見る方が正確です。


なぜゲーム内でMIDIを直接再生する用途が減ったのか

では、なぜPCゲームなどで一般的だった、

.mid をユーザー側のMIDI音源で演奏する

という方法は減っていったのでしょうか。

1.ストレージが大きくなった

CD-ROM、DVD、大容量ROM、HDDなどによって、録音音声を保存するコストが大きく下がりました。

MIDIの「非常に小さい」という利点は、以前ほど決定的ではなくなります。

2.RAMや音声再生能力が向上した

PCMサンプルや長い音声を扱えるメモリと処理能力が増えました。

圧縮音声を展開しながら再生することも現実的になります。

3.制作者が意図した音を、そのまま届けられる

前回見たように、MIDIは音源によって音が変わります。

これは面白さでもありましたが、制作側には、

「どのユーザーにも、完成させた同じ音を聞かせたい」

という要求があります。

録音済みの音楽なら、

  • 楽器の音色
  • エフェクト
  • ミックス
  • 演奏ニュアンス

まで含めて制作側で決められます。

4.ゲーム音楽自体が複雑になった

生楽器、ボーカル、オーケストラ、環境音、映画的な音響処理などを含む音楽では、汎用MIDI音源だけで完成形を再現することは難しくなります。

結果として、

ゲーム内の最終再生フォーマットとしてMIDIを使う必要性

は徐々に小さくなっていきました。


では、MIDIは消えたのか?

ここで少し言葉に注意が必要です。

MIDIそのものが消えたわけではありません。

現在でも作曲では、

MIDI入力
   ↓
DAW
   ↓
ソフトウェア音源
   ↓
エフェクト・ミックス
   ↓
WAVなどへ書き出し

という制作方法が普通に使われています。

ゲームに最終的に入るものがWAVや圧縮音声でも、その音楽を作る途中ではMIDIが使われていることがあります。

ですから、

ゲームに .mid が入っていない = MIDIが使われていない

ではありません。

減ったのは主に、

ユーザー環境のMIDI音源を使って、ゲームBGMを直接再生する

という使い方です。


現代ゲームは、むしろ「演奏を制御する」方向へ戻ってきた

完成した録音音源を使えるようになったなら、

「1曲のWAVを最初から最後まで再生すれば、それで終わり」

なのでしょうか。

ゲームではそう簡単ではありません。

例えば、

フィールド探索
     ↓
敵を発見
     ↓
ドラムレイヤー追加
     ↓
戦闘開始
     ↓
戦闘パートへ遷移
     ↓
ボスHP低下
     ↓
さらに激しいレイヤー
     ↓
勝利
     ↓
終結フレーズへ

のように、プレイヤーの行動で音楽を変化させたいことがあります。

映画なら映像の時間が最初から決まっています。

ゲームは、プレイヤーがいつ戦闘を始め、何分で勝つのか分かりません。

そこで現代のゲームサウンドでは、

録音した音素材を持ちながら、いつ・何を・どう鳴らすかをリアルタイムで制御する

ことが重要になります。

これはMIDIそのものではありません。

しかし、

音そのものと、演奏・再生を制御する情報を分けて考える

という点では、MIDIの話とどこか似ています。

初期の専用回路、MIDI、現代のサウンドミドルウェアで、音を作る素材と鳴らし方の制御がどう変化したかを比較する図

現代のゲームサウンドミドルウェア

現在では、こうした複雑な音の制御を助けるゲームサウンドミドルウェアが広く使われています。

代表的なものとして、

  • CRI ADX
  • FMOD
  • Wwise

があります。

CRI ADX

CRIのADXでは、Cueと呼ばれる単位で音を管理し、ゲーム側の状態に応じて再生するトラックを切り替えたり、クロスフェードしたりできます。

CRI Middlewareの解説では、Selectorによるトラック切り替えをビートに同期させるなど、インタラクティブミュージック向けの機能も紹介されています。

FMOD

FMODは、自身をゲーム向けのadaptive audioソリューションとして位置づけています。

ゲームから送られるパラメータによって、

  • 音量
  • フィルター
  • パート
  • 再生位置
  • エフェクト

などを変化させることができます。

Wwise

Wwiseにもインタラクティブミュージックのための仕組みがあります。

AudiokineticのWwise公式教材では、Music Segment間の遷移ルールを設定し、必要に応じて専用のTransition Segmentを挟むなど、ゲーム状態に応じて音楽を自然につなぐ方法が説明されています。

つまり現代では、

録音された音素材
       +
ゲームから送られる状態
       +
再生ルール
       ↓
プレイするたびに変化するゲームサウンド

を作れるようになっています。


ゲーム音源の歴史を、もう一度並べてみよう

全3回で見てきた流れを最後に並べます。

専用音響回路
      ↓
波形メモリ音源
      ↓
PSG
      ↓
FM音源
      ↓
MIDI・独自形式のシーケンスデータ
      ↓
PCMサンプル
      ↓
PCMサンプル+シーケンスデータ
      ↓
録音済みBGM・ストリーミング
      ↓
録音素材+インタラクティブ制御

ただし、この矢印は、

「古い技術が消えて、新しい技術に完全に置き換わった」

という意味ではありません。

現在でもFM音源は使われます。

PSG風の音も使われます。

MIDIも使われます。

サンプラーもシーケンサーも使われます。

ゲームの音の歴史は、古い道具を捨ててきた歴史というより、

使える道具を増やしてきた歴史

と考える方がよいでしょう。


まとめ

第1回では、ゲーム専用の回路からPSG、FM音源までを見ました。

第2回では、MIDIによって「演奏情報」と「音源」を分離し、異なる機器の間で共通の演奏情報を扱えるようになったことを見ました。

そして今回、PCMやストリーミングによって、完成した音そのものを大量にゲームへ入れられるようになった流れを見てきました。

ゲーム内で .mid ファイルを直接鳴らす時代は、以前ほど一般的ではありません。

しかし、

「音素材」と「いつ、何を、どう鳴らすか」を別々に考える

という考え方は、現代のゲームオーディオにも残っています。

スペースインベーダーでは、CPUが専用の音響回路を動かしていました。

PSGでは、CPUが周波数や音量を音源へ送りました。

MIDIでは、演奏情報を共通のメッセージとして音源へ送りました。

そして現代では、ゲームの状態をサウンドシステムへ送り、その状態に応じて録音素材を組み合わせ、ミックスし、変化させています。

形は大きく変わりました。

でも、

「ゲームの状態を、どう音に変換するか」

という問題は、ゲームが音を鳴らし始めた頃から、ずっと続いているのかもしれません。

← 前回: MIDIとは何だったのか? ― ゲーム音楽と演奏データの革命

シリーズ最初から読む: ゲームの音はどう作られていた? ― 専用回路・PSG・FM音源の時代

主な参考資料

Read more

自前ゲームエンジンにおける古くて大事なこと:ゲームオブジェクト型エンジン

自前ゲームエンジンにおける古くて大事なこと:ゲームオブジェクト型エンジン

C言語で種類ごとに管理していたゲームオブジェクトを、C++のクラス・継承・仮想関数・ポリモーフィズムによって一括管理する、昔ながらのゲームオブジェクト型エンジンを解説します。古典的な設計だからこそ、ゲームループや寿命管理、ObjectManagerなど、コンシューマータイトルや自前ゲームエンジン開発を目指すなら避けて通れない基礎が詰まっています。