しかし、Amiga Periodというのはどういう理屈なんでしょうね。
というわけで、調べてみることにしました。
まず、音源フォーマット MODについて のソースの、Key(Note)からPeriodを計算する部分を抜き出して、0-120のKeyを与えるとどのようなPeriodが算出されるか調べました。
調べるために作成したプログラムソースはです(WSHです。C++では面倒でしたので)。
それをOpenOfficeの表計算でグラフ化すると、指数関数のグラフとなります。
なので、高い音階になるほど1PeriodあたりのPitchが大きくなるのですね。
次に、これに近い値をなぞる指数関数を考えます。
おそらくKey関連なので例の2^(note/12)あたりが怪しそうです。
数式をこねくり回すと、すごく近い値を出す関数ができました。
period=2^((116.898-X)/12)32
この値(period)に、さらに下記の演算を施すとC4を基準音とした場合の各音階の再生Speedになります。
再生Speed = (7159090.5 / (period/2) ) / (836332)
8363はC4のperiod値です。7159090.5はAmigaのCPUClockだそうです。
全然わかりませんね。
なんでAmigaのCPUクロックを割るんでしょうか?