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
MyGraphicEqualizer/GrEqualizerFrqResp.hpp@16:d60e5187fd31, 2017-04-27 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Thu Apr 27 23:55:53 2017 +0000
- Revision:
- 16:d60e5187fd31
- Parent:
- 15:fac50dd1de44
17
Who changed what in which revision?
User | Revision | Line number | New 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 |