スーパーファミコンのBGMには、独特の質感があります。ファミコンのようにピコピコしているわけではなく、かといって現代の音楽のようにクリアでもない。少し曇っていて、少しざらついていて、それでいて妙に広がりがある——あの音です。
この記事では、その質感がどこから来ているのかを、音源の仕組みから順に解説します。「なんとなくレトロ」ではなく、どの要素がどの聞こえ方に対応しているのかを分解していきます。
📌 結論を先に
① 8bit機の「波形を合成する」方式から、16bit機は録音した音を再生する(PCM)方式へ変わった
② ただしメモリが64KBしかないため、BRRという圧縮を通す必要があり、その粗さが質感になった
③ さらに再生時の補間で高域が丸まり、チップ内蔵のエコーが広がりを足している
8bit機と16bit機で、根本的に何が変わったか
ファミコンやゲームボーイの音源は、波形をその場で生成する方式でした。矩形波、三角波、ノイズ——回路が作り出せる決まった形の波を、音程と音量を指定して鳴らす。だから、あの機種の曲はどれも似た音色になります。
対して16bit世代のスーパーファミコンは、あらかじめ録音した短い音(サンプル)を、音程を変えて再生する方式です。ピアノを録ればピアノが鳴り、オーケストラヒットを録ればオーケストラヒットが鳴る。この違いは決定的で、だからこそ16bit機のBGMは楽器の種類が一気に増えました。
同時に鳴らせるのは8ボイス。サンプリング周波数は32,000Hz。この2つが、曲づくり全体の枠を決めています。
最大の制約は「64KB」だった
問題は、その録音した音をどこに置くかです。音源側が使えるメモリ(オーディオRAM)は、わずか64KBしかありませんでした。しかもこの中には、サンプルだけでなく、演奏データもエコー用のバッファも同居します。
32,000Hz・16bitの音を無圧縮で置いたら、64KBは1秒ぶんで使い切ります。1曲ぶんのドラム、ベース、ピアノ、ストリングス、効果音を全部入れる必要があるのに、です。
このため、当時のサウンド担当者は次のような工夫を重ねました。
- サンプルを極端に短く切る(数十ミリ秒〜数百ミリ秒)
- 音の伸びる部分をループさせて、短いサンプルを長く鳴らす
- 同じサンプルを音程を変えて複数の楽器に使い回す
- そして、圧縮する
BRR圧縮が、あの「粗さ」の正体
16bit機の音源が使っていた圧縮方式が BRR(Bit Rate Reduction) です。仕組みはシンプルで、16サンプルを9バイトのブロックに詰め込む——つまりデータ量を約3.5分の1にします。
各ブロックには、1バイトのヘッダ(音量のシフト量、フィルターの種類、ループやブロック終端のフラグ)と、8バイトの波形データが入ります。波形は1サンプルあたり4bit、つまり16段階の値しか持てません。
その代わりに、直前のサンプルからの差分を予測する4種類のフィルターを切り替えることで、少ないビット数でも波形の形を追えるようにしています。急激に変化する音では予測が外れ、そこにノイズが乗る。逆に緩やかな音では素直に追従する。
この「予測が当たるところは滑らかで、外れるところがざらつく」という挙動が、16bit機のサウンド特有の粗さです。現代のビットクラッシャー(一律にビット数を落とすエフェクト)を掛けても同じ音にならないのは、この予測フィルターの有無が理由です。
再生時の補間が、高域を丸める
もうひとつ、質感を決めている要素があります。サンプルの音程を変えて再生するときの補間処理です。
たとえば、ド の音で録ったサンプルを ソ で鳴らすには、読み出す速度を上げる必要があります。このとき、飛び飛びになったデータの隙間をどう埋めるか。16bit機の音源は、4点ガウシアン補間という方式を使っていました。
この補間は、隙間を滑らかに埋める代わりに、高い周波数成分を削ります。結果として、音がわずかにこもり、角が取れます。あの「柔らかいけれど少しぼやけた」音像は、圧縮の粗さと、この補間の甘さが同時に効いた結果です。
高い音程で鳴らすほど補間の影響は強くなるため、高音のサンプルほど丸くなるという傾向もあります。
エコーが、狭い音に空間を作る
サンプルが短く、音が丸い。それだけなら地味な音になるはずですが、16bit機のBGMには明確な広がりがあります。これはチップ側がエコー機能を内蔵していたからです。
エコーは3つの要素で構成されています。
| 要素 | 役割 |
|---|---|
| ディレイ時間 | どれくらい遅れて返ってくるか(部屋の広さに相当) |
| フィードバック | 返ってきた音を何回繰り返すか(残響の長さ) |
| 8タップFIRフィルター | 返ってくる音の音質(高域を削る/強調する) |
特徴的なのは3つ目です。単なる山びこではなく、返す音にフィルターを掛けられる設計になっていました。高域を落とせば遠くの残響に、逆に強調すれば金属的な反射になります。当時のサウンド担当者は、このフィルター係数の調整でBGMの「場所の空気」を作っていました。
なお、エコー用のバッファも先ほどの64KBを消費します。エコーを深く掛けるほど、使えるサンプルが減る。空間の広さと音色の豊かさが、直接トレードオフになっていたわけです。
ノイズとピッチモジュレーション
残り2つ、質感に効いている機能があります。
ノイズチャンネルは、LFSR(線形帰還シフトレジスタ)による疑似ランダム波形で、32段階の周波数を選べます。パーカッション、波の音、風、爆発——サンプルを消費せずに効果音的な音が作れるため、メモリ節約の面でも重宝されました。
ピッチモジュレーション(PMON)は、あるボイスの出力で、隣のボイスの音程を揺らす機能です。ビブラートやうねりを、追加のサンプルなしで作れます。金属質な音や不安定に揺れる音は、これが使われていることがあります。
まとめ:質感は「制約の積み重ね」
改めて整理すると、16bitサウンドのあの音は、次の積み重ねでできています。
- PCM方式なので楽器の種類は自由——ただし
- 64KBの制約でサンプルが極端に短くループされ
- BRR圧縮で波形が粗くなり
- ガウシアン補間で高域が丸まり
- 内蔵エコーで空間が足される
だから、現代のDAWで「レトロ風プリセット」を選んでも同じ音にならないのです。再現すべきなのは音色ではなく、この処理の連なりだからです。
自分で同じ方式の音を作るには
当社が開発した ChipWave - レトロゲーム音楽チップチューン は、この記事で説明した処理をエミュレーターのラッパーではなく自前のC++ DSPコアとして実装したiPhone・iPad向けのチップチューンDAWです。
- 8ボイス・内部32,000Hz固定のサウンドエンジン
- BRR復号(9バイトブロック)と4点ガウシアン補間
- ADSR / GAINエンベロープ、ボイスごとの左右独立ボリューム
- LFSRノイズ(32段階)とピッチモジュレーション(PMON)
- ディレイ・フィードバック・8タップFIRのエコー
- 64KBのオーディオRAM予算をアプリ内に表示。実機と同じ枠の中で曲を組める
- 手持ちのWAV / AIFF / CAFをBRRへ自動変換、
.brrの読み込みと書き出しにも対応 - 権利をお持ちのSPCスナップショットを解析し、DSPへのレジスタ書き込みから8トラックのピアノロールへ変換
パラメータ表示にはレジスタ値を16進数で併記しているため、「どの値がどの音の変化に対応しているか」を触りながら確認できます。この記事の内容を、耳で確かめられる形にしたアプリだと思っていただければ近いです。
作曲そのものの手順は チップチューンの作り方入門 にまとめています。FM音源(メガドライブ系)の仕組みに興味がある方は FM音源の音作り入門 をどうぞ。
