# NNS_SndCaptureStartReverb

## 構文

      #include <nnsys/snd.h>

      BOOL NNS_SndCaptureStartReverb(
              void* buffer_p,
              u32 bufSize,
              NNSSndCaptureFormat format,
              int sampleRate,
              int volume );

## 引数

`buffer_p` | リバーブバッファのポインタです。32バイトアライメントされている必要があります。
`bufSize` | リバーブバッファのサイズです。64の倍数でなければなりません。最大値は0x7ffc0です。
`format` | サンプルデータのフォーマットです。
`sampleRate` | サンプリングレートです。
`volume` | リバーブ成分のボリュームです。0〜63の範囲です。

## 返り値

リバーブの開始に成功したかどうかを返します。

## 説明

リバーブを開始します。

キャプチャー機能を使ってミキサー出力をキャプチャし、時間を遅らせて再度ミキサーへ出力することで、リバーブを実現しています。 リバーブ中は、16チャンネル中の2チャンネル（チャンネル1及びチャンネル3）を消費します。 チャンネル1またはチャンネル3が、シーケンスによって使用中の場合、発音中の音は強制的に停止させられます。

リバーブを使うためには、リバーブバッファが必要になります。 リバーブバッファが大きいほど、遅延時間が長くなり、深いリバーブがかかります。 先頭アドレス`buffer_p`は、32バイトアライメントされている必要があります。 また、バッファサイズ`bufSize`は、64の倍数で無ければなりません。

サンプルデータのフォーマット`format`は、下記の値から選択します。 16ビットの方が、音質は良くなりますが、8ビットの時と同じ遅延時間を得たい場合、リバーブバッファは２倍必要になります。

表 . NNSSndCaptureFormat

ラベル | 説明
--- | ---
NNS_SND_CAPTURE_FORMAT_PCM8 | 8ビットPCM
NNS_SND_CAPTURE_FORMAT_PCM16 | 16ビットPCM

サンプリングレート`sampleRate`は、 値が大きいほどリバーブ成分の音質は良くなりますが、その分遅延時間は短くなります。 遅延時間を変えたくない場合は、リバーブバッファサイズを大きくする必要があります。

リバーブ成分のボリューム`volume`は、 最大の63の時、ミキサー出力の約半分の音量がフィードバックされます。

リバーブの遅延時間を求める式は、下記のようになります。ただし、フォーマットが16ビットPCMの場合は、この半分の時間です。

    遅延時間[sec] = bufSize / sampleRate / 2

リバーブ開始の失敗には、以下の原因が考えられます。

- キャプチャがリバーブ以外の用途で使用中
- チャンネル１またはチャンネル３が、リバーブやシーケンスによる発音以外の用途で使用中

### 注意

音声を再生しながらこの関数を呼びだすと、再生される音が途切れます。

## 参照

なし。

## 履歴

2008/10/07 遅延時間計算式の誤り修正
2007/07/11 リバーブバッファサイズの制限に関する誤記修正
2005/01/06 TEGに関する記述削除
2004/07/01 format引数の型をSNDCaptureFormatからNNSSndCaptureFormatに変更
2004/04/01 初版