[1chipMSX]
拡張WAVE音源の不都合修正2
※情報の正確さは保証できません。
SCC音源の出力波形は、波形メモリに設定された波形(8bit 2の補数形式の 32sample波形)を元に計算して決定されます。
波形は 2の補数であり、+と−の両方に振れますが、1chipMSX では、−方向にオフセットが掛かっており、
SCC波形メモリで 0 のレベルが、出力で 0 になっていないバグがあります。
音声は、基本的に波形の変化部分(微分成分)を感じるので、全体的に下がっている分には音として現れないのですが、
困ったことに OPLL は正常に 0 を中心に振れており、PSG は+方向だけに振れています。
これによって、音の鳴り始め・鳴り終わりのところで、不必要なオフセットが掛かり、結果的に低周波の矩形波が載っている
状態が発生し、周波数が低いために矩形のエッジ部分で「プツッ」と大きなノイズが入ったように聞こえます。
PSG でも同様のことが言えるのですが、これは本物のMSXでも発生している現象なので、互換性のために修正しません。
一方で、SCC は実機ではしっかり 0 を中心に波形が出てくるため、これにあわせて修正を施します。
修正箇所は、scc_wave.vhd の SCCチャネル音量制御に符号拡張の回路を追加することと、emsx_top.vhd のミキサー
部分に SCC音声出力が符号付きであることを意識して SCCマスター音量を設定するように修正することです。
この修正を施すと、SCC利用のミュージックプレイヤーで、SCC再生の時にプツプツノイズが入る現象が改善されます。
修正量が多いので、ここに差分は明記しません。上に戻って「最新版ダウンロード」をクリックすると、この修正と、
その他の修正を施した最新ソースをダウンロードできます。
違いを見たい人は、オリジナルのソースと DIFF をとって確認すればOKです。
[▲上へ]