だからチューン(続き)

それで思ったのですが、デチューン以前に調律はどれくらい合ってるんでしょうね?というわけで、

下の表はPC-8801, PC-9801系のFM音源で普通に(MUCOM88でもそれ以外でも)使われているF-Numberと、中央ドから1オクターブ分(MUCOM88ではo5)の音高です。すべての音で誤差は1セント未満(100セントが半音)なので、楽器として十分な正確さです。なお、F-Numberは11ビットありますが、bが1167なので最大限利用できているわけではありません。

最大限云々というのは、最低オクターブ以外のf~g+のF-Numberを1651, 1749, 1853, 1963とする(のとBlockを1減らす)と誤差がほんの少し減るはず……みたいな話ですが、意味はあまりないです。

cc+, d-dd+, e-eff+, g-gg+, a-aa+, b-b
F-Number618655694735779825874926981104011021167
周波数261.523277.181293.685311.035329.655349.121369.857391.862415.137440.104466.341493.848
一般的な平均律261.626277.183293.665311.127329.628349.228369.994391.995415.305440.000466.164493.883
誤差 (cent)-0.676 -0.0100.119-0.511 0.144-0.531 -0.644 -0.590 -0.700 0.4100.659-0.125

下の図は、11ビットで音階のパラメータで最大のもの(上の例では1167)を横軸の数値に割当てたときの、1オクターブ12音の中で一番大きい誤差(縦軸:セント)を示したものです。横軸1167の付近で1セント未満なのはたまたまです。まあ、1.4セントくらいでも十分小さいとは思いますが。

11bitの場合の最大誤差 (cent)

なお、オクターブは、F-Numberとは別のBlockというパラメータで指定する形式になっているため、他のオクターブでも誤差は同じです。

他の音源チップにありがちな、全音域の音高を1つの数値で指定する形式では、高音の誤差が大きかったり(PSG全般、ファミコンの音源など)、逆に低音の誤差が大きかったり(ナムコの波形メモリ音源など)します。

OPNのSSG部(\(\)\(\approx\)普通のPSG)の場合、音高のパラメータは12ビットですので十分に見えます。しかし、1オクターブ上がる毎に指定する値が半分になるので、実質1ビットずつ減っていき、最高オクターブでは音階に5ビットしか使えません。

5ビットともなると、下の図のように、限界まで工夫をしても(あるいは運が良くても)いずれかの音階に27セント程度の誤差ができます。普通はもっと大きな誤差になりますので、とても音痴な感じになります。(低い音がパラメータ最大になりますが、見方は上の図と同じです。)

5bitの場合の最大誤差 (cent)

ちなみに、ナムコの波形メモリ音源は、誤差の大きい部分が低音の方にある(音程の狂いがわかりにくい)のも優れた点ですが、それ以前に音高指定のレジスタが大きくて、(ものにより)16~20ビットだそうです。