X1turbo Agency

X1turbo Agency ブログ

8bitコンピュータ X1turboの探求サイト

X1turbo Agency

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周期波形)

f:id:x1turbo_agency:20190525234536p:plain
オリジナル(16msec)波形

・NewグラディウスDEMO (32msec周期波形)

f:id:x1turbo_agency:20190525234612p:plain
32msec波形

効果音は時間当りの周波数切替が激しく、対応する周波数の切り替え周期が長いために、表現力が落ちてしまいます。
聞き比べてみると少々寂しくなっています。

効果音を調整していて、サウンドを作れる人はやっぱりスゴイと思いました。

まとめ

BGMはともかく効果音は32.0msecだと厳しいというのが判りました。
最近気が付いたんですが、割込み周期を16msecにして、効果音だけ16msec周期にすれば良かったですね。
FM音源であればエンベロープ処理などをチップで行えるので、処理自体を軽く出来るかもしれません。
この辺りは今後検証を行ってみます。