[1chipMSX]

SCC音源の謎

※情報の正確さは保証できません。

1chipMSX の 拡張WAVE音源も、かなりの修正を加えて、だいぶ実機に近づいてきました。
しかし、まだ大きな違いが残っています。
下の波形を見てください。



実機の波形と、1chipMSX(私の改造を加えたモノ) の波形を並べたモノです。
SCMD での再生中の波形ですが、SCCの音色データとしては、1chipMSX の再生のような山が潰れた波形をセット
しています。しかし、実機では、潰れた部分を補うように山が形成されています。
1chipMSX(改) の波形は、まさに設定に忠実に再生できているのですが、残念なことにそれは実機と一致しません。

この山が補われることによって、波形データで設定可能な最大振幅を越えた振幅が再現できるために、
それを意図的に利用して曲データを作っている方もいます。
となると、SCMD のようなプレイヤーで、いい音の再生を聴くには、これも再現したいところです。

困ったことに、この再現方法の良い案を思いつきません。
何が足かせになっているかというと、

・波形メモリに大量アクセスしないこと
・波形を頻繁に書き換えても(SCCPCM)、波形の継ぎ目に山潰れがある場合に不自然な音にならないこと
・飽和しているけど山補正が不要な波形(矩形波等)で余計な補正をしないこと

です。
実際、矩形波を実機で再生すると、微妙に右上がりで膨らみます。
1chipMSX(改) では、オーバーシュート・アンダーシュートが若干発生するくらいで、
かなり忠実に矩形波が再生されます。
このあたりにも何かヒントがあるのかもしれません。

ちなみに、ソフトによるエミュレータである BlueMSX は、この補正処理を再現できていて、かなり実機に近い音が
再生されます。


BlueMSX のソースのありかを教えて貰ったので、SCC エミュ部分を眺めてみました。
95タップのかなり大きな FIRフィルタが掛けられています。
係数を見てみると、sinc() 関数のような形状なので、おそらく振幅特性は綺麗な矩形特性だろうと思いつつ、
自作ツールで振幅特性をグラフ化。



やっぱり矩形な特性ですね。
0Hz から ナイキスト周波数の 1/4 くらいまでを保存し、それ以上は根こそぎカットするようなフィルタになってます。
このフィルタだと、元信号より振幅が大きくなることは無い(※微妙な増幅は考えないことにする)ので、
このフィルタが、クリップ波形を滑らかにする処理に直接関わっているわけじゃ無さそうです。
増幅して、これで鈍らせているとすると、増幅部分があんなに尖ったりしないので、別途何らかの補正処理を行っていそうな気がします。
[▲上へ]