# NNS_SndWaveOutStart

## 構文

      #include <nnsys/snd.h>

      BOOL NNS_SndWaveOutStart(
              NNSSndWaveOutHandle handle,
              NNSSndWaveFormat format,
              const void* dataaddr,
              BOOL loopFlag,
              int loopStartSample,
              int samples,
              int sampleRate,
              int volume,
              int speed,
              int pan );

## 引数

`handle` | 波形再生ハンドルです。
`format` | 波形データフォーマットです。
`dataaddr` | 波形データの先頭アドレスです。
`loopFlag` | ループフラグです。
`loopStartSample` | ループ開始サンプル位置です。
`samples` | 波形データのサンプル数です。
`sampleRate` | 波形データのサンプリングレートです。単位は Hz です。
`volume` | ボリューム値です。値の範囲は、0 〜 127 です。
`speed` | 再生スピードです。
`pan` | パン（定位）です。値の範囲は、0(左)〜 64(中央)〜 127(右) です。

## 返り値

再生に成功したかどうかを返します。

## 説明

波形データを再生します。

波形再生ハンドル`handle`には、`NNS_SndWaveOutAllocChannel`関数で、 取得したものを入れます。

波形データフォーマット`format`は、下記の値で指定します。

表 . NNSSndWaveFormat

ラベル | 説明
--- | ---
NNS_SND_WAVE_FORMAT_PCM8 | 8ビットPCM
NNS_SND_WAVE_FORMAT_PCM16 | 16ビットPCM
NNS_SND_WAVE_FORMAT_ADPCM | IMA-ADPCM

波形データ先頭アドレス`dataaddr`は、４バイトアライメントされている必要があります。

ループフラグ`loopFlag`は、ループ再生を行うかどうかのフラグです。 TRUEを指定すると、最後のサンプルまで再生した後、 ループ開始サンプル`loopStartSample`の位置から再び再生を再開します。 なお、ループ開始サンプル`loopStartSample`は、８ビットPCMの時は４の倍数、16ビットPCMの時は２の倍数、IMA-ADPCMの時は８の倍数でなければなりません。

サンプル数`samples`は、８ビットPCMの時は４の倍数、16ビットPCMの時は２の倍数、IMA-ADPCM の時は８の倍数でなければなりません。

再生スピード`speed`は、再生する速さを指定します。 `speed`÷32768倍の速さで再生されます。 再生スピードを速くすると、再生時間が短くなり、再生される音の高さが高くなります。

## 参照

NNS_SndWaveOutAllocChannel

## 履歴

2009/02/02 IMA-ADPCM 対応
2004/07/01 初版