SND_SetupChannelPsg

構文

#include <iris_sp/snd/snd.h>
#define SND_PSG_CHANNEL_MIN 8
#define SND_PSG_CHANNEL_MAX 13
#define SND_PSG_CHANNEL_NUM (SND_PSG_CHANNEL_MAX-SND_PSG_CHANNEL_MIN+1)
#define SND_CHANNEL_VOLUME_MAX 0x7f
#define SND_CHANNEL_TIMER_MIN 0x0010
#define SND_CHANNEL_TIMER_MAX 0xffff
#define SND_CHANNEL_PAN_MAX 0x7f
void SND_SetupChannelPsg (
u32 chNo,
SNDDuty duty,
u32 volume,
u32 timer,
u32 pan
);

引数

chNo チャンネル番号です。8 〜 13 の範囲です。8はSND_PSG_CHANNEL_MINとして、13はSND_PSG_CHANNEL_MAXとして定義されています。 また、PSGチャンネルの数が、SND_PSD_CHANNEL_NUMとして定義されています。
duty PSG矩形波のデューティ比です。
volume ボリュームの値です。0 〜 127 の範囲です。値が大きいほど、大きな音量になります。 0が無音で、127がフルレンジです。127は、SND_CHANNEL_VOLUME_MAXとして定義されています。
timer タイマーオーバーフロー周期の値です。0x0010 〜 0xffff の範囲です。単位はシステムクロックです。 0x0010はSND_CHANNEL_TIMER_MINとして定義されています。0xffffはSND_CHANNEL_TIMER_MAXとして定義されています。
pan パンの値です。0 〜 127 の範囲です。0 が左、64 が中央、127 が右になります。127は、SND_CHANNEL_PAN_MAXとして定義されています。

返り値

なし。

説明

PSG矩形波用にチャンネルを設定します。 再生を開始するには、SND_StartChannel を呼び出します。

タイマーオーバーフロー周期の8分周値が矩形波の周期になります。

再生中のチャンネルに対してこの関数を呼び出すと、再生は停止します。

SNDDuty 説明
SND_DUTY_1_8 1/8 (12.5%) デューティ
SND_DUTY_2_8 2/8 (25.0%) デューティ
SND_DUTY_3_8 3/8 (37.5%) デューティ
SND_DUTY_4_8 4/8 (50.0%) デューティ
SND_DUTY_5_8 5/8 (62.5%) デューティ
SND_DUTY_6_8 6/8 (75.0%) デューティ
SND_DUTY_7_8 7/8 (87.5%) デューティ

typedef enum
{
    SND_DUTY_1_8,
    SND_DUTY_2_8,
    SND_DUTY_3_8,
    SND_DUTY_4_8,
    SND_DUTY_5_8,
    SND_DUTY_6_8,
    SND_DUTY_7_8
}
SNDDuty;

参照

SND_StartChannel, SND_StopChannel, SND_SetupChannelPcm, SND_SetupChannelNoise

履歴

2004/01/19 初版