NNS_SndArcStrmPrepareEx2

構文

#include <nnsys/snd.h>
BOOL NNS_SndArcStrmPrepareEx2(
        NNSSndStrmHandle* handle,
        int playerNo,
        int playerPrio,
        int strmNo,
        u32 offset,
        NNSSndStrmCallback strmCallback,
        void* strmCallbackArg,
        NNSSndArcStrmCallback sndArcStrmCallback,
        void* sndArcStrmCallbackArg );

引数

handle ストリームハンドルのポインタです。
playerNo プレイヤー番号です。
playerPrio プレイヤープライオリティです。値の範囲は0〜127で、大きいほど優先度が高くなります。
strmNo ストリーム番号です。
offset 開始オフセット位置です。msec単位です。
strmCallback ストリームコールバック関数のポインタです。
strmCallbackArg ストリームコールバック関数のユーザー引数です。
sndArcStrmCallback サウンドアーカイブストリームコールバック関数のポインタです。
sndArcStrmCallbackArg サウンドアーカイブストリームコールバック関数のユーザー引数です。

返り値

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

説明

コールバック関数を登録して、ストリームの準備を行います。

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

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

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

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

ストリームコールバック関数strmCallbackは、再生中に定期的に呼びだされます。 このコールバック関数内で、再生波形データを加工することができます。 ストリームコールバック関数のユーザー引数strmCallbackArgは、 ストリームコールバック関数strmCallbackの引数にそのまま渡されます。 ストリームコールバック関数の登録が不要の場合は、NULLを入れます。 ストリームコールバック関数については、NNSSndStrmCallbackの説明を 参照してください。

サウンドアーカイブストリームコールバック関数sndArcStrmCallbackは、 特定のタイミングで呼びだされます。 複数のストリームデータをリアルタイムにつなげて再生することなどができます。 サウンドアーカイブストリームコールバック関数のユーザー引数sndArcStrmCallbackArgは、 サウンドアーカイブストリームコールバック関数sndArcStrmCallbackの引数にそのまま渡されます。 サウンドアーカイブストリームコールバック関数の登録が不要の場合は、NULLを入れます。 サウンドアーカイブストリームコールバック関数については、 NNSSndArcStrmCallbackの説明を 参照してください。

準備が完了したかどうかは、NNS_SndArcStrmIsPrepared関数で 調べることができます。 準備完了したストリームを再生するためには、 NNS_SndArcStrmStartPrepared関数を呼びだします。

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

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

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

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

参照

NNS_SndArcStrmInit, NNS_SndStrmHandleInit, NNSSndStrmCallback, NNSSndArcStrmCallback, NNS_SndArcStrmIsPrepared, NNS_SndArcStrmStartPrepared, NNS_SndArcStrmAllocChannel, NNS_SndArcStrmSetChannelPan

履歴

2004/11/26 初版