スーパーファミコンの自作ゲーム用の音楽の書法を探る・前編


1.制約から生まれる深淵

今回は前編と後編に分けて、音楽用のスコアデータ、すなわち譜面に関してのことを書いていきます。音色データの制作に始まり、ようやく3年目にして「どうすれば実機で動作する自作ゲーム用に豊かなサウンドを提供できるのか」という独自研究の内容が固まりつつあります。

ファミコンほどポピュラーではないとは思うのですが、スーパーファミコンの最大同時発音数が8音であることはご存知でしょうか。再生トラックは計8つあり、1つのトラックでは同時に1つの音しか鳴らせないという決まりがあります。ただしサウンドメモリに音色データを読み込んでおけば、演奏の途中でそれらを切り替えることは可能です。このルールを知った上で、音楽の譜面はどのように作られているのか見ていきましょう。

実際に動くゲームの動画を見るとなんとなく分かると思うのですが、PA Gamesさんで開発中のTaco(仮)では、8つあるトラックのうち、音楽用に6トラック、効果音用に2トラックを常時確保するという仕様になっています。

また別の制約として、サウンドチップに内蔵されているエフェクト類が使用不可であることが挙げられます。これらは開発中のゲームの演出に必須となる機能ではないので、この部分のドライバの開発は進めていません。下記にハードの仕様を引用しましたが、打ち消し線が入っている部分が未開放の機能になっているので、それを前提として記事を読み進めていただけると幸いです。


SRAM: 64KB
サンプリング周波数: 32kHz
同時発音数: 8チャンネル
16bit PCM ステレオ(ADPCM
SPC700クロック周波数: 2.048MHz
DSP(エフェクター)の機能:BRR圧縮された波形データの復元
ADSR
ガウス分布補間
エコー
ディレイ(最大240ms)
リバーブ(次数8のFIRフィルタ付)
ピッチモジュレーション(1チャンネルのみ不可)
ノイズ(発生周波数: 0~32kHz)
ピッチベンド

出典:Wikipedia SPU (Sound Processing Unit) SPC700

2.作例の提示とトラックの配分

さて、前提を述べたところで、そろそろ本題に入っていきましょう。ここでは例として開発中のゲームで使われている「お店のBGM」を題材にします。ちょうど過去に実機用のサウンドデータをグラフィカルに再生したツイートがあったので、ここに掲載します。各トラックのフレーズがどのように動いているか目視することができるので、一度確認してみてください。

実機用データを黒羽製作所さんの黒猫SPCで再生している様子

いかがでしたか。エフェクト類なしで6トラックしか使っていない割には、それなりに密度が高い音楽になっているかと思います。

このラテン風の音楽の音色の割り当ては以下のようになっています。

トラック1. エレクトリックベース
トラック2. ピッコロ
トラック3. ピアノ
トラック4. ピアノ
トラック5. キック / スティールパン / ピアノ
トラック6. マラカス / コンガ
トラック7. 効果音用
トラック8. 効果音用

このように音楽用に使える6トラックのうち、2トラックをドラムやパーカッションに使用すると、残り4声で音楽を表現しなければならないことになります。

それでもファミコンよりは贅沢なのでは……という気もするのですが、スーパーファミコンの音源の種になるADPCMの音色データは、リアルな楽器に近いキャラクターを持った音が出せる反面、基本的に音色用の波形データは0.3秒以下にまで切り詰めないといけない上に、そこからさらに波形データを間引くような圧縮をかけているため、音色そのものが曇ったり痩せたりしてしまうのです。

リアルだけど痩せている音をサウンドチップによるエフェクトで調整して厚みを出す、というのが1つのテクニックなのかもしれませんが、その手段は使えないですし、さらに6トラックが上限になるならば、当然、譜面から音の密度を上げるという工夫が必要になります。


3.チップチューンのテクニックを活用する

お店のBGMではベースとメロディのトラックを設けているので、残りの2トラックをピアノに割り当てているのですが、ここでは音の厚みを出している一例として、分散和音と擬似ディレイを組み合わせた例を紹介します。

2つのピアノのトラックを合成して譜面を表示させたもの。
緑の音符が擬似ディレイ

通常、分散和音や擬似ディレイは1トラックだけで表現可能ですが、擬似ディレイのリリース音を確保するための別のトラックを組み合わせることで、ピアノの音を豊かなものにしています。この辺りはファミコンやゲームボーイのサウンドの打ち込みをされている方ならお馴染みでしょう、まさにそのテクニックがここで活きるのです。

また、この音楽ではトラック5の休符(空き時間)を一瞬だけ間借りすることで、ピアノで3和音を同時に鳴らすアレンジになっている部分があります。このように楽曲の展開上、和音が持っている機能に配慮して発音数を稼ぎたい場合は、一時的に他のトラックを間借りすることもできます。

ここまでは基本的なテクニックなのですが、別の手段としては、各トラックに発生する休符(空き時間)を利用し、手動で細かく音色切り替えを行うことで、論理的に使えるトラック数を増やすことも可能です。これは譜面上の音が重ならなければ、1トラックだけでドラムキットのような演奏ができることの応用です。

その具体的な書法とは?後編は下記のリンクからどうぞ。

Taco(仮)はデジゲー博2018で試遊できます。詳しくはPA Gamesのサイトをチェック!