1 /*---------------------------------------------------------------------------* 2 Project: NintendoWare 3 File: snd_FxBase.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 /** 17 * :include nw/snd/snd_FxBase.h 18 * 19 * @file snd_FxBase.h 20 */ 21 22 #ifndef NW_SND_FX_BASE_H_ 23 #define NW_SND_FX_BASE_H_ 24 25 #include <nn/snd.h> 26 #include <nw/ut/ut_LinkList.h> 27 #include <nw/ut/ut_Preprocessor.h> // NW_DISALLOW_COPY_AND_ASSIGN 28 #include <nw/snd/snd_Global.h> 29 30 namespace nw { 31 namespace snd { 32 33 //--------------------------------------------------------------------------- 34 //! @brief エフェクトの抽象クラスです。 35 //! 36 //! FxBase クラスから継承し、エフェクトを実装することができます。 37 //! 38 //! エフェクトの使用方法については、@ref SoundSystem 39 //! クラスを参照してください。 40 //! 41 //! エフェクトは CPU で処理されます (DSP では処理されません)。 42 //! 43 //! @see SoundSystem クラス 44 //! @see FxReverb クラス 45 //! 46 //! @date 2010/08/25 エフェクトが CPU で処理される旨、追記 47 //! @date 2010/06/17 初版 48 //--------------------------------------------------------------------------- 49 class FxBase 50 { 51 public: 52 //---------------------------------------- 53 //! @name デストラクタ 54 //@{ 55 //--------------------------------------------------------------------------- 56 //! @brief デストラクタです。 57 //! 58 //! @date 2010/06/17 初版 59 //--------------------------------------------------------------------------- ~FxBase()60 virtual ~FxBase() {} 61 //@} 62 63 //---------------------------------------- 64 //! @name エフェクト 65 //@{ 66 67 //--------------------------------------------------------------------------- 68 //! @brief エフェクトの初期化処理を行います。 69 //! 70 //! この関数は、@ref SoundSystem クラスから、 71 //! エフェクトの開始処理が必要となるタイミングで呼び出されます。 72 //! 73 //! ユーザーが呼び出す必要はありません。 74 //! 75 //! @return 初期化に成功すると true を、失敗すると false を返します。 76 //! 77 //! @date 2010/06/17 初版 78 //--------------------------------------------------------------------------- 79 virtual bool Initialize() = 0; 80 81 //--------------------------------------------------------------------------- 82 //! @brief エフェクトの終了処理を行います。 83 //! 84 //! この関数は、@ref SoundSystem クラスから、 85 //! エフェクトの終了処理が必要となるタイミングで呼び出されます。 86 //! 87 //! ユーザーが呼び出す必要はありません。 88 //! 89 //! @date 2010/06/17 初版 90 //--------------------------------------------------------------------------- 91 virtual void Finalize() = 0; 92 93 //--------------------------------------------------------------------------- 94 //! @brief エフェクト処理を行います。 95 //! 96 //! この関数はエフェクトに送られてくる 97 //! AUX バスのバッファの更新が必要なタイミングで呼び出されます。 98 //! FxBase を継承したクラスで、この関数にエフェクトの処理を実装しなければなりません。 99 //! 100 //! @param[in] numChannels バッファのチャンネル数です。 101 //! @param[in,out] data エフェクト処理を行う波形データです。 102 //! @param[in] sampleLength 1 チャンネルあたりのサンプル長です。 103 //! @param[in] format data のサンプルフォーマットです。 104 //! @param[in] sampleRate data のサンプルレートです。 105 //! @param[in] mode 出力モードです。 106 //! 107 //! @see SampleFormat 108 //! @see OutputMode 109 //! 110 //! @date 2010/06/17 初版 111 //--------------------------------------------------------------------------- 112 virtual void UpdateBuffer( 113 int numChannels, 114 nn::snd::AuxBusData* data, 115 s32 sampleLength, 116 SampleFormat format, 117 f32 sampleRate, 118 OutputMode mode 119 ) = 0; 120 121 //--------------------------------------------------------------------------- 122 //! :private 123 //! 124 //! @brief 出力モードが変更されたときに呼ばれる仮想関数です。 125 //--------------------------------------------------------------------------- OnChangeOutputMode()126 virtual void OnChangeOutputMode() {} 127 128 //@} 129 130 //--------------------------------------------------------------------------- 131 //! @details :private 132 //--------------------------------------------------------------------------- 133 ut::LinkListNode m_Link; 134 }; 135 136 } // namespace nw::snd 137 } // namespace nw 138 139 140 #endif /* NW_SND_FX_BASE_H_ */ 141 142