SND_SetupChannelPcm

構文

#include <iris_sp/snd/snd.h>
#define SND_CHANNEL_NUM 16
#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_SetupChannelPcm (
u32 chNo,
const SNDWave* wave_p,
const void* data_p,
u32 volume,
u32 timer,
u32 pan
);

引数

chNo チャンネル番号です。0 〜 15 の範囲です。チャンネル数16が、SND_CHANNEL_NUM として定義されています。
wave_p 波形情報構造体のポインタです。メインメモリを指すことはできません。
data_p 波形データ先頭アドレスです。4バイトアライメントされていなければなりません。メインメモリを指していても構いません。
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として定義されています。

返り値

なし。

説明

PCM/ADPCM 用にチャンネルを設定します。 あらかじめ、wave_pのメンバに値を設定してから呼び出してください。

再生を開始するには、SND_StartChannel を呼び出します。

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

フォーマット 説明
SND_WAVE_FORMAT_PCM8 8ビット PCM
SND_WAVE_FORMAT_PCM16 16ビット PCM
SND_WAVE_FORMAT_ADPCM ADPCM(IMA方式)

typedef struct SNDWave {
    u8  format;    // PCMデータフォーマット
    u8  loopflag;  // ループフラグ 0 or 1
    u16 rate;      // サンプリングレート
    u16 timer;     // = SND_CHANNEL_CLOCK / rate
    u16 loopstart; // ループ開始ポイント [ワード単位]
    u32 looplen;   // ループの長さ [ワード単位]
} SNDWave;

ループ無しの場合、loopstartは、任意で構いません。 looplenには、データの長さ[ワード単位]を設定してください。

ADPCM ではヘッダがあるため、loopstartは1ワード分ずれることに注意してください。

ratetimerは関数内では使用していませんので、設定しなくても構いません。

参照

SND_StartChannel, SND_StopChannel, SND_SetupChannelPsg, SND_SetupChannelNoise

履歴

2004/01/19 初版