#include <nnsys/snd.h>BOOL NNS_SndStrmSetup( NNSSndStrm* stream, NNSSndStrmFormat format, void* buffer, u32 bufSize, int timer, int interval, NNSSndStrmCallback callback, void* arg );
stream |
ストリーム構造体のポインタです。 |
format |
ストリームデータフォーマットです。 |
buffer |
ストリームバッファの先頭アドレスです。32バイトアライメントされている必要があります。 |
bufSize |
ストリームバッファサイズです。interval * (チャンネル数) * 32の倍数で無ければなりません。 |
timer |
ストリームチャンネルのタイマー値です。 |
interval |
コールバックインターバルです。2以上の値を指定します。 |
callback |
ストリームコールバック関数のポインタです。 |
arg |
ストリームコールバック関数のユーザー引数です。 |
ストリームのセットアップを行います。 あらかじめ、NNS_SndStrmAllocChannel関数で、 チャンネルを確保しておく必要があります。 ストリームを再生するためには、この関数の後で NNS_SndStrmStart関数を呼びだします。
ストリームデータフォーマットformatは、下記から選択します。
16ビットの方が音質は良くなりますが、8ビットの時と比べて2倍の頻度でコールバック関数が呼びだされます。
8ビットの時と同じ頻度で呼びだされるようにするためには、
ストリームバッファを2倍のサイズ用意する必要があります。
ストリーム再生を行うためには、ストリームバッファが必要になります。
ストリームバッファが小さいほど頻繁にコールバック関数が呼びだされます。
ストリームバッファの先頭アドレスbufferは、
32バイトアライメントされている必要があります。
また、ストリームバッファサイズbufSizeは、
interval * (チャンネル数) * 32の倍数で無ければなりません。
この(チャンネル数)とは、NNS_SndStrmAllocChannel関数で確保したチャンネル数を指します。
ストリームチャンネルのタイマー値timerは、ストリームの再生速度を制御するパラメータです。
値の単位は、1サンプル再生するクロック数です。1秒あたりのクロック数は、
NNS_SND_STRM_TIMER_CLOCKとして定義されています。
例えば、サンプリングレートsampleRateで再生するためには、
NNS_SND_STRM_TIMER_CLOCK / sampleRateをタイマー値として指定します。
コールバックインターバルintervalは、ストリームバッファ全体を再生する間に、
何回コールバック関数が呼びだされるのかを指定します。
例えば、2を指定した場合、バッファの半分を再生中に、残り半分に波形データを書き込むようにします。
コールバック関数callbackは、波形データの補充が必要になったときに呼びだされる関数です。
コールバック関数のユーザー引数argは、
コールバック関数callbackの引数にそのまま渡されます。
コールバック関数については、
NNSSndStrmCallbackの説明を参照してください。
NNS_SndStrmAllocChannel, NNS_SndStrmStart, NNSSndStrmCallback
2004/11/26 NNSSndStrmCallbackの説明を分離
2004/08/10 初版