/*---------------------------------------------------------------------------* Project: NintendoWare File: snd_FxBase.h Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Revision: $ *---------------------------------------------------------------------------*/ /** * :include nw/snd/snd_FxBase.h * * @file snd_FxBase.h */ #ifndef NW_SND_FX_BASE_H_ #define NW_SND_FX_BASE_H_ #include #include #include // NW_DISALLOW_COPY_AND_ASSIGN #include namespace nw { namespace snd { //--------------------------------------------------------------------------- //! @brief エフェクトの抽象クラスです。 //! //! FxBase クラスから継承し、エフェクトを実装することができます。 //! //! エフェクトの使用方法については、@ref SoundSystem //! クラスを参照してください。 //! //! エフェクトは CPU で処理されます (DSP では処理されません)。 //! //! @see SoundSystem クラス //! @see FxReverb クラス //! //! @date 2010/08/25 エフェクトが CPU で処理される旨、追記 //! @date 2010/06/17 初版 //--------------------------------------------------------------------------- class FxBase { public: //---------------------------------------- //! @name デストラクタ //@{ //--------------------------------------------------------------------------- //! @brief デストラクタです。 //! //! @date 2010/06/17 初版 //--------------------------------------------------------------------------- virtual ~FxBase() {} //@} //---------------------------------------- //! @name エフェクト //@{ //--------------------------------------------------------------------------- //! @brief エフェクトの初期化処理を行います。 //! //! この関数は、@ref SoundSystem クラスから、 //! エフェクトの開始処理が必要となるタイミングで呼び出されます。 //! //! ユーザーが呼び出す必要はありません。 //! //! @return 初期化に成功すると true を、失敗すると false を返します。 //! //! @date 2010/06/17 初版 //--------------------------------------------------------------------------- virtual bool Initialize() = 0; //--------------------------------------------------------------------------- //! @brief エフェクトの終了処理を行います。 //! //! この関数は、@ref SoundSystem クラスから、 //! エフェクトの終了処理が必要となるタイミングで呼び出されます。 //! //! ユーザーが呼び出す必要はありません。 //! //! @date 2010/06/17 初版 //--------------------------------------------------------------------------- virtual void Finalize() = 0; //--------------------------------------------------------------------------- //! @brief エフェクト処理を行います。 //! //! この関数はエフェクトに送られてくる //! AUX バスのバッファの更新が必要なタイミングで呼び出されます。 //! FxBase を継承したクラスで、この関数にエフェクトの処理を実装しなければなりません。 //! //! @param[in] numChannels バッファのチャンネル数です。 //! @param[in,out] data エフェクト処理を行う波形データです。 //! @param[in] sampleLength 1 チャンネルあたりのサンプル長です。 //! @param[in] format data のサンプルフォーマットです。 //! @param[in] sampleRate data のサンプルレートです。 //! @param[in] mode 出力モードです。 //! //! @see SampleFormat //! @see OutputMode //! //! @date 2010/06/17 初版 //--------------------------------------------------------------------------- virtual void UpdateBuffer( int numChannels, nn::snd::AuxBusData* data, s32 sampleLength, SampleFormat format, f32 sampleRate, OutputMode mode ) = 0; //--------------------------------------------------------------------------- //! :private //! //! @brief 出力モードが変更されたときに呼ばれる仮想関数です。 //--------------------------------------------------------------------------- virtual void OnChangeOutputMode() {} //@} //--------------------------------------------------------------------------- //! @details :private //--------------------------------------------------------------------------- ut::LinkListNode m_Link; }; } // namespace nw::snd } // namespace nw #endif /* NW_SND_FX_BASE_H_ */