Period,Speed

公開:2004-03-23 20:21
更新:2020-02-15 04:36
カテゴリ:psycle wtl,windows,audio,tracker

PsycleにSpeedというものがあります。

これはサンプルを再生速度のことで、64ビットの固定小数点値になっています。
このスピードはNoteとチューニング値、そしてOutPutのサンプリングレートによって以下の数式で求められます。

Speed = 2 ^ (((note + wavetune) - 48.0f + finetune) / 12.0f) 0x100000000 (44100 / outputRate)

この値はC4でoutputRateが44.1KHzの場合0x100000000となり、サンプルそのままのレートで再生されます。

XMにはPeriodというものがあります。
これは、下記のような数式でもとめられます。
Period = 1012164 - Note164 - FineTune/2
これは、1音階を64に分解したものといえます。
さらにPeriodから、再生周波数をもとめるには、

Freq = 8363
2^((612164 - Period) / (12164))

これはC4(48)の場合、8363Hzとなります。
その後Freq値を「ごにょごにょ」として再生されるようですが。
XMの場合、ポルタメント系のEffectはPeriodをAdd,Subすることで行います。
Psycleの場合はPeriodはないので、トーンポルタメントなどを行うときにXMと同じようにするためには、どうすればよいか考えました。
今までは適当な値を実際のSpeedに足したり引いたりしてましたが、それではXMと同じ(まったく同じは私にはムリですが、それなりに同じ)に再生できません。
やはりPeriodをエミュレートする必要があるのではないかと最初考えましたが、よくよく考えたら 2^(1/(12
64)) - 1.0の値をTick毎に変化量に加算して、それを最終スピードにかければよいのでは...と思いやってみようと思っているところです。