revised version of F746_SD_GraphicEqualizer

Dependencies:   BSP_DISCO_F746NG F746_GUI F746_SAI_IO FrequencyResponseDrawer LCD_DISCO_F746NG SDFileSystem_Warning_Fixed TS_DISCO_F746NG mbed

Fork of F746_SD_GraphicEqualizer by 不韋 呂

Committer:
edamame22
Date:
Thu Jul 07 05:58:52 2016 +0000
Revision:
12:87f6955b5a80
Parent:
0:e953eb392151
added highlighted line for track selection

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:e953eb392151 1 //-----------------------------------------------------------
MikamiUitOpen 0:e953eb392151 2 // グラフィックイコライザで使う IIR フィルタの周波数応答
MikamiUitOpen 0:e953eb392151 3 // Frequency response for graphic equalizer
MikamiUitOpen 0:e953eb392151 4 //
MikamiUitOpen 0:e953eb392151 5 // 2016/04/27, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 0:e953eb392151 6 //-----------------------------------------------------------
MikamiUitOpen 0:e953eb392151 7
MikamiUitOpen 0:e953eb392151 8 #ifndef GRAPHIC_EQUALIZER_FREQUENCY_RESPONSE_HPP
MikamiUitOpen 0:e953eb392151 9 #define GRAPHIC_EQUALIZER_FREQUENCY_RESPONSE_HPP
MikamiUitOpen 0:e953eb392151 10
MikamiUitOpen 0:e953eb392151 11 #include "FrequancyResponseBase.hpp"
MikamiUitOpen 0:e953eb392151 12 #include "BiquadGrEq.hpp"
MikamiUitOpen 0:e953eb392151 13
MikamiUitOpen 0:e953eb392151 14 namespace Mikami
MikamiUitOpen 0:e953eb392151 15 {
MikamiUitOpen 0:e953eb392151 16 class GrEqualizerFrqResp : public FrequencyResponse
MikamiUitOpen 0:e953eb392151 17 {
MikamiUitOpen 0:e953eb392151 18 public:
MikamiUitOpen 0:e953eb392151 19 GrEqualizerFrqResp(int stages) : STAGES_(stages)
MikamiUitOpen 0:e953eb392151 20 { ck_ = new BiquadGrEq::Coefs[stages]; }
MikamiUitOpen 0:e953eb392151 21
MikamiUitOpen 0:e953eb392151 22 ~GrEqualizerFrqResp()
MikamiUitOpen 0:e953eb392151 23 { delete[] ck_; }
MikamiUitOpen 0:e953eb392151 24
MikamiUitOpen 0:e953eb392151 25 // フィルタの係数設定
MikamiUitOpen 0:e953eb392151 26 void SetParams(BiquadGrEq::Coefs ck[])
MikamiUitOpen 0:e953eb392151 27 { for (int n=0; n<STAGES_; n++) ck_[n] = ck[n]; }
MikamiUitOpen 0:e953eb392151 28
MikamiUitOpen 0:e953eb392151 29 void SetParam(BiquadGrEq::Coefs ck, int n)
MikamiUitOpen 0:e953eb392151 30 { ck_[n] = ck; }
MikamiUitOpen 0:e953eb392151 31
MikamiUitOpen 0:e953eb392151 32 // 周波数応答の絶対値を返す関数, 引数: z^(-1)
MikamiUitOpen 0:e953eb392151 33 virtual float AbsH_z(Complex u)
MikamiUitOpen 0:e953eb392151 34 {
MikamiUitOpen 0:e953eb392151 35 Complex h = 1;
MikamiUitOpen 0:e953eb392151 36 for (int k=0; k<STAGES_; k++)
MikamiUitOpen 0:e953eb392151 37 h = h*(ck_[k].b0 + (ck_[k].b1 + ck_[k].b2*u)*u)
MikamiUitOpen 0:e953eb392151 38 /((1.0f - (ck_[k].a1 + ck_[k].a2*u)*u));
MikamiUitOpen 0:e953eb392151 39 return abs(h);
MikamiUitOpen 0:e953eb392151 40 }
MikamiUitOpen 0:e953eb392151 41
MikamiUitOpen 0:e953eb392151 42 private:
MikamiUitOpen 0:e953eb392151 43 const int STAGES_;
MikamiUitOpen 0:e953eb392151 44 float g0_;
MikamiUitOpen 0:e953eb392151 45 BiquadGrEq::Coefs *ck_;
MikamiUitOpen 0:e953eb392151 46
MikamiUitOpen 0:e953eb392151 47 // disallow copy constructor and assignment operator
MikamiUitOpen 0:e953eb392151 48 GrEqualizerFrqResp(const GrEqualizerFrqResp&);
MikamiUitOpen 0:e953eb392151 49 GrEqualizerFrqResp& operator=(const GrEqualizerFrqResp&);
MikamiUitOpen 0:e953eb392151 50 };
MikamiUitOpen 0:e953eb392151 51 }
MikamiUitOpen 0:e953eb392151 52 #endif // GRAPHIC_EQUALIZER_FREQUENCY_RESPONSE_HPP