# SNDWaveData

## 定義

      #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` | ループフラグです。０ならループ無し、非０ならループ有りです。
`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`の先頭１wordには、 次のようなADPCMのヘッダ情報が格納されます。

    struct {
        s16 prevsample; // 前のサンプル値
        u8  previndex;  // 前のインデックス値
        u8  padding;    // パディング(常に0)
    };

## 参照

なし。

## 履歴

2005/01/19 初版