# NNS_SndArcStrmStartEx

## 構文

      #include <nnsys/snd.h>

      BOOL NNS_SndArcStrmStartEx(
              NNSSndStrmHandle* handle,
              int playerNo,
              int playerPrio,
              int strmNo,
              u32 offset );

## 引数

`handle` | ストリームハンドルのポインタです。
`playerNo` | プレイヤー番号です。
`playerPrio` | プレイヤープライオリティです。値の範囲は0〜127で、大きいほど優先度が高くなります。
`strmNo` | ストリーム番号です。
`offset` | 開始オフセット位置です。msec単位です。

## 返り値

再生に成功した場合は、TRUEを返します。失敗すると、FALSEが返ります。

## 説明

プレイヤー番号とプレイヤープライオリティを指定して、ストリームを再生します。

あらかじめ、 `NNS_SndArcStrmInit`関数で、 サウンドアーカイブストリームライブラリが初期化されている必要があります。

ストリームハンドル`handle`は、あらかじめ、`NNS_SndStrmHandleInit`関数で、１度だけ初期化しておかなければなりません。 この関数を呼びだすと、ストリームハンドルに既に結びつけられていたストリームは切り離されます（停止するわけではありません）。 再生に成功すると、ストリームハンドルにストリームが結びつけられます。

プレイヤー番号`playerNo`と、 プレイヤープライオリティ`playerPrio`に、 -1を指定すると、サウンドデータで設定したパラメータが使用されます。

開始オフセット位置`offset`に、0以外の値を入れると、ストリームデータの途中から再生することができます。

ストリーム再生の前に、まずストリームバッファに始めのデータをロードする必要があるため、 実際に音が鳴り始めるのは、数フレーム遅れます。 即座に再生を開始したい場合には、前もってストリームバッファへのデータのロードを済ませておく必要があります。 そのためには、`NNS_SndArcStrmPrepare`関数を使います。

ストリーム再生に使用するチャンネルは、この関数内で確保されます。確保するチャンネルがシーケンス再生で使用中だった場合、 発音中の音は強制的に止められます。 チャンネル確保のタイミングを制御したい場合は、前もって `NNS_SndArcStrmAllocChannel`関数を呼びだします。

ストリームデータがステレオだった場合、チャンネル0は左から、チャンネル1は右から出力されます。 この設定は、`NNS_SndArcStrmSetChannelPan`関数で変更することができます。

再生の失敗には、以下の原因が考えられます。

- ストリーム番号が無効
- 既に再生中のストリームよりも優先度が低い
- ストリームプレイヤーが使用するチャンネルが別用途で使用中

## 参照

NNS_SndArcStrmInit, NNS_SndStrmHandleInit, NNS_SndArcStrmPrepare, NNS_SndArcStrmAllocChannel, NNS_SndArcStrmSetChannelPan

## 履歴

2004/11/26 NNS_SndArcStrmStart関数の説明から分離