#include <nnsys/snd.h>BOOL NNS_SndArcPlayerStartSeq( NNSSndHandle* handle, int seqNo );BOOL NNS_SndArcPlayerStartSeqEx( NNSSndHandle* handle, int playerNo, int bankNo, int playerPrio, int seqNo );
handle |
サウンドハンドルのポインタです。 |
seqNo |
シーケンス番号です。 |
playerNo |
プレイヤー番号です。 |
bankNo |
バンク番号です。 |
playerPrio |
プレイヤープライオリティです。値の範囲は0〜127で、大きいほど優先度が高くなります。 |
シーケンスを再生します。
NNS_SndArcPlayerStartSeq関数では、プレイヤー番号などのパラメータは、サウンドデータでの指定に基づいて設定されます。 NNS_SndArcPlayerStartSeqEx関数を使うと、プレイヤー番号やバンク番号、プレイヤープライオリティをプログラム側で指定できます。ただし、 playerNo、bankNo、playerPrioの引数のうち、-1を指定したものは、サウンドデータで設定したパラメータが使用されます。
あらかじめ、 NNS_SndArcInit関数または、 NNS_SndArcInitOnMemory関数で サウンドアーカイブが初期化されている必要があります。
サウンドハンドルhandleは、あらかじめ、NNS_SndHandleInit関数で、1度だけ初期化しておかなければなりません。
この関数を呼びだすと、サウンドハンドルに既に結びつけられていたシーケンスは切り離されます(停止するわけではありません)。
再生に成功すると、サウンドハンドルにシーケンスが結びつけられます。
関数内では、必要なサウンドデータがメモリ上にあるかどうかを確認するために、 NNS_SndArcGetFileAddress関数を呼びだします。 データがメモリ上にない場合、プレイヤーヒープへのロードを試みます。 プレイヤーヒープが無いまたは、十分なサイズで無い場合には、シーケンスの再生に失敗します。
後でNNS_SndPlayerStopSeqBySeqNo関数を使って、 シーケンス番号を指定してシーケンスを停止できるように、 関数内でNNS_SndPlayerSetSeqNo関数を呼びだしています。
サウンドデータで設定されている、発音プライオリティや音量の値を再設定したい場合は、シーケンス開始直後に、 NNS_SndPlayerSetChannelPriority関数や、 NNS_SndPlayerSetInitialVolume関数を呼びだします。
再生の失敗には、以下の原因が考えられます。
NNS_SndArcInit, NNS_SndArcInitOnMemory, NNS_SndHandleInit, NNS_SndArcGetFileAddress, NNS_SndPlayerStopSeqBySeqNo, NNS_SndPlayerSetSeqNo, NNS_SndPlayerSetChannelPriority, NNS_SndPlayerSetInitialVolume
2004/11/30 返り値の型が間違っていたのを修正
2004/06/01 NNS_SndArcPlayerStartSeqWithPlayerNoを拡張して、
NNS_SndArcPlayerStartSeqExに変更。
プレイヤーヒープに関する説明を追加。
2004/04/19 NNS_SndArcPlayerStartSeq, NNS_SndArcPlayerStartSeqWithPlayerNoのマニュアルを統合
2004/04/01 初版