# NNS_SndStrmAllocChannel

## 構文

      #include <nnsys/snd.h>

      BOOL NNS_SndStrmAllocChannel(
              NNSSndStrm* stream,
              int numChannels,
              const u8 chNoList[] );

## 引数

`stream` | ストリーム構造体のポインタです。
`numChannels` | 確保するチャンネル数です。値の範囲は、1〜16です。
`chNoList[]` | チャンネル番号の配列です。

## 返り値

チャンネルを確保できたかどうかを返します。

## 説明

ストリーム再生用のチャンネルを確保します。 ストリームを再生する前に、あらかじめこの関数でチャンネルを確保しておく必要があります。

チャンネル番号の配列`chNoList[]`には、 チャンネル数`numChannels`分の要素が含まれている必要があります。 各要素には、チャンネル番号を指定します。 チャンネル番号は、0〜15の間で指定できますが、下記のように、番号に応じてチャンネルの機能が異なっていますので、他の用途との協調を考えて指定する必要があります。例えば、シーケンス再生でノイズを使う場合は、チャンネル番号14または15は、あまり使わない方が良いでしょう。

表 . チャンネルの番号別機能

チャンネル番号 | 機能
--- | ---
0, 2 | PCM/ADPCMを再生できます。このチャンネルの出力をサウンドキャプチャの入力とすることもできます。
1, 3 | PCM/ADPCMを再生できます。サウンドキャプチャとタイマーを共用しているため、サウンドキャプチャを使うときは、サウンドキャプチャの出力チャンネルとしてしか使えません。
4 〜 7 | PCM/ADPCMを再生できます。シーケンス再生で波形データを再生するときには優先的に使っています。
8 〜 13 | PCM/ADPCMまたは、PSG矩形波を再生できます。
14, 15 | PCM/ADPCMまたは、ホワイトノイズを再生できます。

確保したチャンネルの解放には、 `NNS_SndStrmFreeChannel`関数を呼びだします。

## 参照

NNS_SndStrmFreeChannel

## 履歴

2004/08/10 初版