FPGA 版 FM 音源 (33) -- YM2151 (OPM) 測定 (2)
YM2151 (OPM) の EG の測定で、
- EG の更新頻度はサンプリング周波数 fsの 1/3 (3 サンプルごとに更新)
- (キー・レート・スケーリング適用後の) レートの上位 4 ビット (R′) の表現で「12」が ロー・レートとハイ・レートの境界になっている
- ロー・レートでのレート下位 2 ビット (R′KS) の効果は、OPL3 と同様の 8 進レート・マルチプライアで実現されている
- ハイ・レートでのレート下位 2 ビット (R′KS) の効果は、OPL3 とは違って、 4 進レート・マルチプライアで実現されている
ことが分かりました。
OPM では OPL3 のように「フルスケールの直流」を波形出力として選択できないので、波形出力として下に示すような「方形波」を FM 合成により作成しました。
これは、
- 「アルゴリズム」としてキャリア 1 個、モジュレータ 1 個の 2 オペレータ直列 FM 構成
- モジュレータの周波数はキャリア周波数の 2 倍
- モジュレータの EG はサステイン・レベル 0 dB
- モジュレータの「トータル・レベル」TL = 43 (減衰量 32.25 dB)
という設定にしたものです。
OPM では 4 オペレータ・モードしかないので、具体的には、アルゴリズムは 2 オペレータ直列 FM を 2 系統持つ 4 番を選択し、片方の系列だけを有効にして、もう片方の系列はミュートしています。
この波形の正のピーク中央付近から立ち下りの「肩」の部分までの拡大を下に示します。
ピーク値は ±8168 であり、ピーク値を取る幅がなるべく広くなるようにモジュレータの TL 値を選んでいます。
この波形のキャリア・オペレータの EG の設定を変えながら、出力波形を観察して EG のふるまいを見ています。
例として、AR = DR = 26、RKS = 2 と指定し、キー・レート・スケーリング後のレートの上位 4 ビット R′ = 13、下位 2 ビット R′KS = 2 となる場合の波形を下に示します。
レート値としてはハイ・レートに属します。
このアタック・ピーク付近を拡大したものを下に示します。
アタックの左側の部分は、アタック・カーブ全体で言えば中間部となり、まだ方形波がピークに達していない「立ち上がり」部分です。
それ以外の部分は方形波がピーク値に達しており、キャリア・オペレータの EG 出力が正しく反映されたものとなっています。
見て分かる通り、アタック中間部を除き、同じ値のサンプルが 3 個ずつ並んでおり、EG の値の更新レートがサンプリング・レートの 1/3 になっていることが確認できます。
また、ディケイ部分を見ると、EG 値の減少ステップ幅が
...、大、小、大、小、...
の順に並んでいることが分かります。
OPL3 の場合と同様に、レート・マルチプライアの真理値表をまとめると下のようになります。
ハイ・レートでのシフト・セレクト値の変化が 4 クロック周期になっています。
R′KS= | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | |||
---|---|---|---|---|---|---|---|---|---|---|---|
SFT_SEL | CLK_EN | ||||||||||
カウント | (bin) | ||||||||||
0 | 000 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | ||
1 | 001 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | ||
2 | 010 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | ||
3 | 011 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | ||
4 | 100 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | ||
5 | 101 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | ||
6 | 110 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | ||
7 | 111 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |