# SNDEX_SetDSPMixRateAsync

## 構文

  `#include <twl/snd.h>`

      SNDEXResult SNDEX_SetDSPMixRateAsync( u8 rate, SNDEXCallback callback, void* arg );

## 引数

rate | CPUとDSPの音声出力合成比を指定します。指定可能範囲は下記の通りです。
callback | 非同期処理完了の通知を受ける`SNDEXCallback型`コールバック関数を指定します。 NULLを指定しても非同期処理は行われますが、非同期処理の完了は検出できなくなります。
arg | callbackに指定した関数に渡す引数を指定します。

## 返り値

### 関数への返り値

SNDEX_RESULT_SUCCESS | 非同期処理が正常に開始された場合に返ります。非同期処理の結果はcallbackに登録した関数の引数として通知されます。
SNDEX_RESULT_ILLEGAL_STATE | NITROプラットフォーム上で当関数を呼び出した場合に返ります。
SNDEX_RESULT_INVALID_PARAM | 指定可能範囲外の値をrateに指定した場合に返ります。
SNDEX_RESULT_BEFORE_INIT | サウンド拡張機能を`SNDEX_Init()`により初期化していない場合に返ります。
SNDEX_RESULT_EXCLUSIVE | 他のサウンド拡張機能に関する処理を実行中の場合に返ります。 サウンド拡張機能に関する各処理は排他制御により同時には行えませんのでご注意下さい。 SNDEX ライブラリの概要にある通り、シャッター音再生処理中もこのエラーを返します。
SNDEX_RESULT_PXI_SEND_ERROR | ARM7へのPXIコマンド発行に失敗した場合に返ります。 ARM7へのPXI送信キューが飽和した場合や、ハードウェアがエラーを検知した場合に発生するエラーですので、リトライすると状況が改善する可能性があります。

### 非同期処理の結果

SNDEX_RESULT_SUCCESS | 一連の処理が正常に完了した場合に通知されます。
SNDEX_RESULT_EXCLUSIVE | ARM7内での排他制御エラーが発生した場合に通知されます。 ARM7内での処理進捗状況に依存したエラーですので、リトライすると状況が改善する可能性があります。
SNDEX_RESULT_FATAL_ERROR | 通常起こり得ないエラーです。 ライブラリの状態管理を無視して直接不正なPXIコマンドを発行した場合、 ARM7コンポーネントとサウンド拡張機能ライブラリのバージョンが異なる場合、 メモリ破壊等によりライブラリの状態管理が異常な状態に陥った場合等に発生する可能性があります。 ランタイムに復旧する手段はありません。

## 説明

CPUとDSPの音声出力合成比を非同期的に変更します。合成比の初期値は8です。

0 | CPU 0%, DSP 100%
1 | CPU 12.5%, DSP 87.5%
2 | CPU 25%, DSP 75%
3 | CPU 37.5%, DSP 62.5%
4 | CPU 50%, DSP 50%
5 | CPU 62.5%, DSP 37.5%
6 | CPU 75%, DSP 25%
7 | CPU 87.5%, DSP 12.5%
8 | CPU 100%, DSP 0%

関数への返り値がSNDEX_RESULT_SUCCESSでない場合には、非同期処理は行われず、コールバックも発生しません。 また、非同期処理の完了はPXI受信割込みによって通知されるため、PXI受信割込みを禁止しているとコールバックが発生しないことに注意して下さい。

## 参照

`SNDEX_SetDSPMixRate, SNDEX_GetDSPMixRateAsync`

## 履歴

2008/11/07 シャッター音再生処理時に SNDEX_RESULT_EXCLUSIVE が返ることを追記
2008/11/06 「返り値」非同期処理の結果の誤記修正(SNDEX_RESULT_EXCLUSIVE)
2008/02/22 合成比の初期値を訂正
2008/02/15 初版