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ビットの時と同じ遅延時間を得たい場合、リバーブバッファは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

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

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

注意

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

参照

なし。

履歴

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