FPGA 版 FM 音源 (16) -- YMF262 測定 (8)
ディケイ/リリースの DR/RR = 12 以下の減衰時間の長いほうに関する回路については、ほぼ、推測できました。
DR/RR = 13 以上の減衰時間の短いほうに関する回路については、まだ、不明確ですが、そろそろ、アタックの話に移ろうと思います。
その前に、1 月 7 日付けの記事で触れた、エンベロープ・カーブにおかしな所があるという話について説明します。
まず、エンベロープそのものを DC 波形として、縦軸の倍率を上げてゼロ付近を表示したものを再掲します。
リリースで減衰して行き、「ゼロ」に収束して、一見、問題ないように見えます。
次は、WS = 6 の方形波を選択して、波形を見たものです。
右端の目盛りで分かるように、1 LSB が大きく表示されるようなレベルにしてあります。
アタック前は確実に「ゼロ」の状態ですが、リリース後は、-1 LSB を中心として、-2 〜 0 LSB の間を振動しているのが分かります。
2 オペレータ並列アルゴリズムで出力させていますから、1 オペレータ当たりでは、-1 〜 0 LSB の間を振動していることになります。
この「振動」状態は、画面に表示されている部分を過ぎても、ずっと続きます。
「アタック」前の部分の拡大を下に示します。
最初の完全に出力が「ゼロ」の部分は、オペレータ出力の出力先選択ビットが「オフ」になっていて、オペレータ出力が完全に切り離されている状態のものです。
その後、-6 LSB 程度まで変化している部分は、出力先選択ビットを「オン」にしたり、その他のレジスタ設定をしている部分です。
その後の -2 〜 0 LSB まで塗りつぶされている部分が、本当のアタックの始まりの部分です。
つまり、アタックでも、本当に振幅「ゼロ」からは始まりません。
TL (Total Level) の設定で、オペレータ出力を -96 dB まで絞ることができますが、本当に振幅「ゼロ」にすることは不可能です。
この TL で振幅を最小に絞った状態 (およびエンベロープが減衰した状態) では、元の波形がどんな形であろうとも、正と負の間を振動している限りでは、1 オペレータ当たりの出力でみると -1 LSB と 0 LSB の間を振動する形になります。
したがって、測定対象ではないオペレータを出力チャンネルに接続したままだと、エンベローブは減衰していて出力が「ゼロ」であるべき場合でも出力がゼロにならず、目的のオペレータの測定としては「ノイズ」となってしまいます。
これが、以前に YMF724 で EG の測定をした時に、±4 LSB 程度の「ノイズ」が乗っていた理由です。
WS = 1、2、3、5 の、「強制ゼロ」を含み、正方向にしか振動しない波形では、-96 dB の減衰後は、プラス側の最小振幅、つまり 0 LSB の連続となり、オペレータ当たり +0.5 LSB の DC オフセット分だけで AC 成分は存在しなくなります。
今回の測定の途中で、このようなことが分かったので、測定対象以外のオペレータの出力ビットは「オフ」にして、測定対象のオペレータだけが出力につながるようにして、良好な結果を得ることができました。