SND_CalcTimer

構文

#include <iris_sp/snd/snd.h>
#define SND_PITCH_DIVISION_BIT 6
#define SND_PITCH_DIVISION_RANGE ( 1 << SND_PITCH_DIVISION_BIT )
u16 SND_CalcTimer ( u16 base_timer, s32 pitch );

引数

base_timer 元となるタイマー値です。
pitch ピッチ変化の値です。

返り値

ピッチ変化を施した後のタイマー値を返します。

結果は、チャンネルタイマーに設定できる値、すなわち、SND_CHANNEL_TIMER_MIN(0x10) から SND_CHANNEL_TIMER_MAX(0xffff) の範囲に切りつめられます。

説明

ピッチ変化したときのタイマー値を再計算します。

pitch は、0x40 を1半音とする相対的なピッチ変化量を表します。 例えば、0x40 * 12 は、12半音すなわち1オクターブを表します。 負値は、元より低い音程を表します。0x40は、SND_PITCH_DIVISION_RANGE として定義されています。 また、半音の分解ビット数 6 が、SND_PITCH_DIVISION_BIT として定義されています。

計算式で表すと、次のようになります。

timer = base_timer * ( 2 ** ( pitch/(64*12) ) )

参照

SND_SetChannelTimer

履歴

2004/01/19 初版