#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ビットの時と同じ遅延時間を得たい場合、リバーブバッファは2倍必要になります。
表 . 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 初版