1 /*---------------------------------------------------------------------------*
2   Project:  NintendoWare
3   File:     snd_BiquadFilterCallback.h
4 
5   Copyright (C)2009-2011 Nintendo/HAL Laboratory, Inc.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain proprietary
8   information of Nintendo and/or its licensed developers and are protected by
9   national and international copyright laws. They may not be disclosed to third
10   parties or copied or duplicated in any form, in whole or in part, without the
11   prior written consent of Nintendo.
12 
13   The content herein is highly confidential and should be handled accordingly.
14 
15   $Revision: $
16  *---------------------------------------------------------------------------*/
17 
18 #ifndef NW_SND_BIQUAD_FILTER_CALLBACK_H_
19 #define NW_SND_BIQUAD_FILTER_CALLBACK_H_
20 
21 #include <nn/types.h>
22 #include <nn/snd.h>
23 
24 namespace nw {
25 namespace snd {
26 
27 //---------------------------------------------------------------------------
28 //! @brief  biquad フィルタを表す抽象クラスです。
29 //!
30 //!         BiquadFilterCallback クラスから継承し、
31 //!         ユーザー側で biquad フィルタを実装することができます。
32 //!
33 //!         BiquadFilterCallback の使用方法については、
34 //!         @ref SoundSystem::SetBiquadFilterCallback 関数を参照してください。
35 //!
36 //! @see SoundSystem::SetBiquadFilterCallback
37 //!
38 //! @date 2010/10/15 初版
39 //---------------------------------------------------------------------------
40 class BiquadFilterCallback
41 {
42 public:
43     //---------------------------------------------------------------------------
44     //! @brief  biquad フィルタの計算に使用する係数の構造体です。
45     //!
46     //!         詳しくは CTR_SDK の nn::snd::BiquadFilterCoefficients
47     //!         のリファレンスを参照してください。
48     //!
49     //! @see GetCoefficients
50     //!
51     //! @date 2010/10/15 初版
52     //---------------------------------------------------------------------------
53     typedef nn::snd::BiquadFilterCoefficients Coefficients;
54 
55     //---------------------------------------------------------------------------
56     //! @brief  デストラクタです。
57     //!
58     //! @date 2010/10/15 初版
59     //---------------------------------------------------------------------------
~BiquadFilterCallback()60     virtual ~BiquadFilterCallback() {}
61 
62     //---------------------------------------------------------------------------
63     //! @brief  biquad フィルタの係数を返します。
64     //!
65     //!         nw::snd ライブラリ内部の biquad フィルタ係数が必要なタイミングで呼び出されます。
66     //!         BiquadFilterCallback を継承したクラスで、
67     //!         この関数にフィルタ係数を実装する必要があります。
68     //!
69     //!         type は、コールバッククラスを @ref SoundSystem::SetBiquadFilterCallback
70     //!         で登録したときのタイプ番号です。
71     //!         @ref BiquadFilterType に記述されている BIQUAD_FILTER_TYPE_USER_MIN ~
72     //!         BIQUAD_FILTER_TYPE_USER_MAX までの値が入ります。
73     //!
74     //!         value はフィルタのかかり具合を表す 0.0f ~ 1.0f の値です。
75     //!         この値に応じたフィルタ係数を coef に格納するように実装します。
76     //!
77     //! @param[in] type     フィルタの種類です
78     //!                     (BIQUAD_FILTER_TYPE_USER_MIN ~BIQUAD_FILTER_TYPE_USER_MAX)。
79     //! @param[in] value    フィルタのかかり具合です (0.0f ~ 1.0f)
80     //! @param[out] coef    計算したフィルタ係数を格納するための構造体です。
81     //!
82     //! @see SoundSystem::SetBiquadFilterCallback
83     //! @see BiquadFilterType
84     //!
85     //! @date 2010/10/15 初版
86     //---------------------------------------------------------------------------
87     virtual void GetCoefficients( int type, f32 value, Coefficients* coef ) const = 0;
88 };
89 
90 } // namespace nw::snd
91 } // namespace nw
92 
93 
94 #endif /* NW_SND_BIQUAD_FILTER_CALLBACK_H_ */
95 
96