FPGA 版 FM 音源 (32) -- YM2151 (OPM) 測定 (1)

YMF262 (OPL3) ではオペレータ出力波形に正弦波だけでなく、各種の波形を選べるので、

  • WS = 6 として「フルスケール矩形波」を選択
  • F-NUMBER = 0 (オペレータ周波数 = 0) として、フェーズ・アキュムレータを 0 に固定

することにより、波形出力としてフルスケールの「直流」を出力することができます。
この「裏技」的な方法で、EG 出力そのものを 1 サンプルごとに DC レベルとして読み取ることができます。
一方、「旧タイプ」である YM2151 (OPM) ではオペレータ出力は正弦波に限られるので、EG 出力は本来の「エンベロープ」として観測するしかありません。
キー・レート・スケーリング補正込みのアタック・レートで AR = 4 (OPL3 では AR = 2) に相当する設定で波形をキャプチャし、波形編集ソフトで表示したものを下に示します。

RKS = 0 (OPL3 では Rof = 0) に相当する設定であり、時間方向の刻みは等間隔になっています。
OPL3 の場合と同様に、ゴンペルツ曲線によるアタック・カーブの特徴的な変化をしています。
ただし、振幅方向にも、時間方向にも「刻み」が細かくなっています。

解析の結果、左の図のように、EG アキュムレータのビット幅は OPL3 の 9 ビットから 1 ビット増えて 10 ビットとなり、フィードバックのシフト量は OPL3 の 3 ビットから 1 ビット増えて 4 ビットになっています。
このアタック発生回路をプログラムで実現した結果のプロットを下に示します。

EG アキュムレータの値と、リニア値での出力の表を下に示します。
最小値から最大値まで 74 ステップ (OPL3 では 36 ステップ) のシーケンスとなっており、リニア出力値はキャプチャ結果の実測値と完全に一致しています。














































































Rof = 0
i Lin
out
EG
acc
s
0 0 1023 4
1 0 959 4
2 0 899 4
3 0 842 4
4 1 789 4
5 2 739 4
6 4 692 4
7 7 648 4
8 11 607 4
9 17 569 4
10 25 533 4
11 36 499 4
12 51 467 4
13 71 437 4
14 97 409 4
15 129 383 4
16 167 359 4
17 214 336 4
18 272 314 4
19 338 294 4
20 415 275 4
21 505 257 4
22 607 240 4
23 722 224 4
24 849 209 4
25 988 195 4
26 1138 182 4
27 1296 170 4
28 1460 159 4
29 1627 149 4
30 1813 139 4
31 1999 130 4
32 2204 121 4
33 2402 113 4
34 2620 105 4
35 2826 98 4
36 3050 91 4
37 3254 85 4
38 3472 79 4
39 3666 74 4
40 3870 69 4
41 4084 64 4
42 4312 59 4
43 4504 55 4
44 4704 51 4
45 4912 47 4
46 5072 44 4
47 5240 41 4
48 5412 38 4
49 5592 35 4
50 5776 32 4
51 5968 29 4
52 6100 27 4
53 6232 25 4
54 6368 23 4
55 6508 21 4
56 6652 19 4
57 6796 17 4
58 6944 15 4
59 7020 14 4
60 7096 13 4
61 7176 12 4
62 7252 11 4
63 7332 10 4
64 7412 9 4
65 7492 8 4
66 7572 7 4
67 7656 6 4
68 7740 5 4
69 7824 4 4
70 7908 3 4
71 7996 2 4
72 8080 1 4
73 8168 0 4