Integrated program of 4 different kinds of application programs for processing sound signal. 4種類のサウンド信号処理を統合したプログラム.

Dependencies:   F746_GUI F746_SAI_IO FrequencyResponseDrawer SD_PlayerSkeleton UIT_FFT_Real

MyAcousticEffector_MIC/IIR_Cascade.hpp

Committer:
MikamiUitOpen
Date:
2017-01-16
Revision:
7:2735829e6657
Parent:
0:224dccbc4edd
Child:
10:5168b49e1d77

File content as of revision 7:2735829e6657:

//------------------------------------------------------------------------------
//  縦続形 IIR フィルタのクラス
//
//  2016/04/12, Copyright (c) 2016 MIKAMI, Naoki
//------------------------------------------------------------------------------

#ifndef IIR_CASCADE_HPP
#define IIR_CASCADE_HPP

#include "Biquad.hpp"

namespace Mikami
{
    template<int order> class IIR_Cascade
    {
    public:
        // コンストラクタ
        IIR_Cascade(const Biquad::Coefs ck[], float g0) : g0_(g0) 
        {
            for (int n=0; n<order/2; n++) hk_[n] = Biquad(ck[n]);
            Clear();
        }
    
        // デストラクタ
        ~IIR_Cascade()
        {
            for  (int n=0; n<order/2; n++) delete hk_[n];
        }
        
        // 過去の計算結果を格納する配列のクリア
        void Clear()
        {
            for (int k=0; k<order/2; k++) hk_[k].Clear();
        }

        // フィルタ処理の実行
        float Execute(float xn)
        {
            float yn = g0_*xn;
            for (int k=0; k<order/2; k++) yn = hk_[k].Execute(yn);
            return yn;
        }

    private:
        Biquad hk_[order/2];    // 2 次の IIR フィルタ
        const float g0_;        // 利得定数
    };
}
#endif  // IIR_CASCADE_HPP