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

Revision:
0:224dccbc4edd
Child:
7:2735829e6657
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MyAcousticEffector_MIC/IIR_Cascade.hpp	Mon Aug 15 07:18:07 2016 +0000
@@ -0,0 +1,49 @@
+//------------------------------------------------------------------------------
+//  縦続形 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