# NNS_SndCaptureStartOutputEffect

## 構文

      #include <nnsys/snd.h>

      BOOL NNS_SndCaptureStartOutputEffect(
              void* buffer_p,
              u32 bufSize,
              NNSSndCaptureOutputEffectType type );

## 引数

`buffer_p` | エフェクトバッファのポインタです。32バイトアライメントされている必要があります。
`bufSize` | エフェクトバッファのサイズです。128の倍数で無ければなりません。
`type` | 出力エフェクト処理のタイプです。

## 返り値

出力エフェクト処理の開始に成功したかどうかを返します。

## 説明

出力エフェクト処理を開始します。

キャプチャー機能を使ってミキサー出力をキャプチャし、コールバック関数でエフェクト処理を行った後、 最終音声として出力します。 エフェクト動作中は、16チャンネル中の2チャンネル（チャンネル1及びチャンネル3）を消費します。 チャンネル1またはチャンネル3が、シーケンスによって使用中の場合、発音中の音は強制的に停止させられます。

エフェクトを使うためには、エフェクトバッファが必要になります。 先頭アドレス`buffer_p`は、32バイトアライメントされている必要があります。 また、バッファサイズ`bufSize`は、128の倍数で無ければなりません。 エフェクトバッファが小さいほど頻繁にエフェクト処理が実行され、 逆にエフェクトバッファが大きいほど、１回あたりのエフェクト処理の時間が長くかかります。 エフェクトバッファが４ＫＢの時、１ビデオフレームにほぼ１回の割合で、エフェクト処理が行われるようになります。

出力エフェクトのタイプ`type`は、下記の値から選択します。

表 . NNSSndCaptureOutputEffectType

ラベル | 説明
--- | ---
NNS_SND_CAPTURE_OUTPUT_EFFECT_NORMAL | 何も処理しません（通常のステレオモード）
NNS_SND_CAPTURE_OUTPUT_EFFECT_MONO | モノラルモード
NNS_SND_CAPTURE_OUTPUT_EFFECT_SURROUND | サラウンドモード
NNS_SND_CAPTURE_OUTPUT_EFFECT_HEADPHONE | ヘッドフォンモード

サラウンドモードは、DSステレオスピーカーから再生したときに、 スピーカー位置より広がって感じられるエフェクトをかけます。 ヘッドフォンモードは、ヘッドフォンで聴いているときに 耳の負担を軽減するエフェクトをかけます。

`NNS_SndCaptureCreateThread`関数で キャプチャースレッドを起動しているときは、エフェクト処理はキャプチャースレッドで実行されます。 キャプチャースレッドを起動していない場合は、IRQハンドラで実行されます。

出力エフェクト開始の失敗には、以下の原因が考えられます。

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

### 注意

長期間の割り込み禁止など、エフェクト処理が定期的に実行できなくなると、 正常な音声が出力されなくなります。

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

サラウンドモードでは、その他のモードより、音が割れて聞こえる場合があります。

## 参照

NNS_SndCaptureCreateThread

## 履歴

2005/06/27 関数失敗の原因を追加
2004/11/19 サラウンドモード時の音割れに関する注意書き追加
2004/10/04 初版