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

Committer:
MikamiUitOpen
Date:
Mon Aug 15 07:18:07 2016 +0000
Revision:
0:224dccbc4edd
Child:
5:0e14065569ea
1

Who changed what in which revision?

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