#include <nitro/snd.h>typedef struct SNDWaveParam
{
u8 format;
u8 loopflag;
u16 rate;
u16 timer;
u16 loopstart;
u32 looplen;
} SNDWaveParam;
typedef struct SNDWaveData
{
struct SNDWaveParam param;
u8 samples[0];
} SNDWaveData;
format |
サンプルフォーマットです。 |
loopflag |
ループフラグです。0ならループ無し、非0ならループ有りです。 |
rate |
サンプリングレートです。単位はHzです。 |
timer |
再生タイマー値です。SND_TIMER_CLOCK / rate に相当します。 |
loopstart |
ループ開始ポイントです。単位はワード(32bit)です。 |
looplen |
ループ長です。ループ無しの場合は、波形長に相当します。 単位はワード(32bit)です。 |
samples |
サンプルデータの配列です。配列の大きさは、
loopstart+looplen[word]です。
|
波形データ構造体です。波形データのヘッダ情報及びサンプルデータを保持しています。
サンプルフォーマットformatは以下の値を取ります。
表 . SNDWaveFormat
| ラベル | 説明 |
|---|---|
| SND_WAVE_FORMAT_PCM8 | 8bit PCM |
| SND_WAVE_FORMAT_PCM16 | 16bit PCM |
| SND_WAVE_FORMAT_ADPCM | IMA-ADPCM |
サンプルフォーマットがSND_WAVE_FORMAT_ADPCMの場合、
サンプルデータsamplesの先頭1wordには、
次のようなADPCMのヘッダ情報が格納されます。
struct {
s16 prevsample; // 前のサンプル値
u8 previndex; // 前のインデックス値
u8 padding; // パディング(常に0)
};
なし。
2005/01/19 初版