1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     snd_Api.h
4 
5   Copyright (C)2009 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 34229 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_SND_API_H_
17 #define NN_SND_API_H_
18 
19 #include <nn/Result.h>
20 #include <nn/snd/CTR/Common/snd_Types.h>
21 #include <nn/snd/CTR/MPCore/snd_Voice.h>
22 #include <nn/snd/CTR/MPCore/snd_OutputCapture.h>
23 #include <nn/snd/CTR/MPCore/snd_FxDelay.h>
24 #include <nn/snd/CTR/MPCore/snd_FxReverb.h>
25 
26 #ifdef __cplusplus
27 
28 /*! @file
29     @brief      サウンド(SND)に関する API の宣言
30 */
31 
32 namespace nn  { namespace snd { namespace CTR {
33 
34 /*!
35     @brief      1 サウンドフレームあたりの DSP のサイクル数の最大値です。
36 */
37 static const s32 NN_SND_DSP_MAXIMUM_CYCLES = 622535;
38 
39 
40 /*!
41   @name     Initialize/Finalize
42 
43   @{
44 */
45 /*!
46     @brief      サウンドライブラリの初期化処理を行います。
47 
48                 @ref nn::dsp::Initialize() によりDSP プロセスとのセッション確立後に使用できます。
49 
50     @return     処理の結果が返ってきます。<BR>
51                   LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS・・・成功しました。
52 */
53 nn::Result Initialize();
54 
55 /*!
56     @brief      サウンドライブラリの終了処理を行います。
57 
58     @return     処理の結果が返ってきます。<BR>
59                   LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS・・・成功しました。
60 */
61 nn::Result Finalize();
62 
63 /*!
64     @brief      バッファ情報構造体の初期化を行います。
65 
66                 @ref nn::snd::Voice::AppendWaveBuffer を呼び出す前に、本関数で構造体を初期化して下さい。
67 
68     @param[in]  pWaveBuffer   バッファ情報構造体へのポインタ
69     @return     なし。
70 */
71 void InitializeWaveBuffer(WaveBuffer * pWaveBuffer);
72 
73 /*! :private
74     @brief      サウンドスレッドを作成します。
75  */
76 nn::Result StartSoundThread(
77     void (*callback)(uptr),
78     uptr arg,
79     uptr stackBuffer,
80     size_t stackSize,
81     s32 prio,
82     s32 coreNo = NN_OS_CORE_NO_USE_PROCESS_VALUE
83 );
84 
85 /*! :private
86     @brief      ユーザーサウンドスレッドを作成します。
87  */
88 nn::Result StartUserSoundThread(uptr stackBuffer, size_t stackSize, s32 prio);
89 
90 /*! :private
91     @brief      サウンドスレッドを作成します。
92  */
93 nn::Result StartSoundThread(
94     const ThreadParameter* mainThreadParam,
95     void                   (*mainThreadCallback)(uptr),
96     uptr                   mainThreadArg,
97     const ThreadParameter* userThreadParam,
98     void                   (*userThreadCallback)(uptr),
99     uptr                   userThreadArg,
100     s32                    coreNo
101 );
102 
103 /*! :private
104     @brief      StartSoundThread で作成したサウンドスレッドを終了します。
105  */
106 void FinalizeSoundThread();
107 
108 /*! :private
109     @brief      StartUserSoundThread で作成したユーザーサウンドスレッドを終了します。
110  */
FinalizeUserSoundThread()111 inline void FinalizeUserSoundThread() {}
112 
113 /*! :private
114     @brief      サウンドフレームの処理負荷を有効 / 無効にします。
115 
116                 デフォルトは無効です。
117 
118     @param[in]  enable      true なら有効、false なら無効
119  */
120 void EnableSoundThreadTickCounter(bool enable);
121 
122 /*! :private
123     @brief      StartSoundThread で作成したサウンドスレッドの、1 サウンドフレームあたりの処理負荷を取得します。
124 
125                 コールバック内で呼び出した場合は、ひとつ前のサウンドフレームの処理負荷が得られます。
126  */
127 nn::os::Tick GetSoundThreadTick();
128 
129 /*! :private
130     @brief      StartSoundThread で作ったサウンドスレッドとの排他制御のためのロックを行います。
131  */
132 void LockSoundThread();
133 
134 /*! :private
135     @brief      StartSoundThread で作ったサウンドスレッドとの排他制御のためのロックを解除します。
136  */
137 void UnlockSoundThread();
138 
139 /*! :private
140     @brief      自動 UpdateCommand の設定を行います。
141     @param[in]  autoUpdateCommand   true なら自動アップデート
142  */
143 void SetAutoUpdateCommand(bool autoUpdateCommand);
144 
145 // TORIAEZU: CTR-SDK 0.14 を NintendoWare 1.1.1 と組み合わせて使用するための暫定措置
EnableAuxBusProcessingOnCore1(bool)146 inline void EnableAuxBusProcessingOnCore1(bool /*enable*/) {}
EnableSoundThreadCallbackOnCore1(bool)147 inline void EnableSoundThreadCallbackOnCore1(bool /*enable*/) {}
EnableVoiceDropCallbackOnCore1(bool)148 inline void EnableVoiceDropCallbackOnCore1(bool /*enable*/) {}
149 
150 /*!
151   @}
152 */
153 
154 /*!
155   @name     キャッシュ操作
156 
157   @{
158 */
159 /*!
160     @brief      指定された範囲のデータをキャッシュからメモリに書き戻し、キャッシュを無効にします。
161 
162                 動作は @ref nn::dsp::CTR::FlushDataCache と同じです。
163 
164     @param[in]  addr          メモリアドレス
165     @param[in]  size          メモリサイズ
166     @return     処理の結果が返ります。<BR>
167                 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS・・・成功しました。<BR>
168                 LEVEL_STATUS:SUMMARY_INVALID_STATE:MODULE_NN_DSP:DESCRIPTION_NOT_INITIALIZED・・・DSP ライブラリが初期化されていません。<BR>
169 */
170 nn::Result FlushDataCache( uptr addr, size_t size );
171 
172 /*! :private
173     @brief      指定された範囲のキャッシュを無効にします。
174 
175                 動作は @ref nn::dsp::CTR::InvalidateDataCache と同じです。
176 
177     @param[in]  addr          メモリアドレス
178     @param[in]  size          メモリサイズ
179       @return   処理の結果が返ります。<BR>
180                 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS・・・成功しました。<BR>
181                 LEVEL_STATUS:SUMMARY_INVALID_STATE:MODULE_NN_DSP:DESCRIPTION_NOT_INITIALIZED・・・DSP ライブラリが初期化されていません。<BR>
182 */
183 nn::Result InvalidateDataCache( uptr addr, size_t size );
184 
185 /*!
186   @}
187 */
188 
189 /*!
190   @name     同期処理
191 
192   @{
193 */
194 
195 /*!
196     @brief      DSP で処理を行った結果を受信します。
197 
198     @return     なし。
199 */
200 void WaitForDspSync();
201 
202 /*! :private
203     @brief      DSP で処理を行った結果を受信し、受信に要した処理時間を取得します。
204 
205                 サウンドフレームイベントが発生するまで待機します。
206                 シグナルが通知された後、DSP からのデータを受信します。
207 
208                 本関数は snd ライブラリが内部に持つ @ref nn::os::Event
209                 オブジェクトによりイベント待機を行います。
210 
211     @param[out] pTick         内部の Wait 以外の処理に要したサイクル数
212     @return     なし。
213 */
214 void WaitForDspSync(nn::os::Tick* pTick);
215 
216 /*!
217     @brief      設定されたパラメータを DSP に反映します。
218 
219     @return     なし。
220 */
221 void SendParameterToDsp();
222 
223 /*! :private
224     @brief      必要であれば内部で UpdateCommand を実行し、設定されたパラメータを DSP に反映します。
225     @param[in]  autoUpdateCommand   true なら内部で UpdateCommand を実行します。
226  */
227 void SendParameterToDsp(bool autoUpdateCommand);
228 
229 /*! :private
230     @brief      発行したコマンドを DSP へ送信します。
231  */
232 void UpdateCommand();
233 
234 /*!
235   @}
236 */
237 
238 /*!
239   @brief        サンプルの長さを取得します。
240 
241   @param[in]    size          サイズ(バイト単位)
242   @param[in]    format        形式
243   @param[in]    channelCount  チャンネル数
244   @return       サンプルの長さを返します。
245 */
246 s32 GetSampleLength( s32 size, SampleFormat format, s32 channelCount ) ;
247 
248 /*!
249     @name       マスター操作、Aux バス操作
250     @{
251  */
252 /*!
253     @brief      マスターボリュームを設定します。
254 
255     @param[in]  volume        マスターボリューム(1.0 が等倍)
256     @return     なし。
257 */
258 void SetMasterVolume ( f32 volume );
259 
260 /*!
261     @brief      Aux バスボリュームを設定します。
262 
263                 等倍は 1.0 です。
264 
265                 デフォルト値は 1.0 です。
266 
267     @param[in]  busId         バスの ID
268     @param[in]  volume        エフェクト 0 バスボリューム(1.0 が等倍)
269     @return     なし。
270 */
271 void SetAuxReturnVolume ( AuxBusId busId, f32 volume );
272 
273 /*!
274     @brief      Aux バスボリュームを取得します。
275 
276                 等倍は 1.0 です。
277 
278                 デフォルト値は 1.0 です。
279 
280     @param[in]  busId         バスの ID
281     @return     バスボリューム。
282 */
283 f32 GetAuxReturnVolume ( AuxBusId busId ) ;
284 
285 /*!
286     @brief      Aux バスのコールバック関数を設定します。
287 
288     @param[in]  busId         バスの ID
289     @param[in]  callback      コールバック関数
290     @param[in]  userData      ユーザ定義データ
291     @return     なし。
292 */
293 void RegisterAuxCallback( AuxBusId busId, AuxCallback callback, uptr userData );
294 
295 /*!
296     @brief      Aux バスのコールバック関数を取得します。
297 
298     @param[in]  busId         バスの ID
299     @param[out] pCallback     コールバック関数の格納先
300     @param[out] pUserData     ユーザ定義データの格納先
301     @return     なし。
302 */
303 void GetAuxCallback( AuxBusId busId, AuxCallback* pCallback, uptr* pUserData );
304 
305 /*!
306     @brief      Aux バスのコールバック関数を解除します。
307 
308     @param[in]  busId         バスの ID
309     @return     なし。
310 */
311 void ClearAuxCallback( AuxBusId busId );
312 
313 /*!
314     @brief      Aux バスのフロントバイパスを設定します。
315     @param[in]  busId         バスの ID
316     @param[in]  flag          フロントバイパスの有効 / 無効フラグ
317     @return     設定に成功すれば true を、失敗すれば false を返します。
318  */
319 bool SetAuxFrontBypass(AuxBusId busId, bool flag);
320 /*!
321     @}
322  */
323 
324 /*!
325   @name     3D サラウンド
326   @{
327  */
328 /*!
329     @brief      サウンド出力モードを設定します。
330 
331     @param[in]  mode          サウンド出力モード
332     @return     設定に成功すれば true を、失敗すれば false を返します。
333  */
334 bool SetSoundOutputMode(OutputMode mode);
335 
336 /*!
337     @brief      サウンド出力モードを取得します。
338 
339     @return     サウンド出力モード
340  */
341 OutputMode GetSoundOutputMode();
342 
343 /*!
344   @brief        クリッピングモードを設定します。
345   @param[in]    mode          モード
346   @return       設定に成功すれば true を、失敗すれば false を返します。
347 */
348 bool SetClippingMode(ClippingMode mode);
349 
350 /*!
351   @brief        クリッピングモードを取得します。
352   @return       モード
353 */
354 ClippingMode GetClippingMode();
355 
356 /*! :private
357     @brief      ミックス時のリア成分への重みを設定します。サラウンドモードでは無視されます。
358 
359     @param[in]  depth         重み (0 以上 1 以下の値でなければなりません)
360     @return     設定に成功すれば true を、失敗すれば false を返します。
361  */
362 bool SetRearRatio(f32 depth);
363 
364 /*!
365     @brief      サラウンドデプスを設定します。
366 
367                 サラウンドデプスは、スピーカー出力時の 3D サラウンドの効果の大小を
368                 表すパラメータです。値が大きい程、効果が大きくなります。
369                 サラウンドデプスはヘッドフォン出力時の効果には影響しません。
370 
371                 デフォルト値は 1.0f です。
372 
373     @param[in]  depth         サラウンドデプス(0 &lt;= depth &lt;= 1.0f)
374     @return     設定に成功すれば true を、失敗すれば false を返します。
375  */
376 bool SetSurroundDepth(f32 depth);
377 
378 /*!
379     @brief      3D サラウンドの仮想スピーカー位置を設定します。
380 
381     @param[in]  pos           仮想スピーカー位置
382     @return     設定に成功すれば true を、失敗すれば false を返します。
383  */
384 bool SetSurroundSpeakerPosition(SurroundSpeakerPosition pos);
385 
386 /*! :private
387     @brief      3D サラウンド用空間フィルタを設定します。
388 
389     @param[in]  pSrc          フィルタ係数バッファアドレス
390     @param[in]  nCoeffs       フィルタのタップ数
391     @return     設定に成功すれば true を、失敗すれば false を返します。
392  */
393 bool SetSurroundSpacialFilter(s16* pSrc, s32 nCoeffs);
394 
395 /*! :private
396     @brief      3D サラウンド用方向フィルタを設定します。
397 
398     @param[in]  pSrc          フィルタ係数バッファアドレス
399     @param[in]  nCoeffs       フィルタのタップ数
400     @param[in]  mode          モード(NN_SND_DEBUG_3DS_SPEAKER / NN_SND_DEBUG_3DS_HEADPHONE のいずれか)
401     @return     設定に成功すれば true を、失敗すれば false を返します。
402  */
403 bool SetSurroundDirectionFilter(s16* pSrc, s32 nCoeffs, s32 mode);
404 
405 /*! :private
406     @brief      3D サラウンド用 IIR フィルタを設定します。
407 
408     @param[in]  pSrc          フィルタ係数バッファアドレス
409     @param[in]  nCoeffs       フィルタのタップ数
410     @param[in]  mode          モード(NN_SND_DEBUG_3DS_SPEAKER / NN_SND_DEBUG_3DS_HEADPHONE のいずれか)
411     @return     設定に成功すれば true を、失敗すれば false を返します。
412  */
413 bool SetSurroundIirFilterCoeffs(s32* pSrc, s32 nCoeffs, s32 mode);
414 
415 /*! :private
416     @brief      3D サラウンド用 IIR フィルタの On/Off を設定します。
417 
418     @param[in]  flag          true なら On, false なら Off
419     @return     設定に成功すれば true を、失敗すれば false を返します。
420  */
421 bool SetSurroundIirFilterFlag(bool flag);
422 
423 /*!
424   @}
425  */
426 
427 /*!
428     @brief      サウンドが使用できるDSP サイクル数を設定します。
429 
430                 初期状態ではNN_SND_DSP_MAXIMUM_CYCLES が設定されています。
431                 NN_SND_DSP_MAXIMUM_CYCLES 以上の値が入力された場合は
432                 NN_SND_DSP_MAXIMUM_CYCLES が設定されます。
433 
434     @param[in]  cycles サイクル数
435     @return     なし。
436 */
437 void SetMaximumDspCycles( s32 cycles );
438 
439 /*!
440     @brief      サウンドに割り当てているDSP サイクル数を取得します。
441 
442     @return     サイクル数を返します。
443 */
444 s32 GetMaximumDspCycles();
445 
446 /*!
447     @brief      最後のオーディオフレーム作成でDSP が費やしたサイクル数を取得します。
448 
449     @return     DSP で消費したサイクル数を返します。
450 */
451 s32 GetDspCycles();
452 
453 /*! :private
454     @brief      snd 処理を一時中断し、終了処理を行います。
455  */
456 void Sleep();
457 
458 /*! :private
459     @brief      一時中断した snd の処理を復元します。
460  */
461 void WakeUp();
462 
463 /*! :private
464     @brief      終了処理のための準備を行います。
465  */
466 void OrderToWaitForFinalize();
467 
468 /*!
469     @brief      ヘッドホンの挿入状態を取得します。
470     @return     挿入されている場合は true を返します。
471  */
472 bool GetHeadphoneStatus();
473 
474 /*!
475     @brief      ヘッドホンの挿入状態を更新し、取得します。
476     @return     挿入されている場合は true を返します。
477  */
478 bool UpdateHeadphoneStatus();
479 
480 /*! :private
481     @brief      蓋閉じ時に強制的にヘッドフォン出力にするかどうかを設定します。
482     @param[in]  forceout        true なら強制ヘッドフォン出力とします。
483     @return     処理の結果が返ります。
484  */
SetHeadphoneOutOnShellClose(bool forceout)485 inline Result SetHeadphoneOutOnShellClose(bool forceout)
486 {
487     return dsp::ForceHeadphoneOut(forceout);
488 }
489 
490 /*!
491     @name       DSP 最終出力取得
492     @{
493  */
494 /*!
495     @brief      Mix バスデータを指定のバッファにコピーします。
496     @param[out] pData               Mix バスデータの内容をコピーするバッファアドレス
497     @param[in]  nSamplesPerFrame    チャンネルあたりのサンプル数(通常は NN_SND_SAMPLES_PER_FRAME を指定します)
498     @return     データ取得に成功すれば true を、失敗すれば false を返します。
499  */
500 bool GetMixedBusData(s16* pData, s32 nSamplesPerFrame = NN_SND_SAMPLES_PER_FRAME);
501 /*!
502     @}
503  */
504 
505 /*!
506     @name       処理落ち検出
507     @{
508  */
509 /*!
510     @brief      処理落ちしたサウンドフレームの数を取得します。
511     @return     処理落ちしたサウンドフレームの数を返します。
512  */
513 s32 GetDroppedSoundFrameCount();
514 
515 /*!
516     @brief      処理落ちしたサウンドフレームの数を初期化します。
517  */
518 void ClearDroppedSoundFrameCount();
519 
520 /*!
521     @}
522  */
523 
524 /*!
525   @name     DSP-ADPCM 関連
526   @{
527  */
528 /*!
529   @brief        16bit PCM データを DSP-ADPCM フォーマットにエンコードします。
530 
531   @param[in]    pInput        入力バッファアドレス
532   @param[out]   pOutput       出力バッファアドレス(4 バイトアラインされている必要があります)
533   @param[in]    nSamples      入力サンプル数
534   @param[in]    sampleRate    サンプル周波数
535   @param[in]    loopStart     ループ開始サンプル位置(0 オリジン)
536   @param[in]    loopEnd       ループ終了サンプル位置(0 オリジン)
537   @param[out]   pInfo         ヘッダ構造体アドレス
538   @return       なし
539  */
540 s32 EncodeAdpcmData(s16* pInput, u8* pOutput, s32 nSamples, s32 sampleRate, s32 loopStart, s32 loopEnd, DspsndAdpcmHeader* pInfo);
541 
542 /*!
543   @brief        DSP-ADPCM データをデコードします。
544 
545   @param[in]    pInput        入力バッファアドレス
546   @param[out]   pOutput       出力バッファアドレス
547   @param[in]    param         ADPCM パラメータ
548   @param[in]    context       ADPCM コンテキスト
549   @param[in]    nSamples      入力サンプル数
550  */
551 void DecodeAdpcmData(u8* pInput, s16* pOutput, AdpcmParam& param, AdpcmContext& context, s32 nSamples);
552 
553 /*!
554   @brief        エンコード時に必要な出力バッファのサイズを返します。
555 
556   @param[in]    nSamples      入力サンプル数
557   @return       出力バッファのサイズ
558  */
559 s32 GetAdpcmOutputBufferSize(s32 nSamples);
560 
561 /*!
562   @brief        サンプル位置をニブル数に変換します。
563 
564   @param[in]    nPos          サンプル位置
565   @return                     ニブル数
566  */
567 u32 ConvertAdpcmPos2Nib(u32 nPos);
568 /*!
569   @brief        ニブル数をサンプル位置に変換します。
570 
571   @param[in]    nNib          ニブル数
572   @return                     サンプル位置
573  */
574 u32 ConvertAdpcmNib2Pos(u32 nNib);
575 /*!
576   @}
577  */
578 
579 /*!
580   @name     エフェクト
581 
582   @{
583 */
584 
585 /*!
586   @brief        ディレイエフェクトを設定します。
587 
588                 AUX から出力されるデータを加工するには、
589                 自前の加工処理関数を @ref RegisterAuxCallback で設定するほか、
590                 本関数を用いて、ディレイやリバーブのエフェクトをかけることができます。
591 
592                 ディレイ (@ref FxDelay) やリバーブ (@ref FxReverb) は、
593                 各バスにどちらか 1 つしか設定できないことに注意してください。
594 
595                 1 つ以上設定すると、後から設定したものが有効になります。
596                 もともと設定されていたエフェクトは解除されます。
597 
598                 @ref ClearEffect を呼び出したり、
599                 上記のようにもともと設定されていて解除された場合は、
600                 @ref FxDelay::ReleaseWorkBuffer
601                 や @ref FxReverb::ReleaseWorkBuffer で、
602                 当該エフェクトで使用していたメモリを解放することができます。
603 
604                 本関数を呼び出す前に、@ref FxDelay クラスの、
605                 @ref FxDelay::SetParam, @ref FxDelay::GetRequiredMemSize,
606                 @ref FxDelay::AssignWorkBuffer を呼び出し、
607                 ディレイエフェクトの準備を済ませておく必要があります。
608 
609   @param[in]    busId         バスの ID
610   @param[in]    fx            設定するディレイエフェクト
611 
612   @return                     設定に成功したら true を返します。
613                               fx が NULL の場合、設定に失敗し false を返します。
614 
615   @see ClearEffect
616   @see RegisterAuxCallback
617   @see FxDelay クラス
618   @see FxReverb クラス
619   @date 2010/10/20 初版
620  */
621 bool SetEffect(AuxBusId busId, FxDelay* fx);
622 
623 /*!
624   @brief        リバーブエフェクトを設定します。
625 
626                 AUX から出力されるデータを加工するには、
627                 自前の加工処理関数を @ref RegisterAuxCallback で設定するほか、
628                 本関数を用いて、ディレイやリバーブのエフェクトをかけることができます。
629 
630                 ディレイ (@ref FxDelay) やリバーブ (@ref FxReverb) は、
631                 各バスにどちらか 1 つしか設定できないことに注意してください。
632 
633                 1 つ以上設定すると、後から設定したものが有効になります。
634                 もともと設定されていたエフェクトは解除されます。
635 
636                 @ref ClearEffect を呼び出したり、
637                 上記のようにもともと設定されていて解除された場合は、
638                 @ref FxDelay::ReleaseWorkBuffer
639                 や @ref FxReverb::ReleaseWorkBuffer で、
640                 当該エフェクトで使用していたメモリを解放することができます。
641 
642                 本関数を呼び出す前に、@ref FxReverb クラスの、
643                 @ref FxReverb::SetParam, @ref FxReverb::GetRequiredMemSize,
644                 @ref FxReverb::AssignWorkBuffer を呼び出し、
645                 ディレイエフェクトの準備を済ませておく必要があります。
646 
647 
648   @param[in]    busId         バスの ID
649   @param[in]    fx            設定するリバーブエフェクト
650 
651   @return                     設定に成功したら true を返します。
652                               fx が NULL の場合、設定に失敗し false を返します。
653   @see ClearEffect
654   @see RegisterAuxCallback
655   @see FxReverb クラス
656   @see FxDelay クラス
657 
658   @date 2010/10/20 初版
659  */
660 bool SetEffect(AuxBusId busId, FxReverb* fx);
661 
662 /*!
663   @brief        エフェクトの設定を解除します。
664 
665                 @ref SetEffect 関数で設定したエフェクトを解除します。
666 
667                 @ref RegisterAuxCallback で設定したコールバックは解除されません
668                 (これは @ref ClearAuxCallback で解除することができます)。
669 
670 
671   @param[in]    busId         バスの ID
672 
673   @see SetEffect
674   @see RegisterAuxCallback
675   @see ClearAuxCallback
676 
677   @date 2010/10/20 初版
678  */
679 void ClearEffect(AuxBusId busId);
680 
681 /*!
682   @}
683  */
684 
685 void UseOldSystem(bool enable = true);
686 
687 }}} // namespace nn::snd::CTR
688 
689 #endif // __cplusplus
690 
691 // 以下、C 用宣言
692 /*!
693     @addtogroup   nn_snd   snd
694 
695     @{
696 */
697 
698 /*!
699 @brief      対応する C++ 関数 @ref nn::snd::CTR::Initialize を参照してください。
700 */
701 NN_EXTERN_C nnResult nnsndInitialize();
702 
703 /*!
704     @}
705 */
706 
707 #endif //NN_SND_API_H_
708