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:
Thu Apr 27 23:55:53 2017 +0000
Revision:
16:d60e5187fd31
Parent:
15:fac50dd1de44
17

Who changed what in which revision?

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