# TWL サウンド拡張機能 (overview)

TWL では、NitroSDK の SND ライブラリの機能に加え、いくつかの拡張機能を備えた SNDEX ライブラリを使うことができます。

## CODEC モード

TWL には、マイク入力やスピーカー出力、タッチスクリーンへの入力などを制御する CODEC というハードウェアが搭載されています。
この CODEC を扱う上で、TWL では NITRO との互換性のために以下の2つのモードを用意しています。
CODEC の詳細についてはプログラミングマニュアルを参照して下さい。

CODEC-DS | NITRO 本体のサウンド回路の環境と同等の環境です。 NTR ROM が TWL上で動作する場合はこのモードで起動します。
CODEC-TWL | TWL 本体固有のサウンド回路を使用する環境です。TWL ROM は基本的にこのモードで起動します。 ROM スペックファイルでどちらの CODEC モードを使うか指定することができます。

CODEC モードをランタイムに切り替えることはできません。

TWL 本体のカメラ機能を使う場合、静止画撮影時や動画撮影開始・停止時に強制的に特定の音声を鳴らす必要があります。 音声強制出力機能は CODEC が CODEC-TWL モードで動作する場合にのみ使用できますので、 カメラ操作用ライブラリは CODEC が CODEC-TWL モードの場合にのみ使用可能である点に注意して下さい。

## 拡張機能

TWL では、以下のようなサウンド関連機能が追加されました。それぞれの詳細は、各関数の説明をご覧下さい。

- ヘッドホンの接続状態の取得
- 消音状態の取得、設定変更
- I2S 周波数の取得、変更
- 音声出力のDSP合成比の取得、変更
- スピーカー音量の取得、変更
- マイク入力データ、スピーカー出力データへの IIR フィルタの設定
- TWL 本体の音量スイッチ押下によるコールバック設定

## 注意

サウンド拡張機能に関する各処理は排他制御により同時には行えません。
既に別の SNDEX 関数が処理を行っていたときには、`SNDEX_RESULT_EXCLUSIVE` を返して終了します。

シャッター音を再生する `DSP_PlayShutterSound()` を実行すると、内部で自動的にサウンド拡張機能を用いた処理が行われます。
そのため、シャッター音再生が終了するまでの間、SNDEX 関数は `SNDEX_RESULT_EXCLUSIVE` を返して何も行わずに終了します。
ただし、`SNDEX_SetVolumeSwitchCallback()` は関数設定のみ行うために成功します。
シャッター音再生処理の終了は、`DSP_IsShutterSoundPlaying()` により判定可能です。

処理の完了はPXI受信割込みにより検知しますので、PXI受信割込みを禁止していると SNDEX 関数内部でブロックし続けることに注意して下さい（非同期版の場合は、コールバックが返らなくなります）。

## 参照

SNDEX 機能一覧

## 履歴

2009/01/22 開発には関係しない「音声強制出力設定の変更」に関する記述の削除
2008/11/07 「注意」にシャッター音再生処理時の排他制御について追記
2008/10/27 「音声強制出力設定の変更」機能の制限について追記
2008/09/30 CODEC モードに伴うカメラの使用制限について追記
2008/09/12 初版