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@0:224dccbc4edd, 2016-08-15 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Aug 15 07:18:07 2016 +0000
- Revision:
- 0:224dccbc4edd
- Child:
- 5:0e14065569ea
1
Who changed what in which revision?
User | Revision | Line number | New 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 |