Output the audio signal with filtering by graphic equalizer in the *.wav file on the SD card using onboard CODEC. SD カードの *.wav ファイルのオーディオ信号をグラフィック・イコライザを通して,ボードに搭載されているCODEC で出力する.

Dependencies:   F746_GUI F746_SAI_IO SD_PlayerSkeleton FrequencyResponseDrawer

Revision:
15:ef0acc9fe111
Parent:
13:728576fffe65
Child:
20:5c69e664e17c
diff -r ed252615db80 -r ef0acc9fe111 MyGraphicEqualizer/GrEqualizerFrqResp.hpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MyGraphicEqualizer/GrEqualizerFrqResp.hpp	Mon Aug 15 06:37:47 2016 +0000
@@ -0,0 +1,51 @@
+//-----------------------------------------------------------
+//  グラフィックイコライザで使う IIR フィルタの周波数応答
+//  Frequency response for graphic equalizer
+//
+//  2016/04/27, Copyright (c) 2016 MIKAMI, Naoki
+//-----------------------------------------------------------
+
+#ifndef GRAPHIC_EQUALIZER_FREQUENCY_RESPONSE_HPP
+#define GRAPHIC_EQUALIZER_FREQUENCY_RESPONSE_HPP
+
+#include "FrequancyResponseBase.hpp"
+#include "BiquadGrEq.hpp"
+#include "Array.hpp"
+
+namespace Mikami
+{
+    class GrEqualizerFrqResp : public FrequencyResponse
+    {
+    public:
+        GrEqualizerFrqResp(int bands)
+            : BANDS_(bands), ck_(bands) {}
+        
+        virtual ~GrEqualizerFrqResp() {}
+
+        // フィルタの係数設定
+        void SetParams(BiquadGrEq::Coefs ck[])
+        {   for (int n=0; n<BANDS_; n++) ck_[n] = ck[n]; }
+        
+        void SetParam(BiquadGrEq::Coefs ck, int n)
+        {   ck_[n] = ck; }
+
+        // 周波数応答の絶対値を返す関数, 引数: z^(-1)
+        virtual float AbsH_z(Complex u)
+        {
+            Complex h = 1;
+            for (int k=0; k<BANDS_; k++)
+            h = h*(ck_[k].b0 + (ck_[k].b1 + ck_[k].b2*u)*u)
+                /((1.0f - (ck_[k].a1 + ck_[k].a2*u)*u));
+            return abs(h);       
+        }
+
+    private:
+        const int BANDS_;
+        Array<BiquadGrEq::Coefs> ck_;
+
+        // disallow copy constructor and assignment operator
+        GrEqualizerFrqResp(const GrEqualizerFrqResp&);
+        GrEqualizerFrqResp& operator=(const GrEqualizerFrqResp&);
+    };
+}
+#endif  // GRAPHIC_EQUALIZER_FREQUENCY_RESPONSE_HPP