Newグラディウス デモ (PSGサウンド)
PSGサウンドと処理量について
今回はPSG音源について書いてみます。
PSGは古くから使われていますが、周期や処理量に興味があってそれについて書いてみます。
サウンドドライバの割込み周期
これはゲームごとに違うと思いますが、VBLANK割込みの関係からか 60fpsが多く、
X1版グラディウスは 16.0msecでした。
今回制作したPSGドライバの場合 1ch当りの処理は、音が鳴っている時は 0.7msec、
3ch再生している時は 2.1msecです。
16.0msec周期で処理を行うと 20fpsでの比率では 3倍の6.3msecになり、
かなり重い処理になってしまいます。
曲のテンポと周期について
例えばテンポが120の時は、4分音符の長さは0.5秒で
64分音符の場合だと、0.03125秒(31.25msec)です。
曲でどのくらいの分解能が必要かは、曲の速さで変わると思いますが、
もし倍の周期の 32.0msec割込みにすれば処理を 2/3に減らすことができます。
処理量を気にして、今回は 32.0msec周期割込みを使用しています。
問題は、それで表現力がどのくらい変わるかです。
BGM
BGMデータをチェックしてみると基本的な音の長さは 96msecだったので、32.0msec周期で十分間に合います。
今回はありませんでしたが、ソフトウェアエンベロープや、
ビブラート等の表現があると、周期が長いのが気になると思います。
耳が良い人だと気が付くと思います。
効果音
X1版原作では、効果音の周期は16.0msecだったので、32.0msec用にデータを似せて作っています。
調整を行ってみましたが、「効果音は32.0msecで表現するのはきびしい」というのが感想です。
以下は波形を比べてみたものです。
・オリジナル (16msec周期波形)
・NewグラディウスDEMO (32msec周期波形)
効果音は時間当りの周波数切替が激しく、対応する周波数の切り替え周期が長いために、表現力が落ちてしまいます。
聞き比べてみると少々寂しくなっています。
効果音を調整していて、サウンドを作れる人はやっぱりスゴイと思いました。
まとめ
BGMはともかく効果音は32.0msecだと厳しいというのが判りました。
最近気が付いたんですが、割込み周期を16msecにして、効果音だけ16msec周期にすれば良かったですね。
FM音源であればエンベロープ処理などをチップで行えるので、処理自体を軽く出来るかもしれません。
この辺りは今後検証を行ってみます。