# SND_StartSeq

## 構文

      #include <nitro/snd.h>

      void SND_StartSeq(
              int playerNo,
              const void* base,
              u32 offset,
              const SNDBankData* bank );

## 引数

`playerNo` | プレイヤー番号です。値の範囲は、0〜15です。
`base` | シーケンスデータのベースアドレスです。
`offset` | シーケンスデータの開始位置オフセットです。
`bank` | バンクデータのポインタです。

## 返り値

なし。

## 説明

シーケンスを再生します。

プレイヤー番号`playerNo`のプレイヤーでシーケンスを再生します。 そのプレイヤーで既に再生中のシーケンスは、強制的に止められます。

シーケンスデータは、ベースアドレス`base`からの オフセット`offset`の位置から処理されます。

バンク`bank`には、シーケンスが発音のために使用するバンクを指定します。 バンク`bank`には、あらかじめ `SND_AssignWaveArc()` で、 波形アーカイブを結合しておく必要があります。

シーケンスの再生開始と同タイミングで、ボリュームなどのパラメータを変更する必要がある場合は、 この関数の代わりに、`SND_PrepareSeq()` を使います。 パラメータの変更を行った後に、`SND_StartPreparedSeq()` を 呼びだすことで、それまでに行ったパラメータの変更が、シーケンスの再生開始と同タイミングで反映されることが保証されます。

### 注意

この関数は、ARM7コマンド予約関数です。 この関数を呼びだした後、 `SND_FlushCommand()` で コマンドを発行して始めて、処理が行われます。

また、処理の完了と同期を取る必要がある場合は、 まず、この関数呼び出しの直後に、 `SND_GetCurrentCommandTag()` で、コマンドタグを取得しておきます。 そしてコマンド発行後に、取得したコマンドタグを使って `SND_IsFinishedCommandTag()` または、 `SND_WaitForCommandProc()` を呼びだして、 処理の完了をチェックしたり、待ったりします。

## 参照

SND_AssignWaveArc, SND_PrepareSeq, SND_StartPreparedSeq, SND_FlushCommand, SND_GetCurrentCommandTag, SND_IsFinishedCommandTag, SND_WaitForCommandProc

## 履歴

2005/04/14 `SND_PrepareSeq()`に関する説明追加
2005/02/17 ARM7コマンド処理の注意書き追加
2004/07/20 バンクと波形アーカイブの結合に関する説明追加
2004/07/01 初版