1 /*---------------------------------------------------------------------------*
2   Project:  NintendoWare
3   File:     snd_BiquadFilterCallback.h
4 
5   Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc.  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   $Revision: $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NW_SND_BIQUAD_FILTER_CALLBACK_H_
17 #define NW_SND_BIQUAD_FILTER_CALLBACK_H_
18 
19 #include <nn/types.h>
20 #include <nn/snd.h>
21 
22 namespace nw {
23 namespace snd {
24 
25 //---------------------------------------------------------------------------
26 //! @brief  biquad フィルタを表す抽象クラスです。
27 //!
28 //!         BiquadFilterCallback クラスから継承し、
29 //!         ユーザー側で biquad フィルタを実装することができます。
30 //!
31 //!         BiquadFilterCallback の使用方法については、
32 //!         @ref SoundSystem::SetBiquadFilterCallback 関数を参照してください。
33 //!
34 //! @see SoundSystem::SetBiquadFilterCallback
35 //!
36 //! @date 2010/10/15 初版
37 //---------------------------------------------------------------------------
38 class BiquadFilterCallback
39 {
40 public:
41     //---------------------------------------------------------------------------
42     //! @brief  biquad フィルタの計算に使用する係数の構造体です。
43     //!
44     //!         詳しくは CTR_SDK の nn::snd::BiquadFilterCoefficients
45     //!         のリファレンスを参照してください。
46     //!
47     //! @see GetCoefficients
48     //!
49     //! @date 2010/10/15 初版
50     //---------------------------------------------------------------------------
51     typedef nn::snd::BiquadFilterCoefficients Coefficients;
52 
53     //---------------------------------------------------------------------------
54     //! @brief  デストラクタです。
55     //!
56     //! @date 2010/10/15 初版
57     //---------------------------------------------------------------------------
~BiquadFilterCallback()58     virtual ~BiquadFilterCallback() {}
59 
60     //---------------------------------------------------------------------------
61     //! @brief  biquad フィルタの係数を返します。
62     //!
63     //!         nw::snd ライブラリ内部の biquad フィルタ係数が必要なタイミングで呼び出されます。
64     //!         BiquadFilterCallback を継承したクラスで、
65     //!         この関数にフィルタ係数を実装する必要があります。
66     //!
67     //!         type は、コールバッククラスを @ref SoundSystem::SetBiquadFilterCallback
68     //!         で登録したときのタイプ番号です。
69     //!         @ref BiquadFilterType に記述されている BIQUAD_FILTER_TYPE_USER_MIN ~
70     //!         BIQUAD_FILTER_TYPE_USER_MAX までの値が入ります。
71     //!
72     //!         value はフィルタのかかり具合を表す 0.0f ~ 1.0f の値です。
73     //!         この値に応じたフィルタ係数を coef に格納するように実装します。
74     //!
75     //! @param[in] type     フィルタの種類です
76     //!                     (BIQUAD_FILTER_TYPE_USER_MIN ~BIQUAD_FILTER_TYPE_USER_MAX)。
77     //! @param[in] value    フィルタのかかり具合です (0.0f ~ 1.0f)
78     //! @param[out] coef    計算したフィルタ係数を格納するための構造体です。
79     //!
80     //! @see SoundSystem::SetBiquadFilterCallback
81     //! @see BiquadFilterType
82     //!
83     //! @date 2010/10/15 初版
84     //---------------------------------------------------------------------------
85     virtual void GetCoefficients( int type, f32 value, Coefficients* coef ) const = 0;
86 };
87 
88 } // namespace nw::snd
89 } // namespace nw
90 
91 
92 #endif /* NW_SND_BIQUAD_FILTER_CALLBACK_H_ */
93 
94