Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed SerialTxRxIntr DSP_MultirateLinearphase
GraphicEqualizer/GraphicEqualizer.hpp@0:b3c94b253ae5, 2022-02-25 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Fri Feb 25 02:18:16 2022 +0000
- Revision:
- 0:b3c94b253ae5
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:b3c94b253ae5 | 1 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:b3c94b253ae5 | 2 | // グラフィックイコライザのクラス(ヘッダ) |
MikamiUitOpen | 0:b3c94b253ae5 | 3 | // フィルらの係数を設定しない場合は,出力は出ない |
MikamiUitOpen | 0:b3c94b253ae5 | 4 | // |
MikamiUitOpen | 0:b3c94b253ae5 | 5 | // 2022/02/19, Copyright (c) 2022 MIKAMI, Naoki |
MikamiUitOpen | 0:b3c94b253ae5 | 6 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:b3c94b253ae5 | 7 | |
MikamiUitOpen | 0:b3c94b253ae5 | 8 | #include "Array.hpp" |
MikamiUitOpen | 0:b3c94b253ae5 | 9 | #include "BiquadGrEq.hpp" |
MikamiUitOpen | 0:b3c94b253ae5 | 10 | |
MikamiUitOpen | 0:b3c94b253ae5 | 11 | #ifndef GRAPHIC_EQALIZER_HPP |
MikamiUitOpen | 0:b3c94b253ae5 | 12 | #define GRAPHIC_EQALIZER_HPP |
MikamiUitOpen | 0:b3c94b253ae5 | 13 | |
MikamiUitOpen | 0:b3c94b253ae5 | 14 | namespace Mikami |
MikamiUitOpen | 0:b3c94b253ae5 | 15 | { |
MikamiUitOpen | 0:b3c94b253ae5 | 16 | class GrEqualizer |
MikamiUitOpen | 0:b3c94b253ae5 | 17 | { |
MikamiUitOpen | 0:b3c94b253ae5 | 18 | public: |
MikamiUitOpen | 0:b3c94b253ae5 | 19 | // コンストラクタ |
MikamiUitOpen | 0:b3c94b253ae5 | 20 | GrEqualizer(int bands, float fs, float qVal = 1.0f/sqrtf(2.0f)); |
MikamiUitOpen | 0:b3c94b253ae5 | 21 | // グラフィック・イコライザの実行 |
MikamiUitOpen | 0:b3c94b253ae5 | 22 | float Execute(float xn) { return (this->*fPtr_)((this->*fPtr2_)(xn)); } |
MikamiUitOpen | 0:b3c94b253ae5 | 23 | |
MikamiUitOpen | 0:b3c94b253ae5 | 24 | // 指定したチャンネルの係数を設定する |
MikamiUitOpen | 0:b3c94b253ae5 | 25 | void SetCoefficients(int band, BiquadGrEq::Coefs coefs) |
MikamiUitOpen | 0:b3c94b253ae5 | 26 | { biquad_[band].SetCoefficients(coefs); } |
MikamiUitOpen | 0:b3c94b253ae5 | 27 | |
MikamiUitOpen | 0:b3c94b253ae5 | 28 | // グラフィック・イコライザの処理を有効にする |
MikamiUitOpen | 0:b3c94b253ae5 | 29 | void Validate() { fPtr_ = &GrEqualizer::Filtering; } |
MikamiUitOpen | 0:b3c94b253ae5 | 30 | // グラフィック・イコライザの処理を無効にする |
MikamiUitOpen | 0:b3c94b253ae5 | 31 | void Invalidate() { fPtr_ = &GrEqualizer::Through; } |
MikamiUitOpen | 0:b3c94b253ae5 | 32 | // 出力を On にする |
MikamiUitOpen | 0:b3c94b253ae5 | 33 | void SetOn() { fPtr2_ = &GrEqualizer::On; } |
MikamiUitOpen | 0:b3c94b253ae5 | 34 | // 出力を Off にする |
MikamiUitOpen | 0:b3c94b253ae5 | 35 | void SetOff() { fPtr2_ = &GrEqualizer::Off; } |
MikamiUitOpen | 0:b3c94b253ae5 | 36 | |
MikamiUitOpen | 0:b3c94b253ae5 | 37 | private: |
MikamiUitOpen | 0:b3c94b253ae5 | 38 | const int BANDS_; // バンドの数 |
MikamiUitOpen | 0:b3c94b253ae5 | 39 | const float Q_VAL_; // Q 値 |
MikamiUitOpen | 0:b3c94b253ae5 | 40 | |
MikamiUitOpen | 0:b3c94b253ae5 | 41 | Array<BiquadGrEq> biquad_; |
MikamiUitOpen | 0:b3c94b253ae5 | 42 | Array<float> f0_; |
MikamiUitOpen | 0:b3c94b253ae5 | 43 | |
MikamiUitOpen | 0:b3c94b253ae5 | 44 | float (GrEqualizer::*fPtr_)(float); // イコライザ処理の有無 |
MikamiUitOpen | 0:b3c94b253ae5 | 45 | float (GrEqualizer::*fPtr2_)(float); // 出力の On/Off |
MikamiUitOpen | 0:b3c94b253ae5 | 46 | |
MikamiUitOpen | 0:b3c94b253ae5 | 47 | float Through(float xn) { return xn; } // そのまま出力 |
MikamiUitOpen | 0:b3c94b253ae5 | 48 | float Filtering(float xn); // フィルタを実行して出力 |
MikamiUitOpen | 0:b3c94b253ae5 | 49 | float On(float xn) { return xn; } // 出力: On |
MikamiUitOpen | 0:b3c94b253ae5 | 50 | float Off(float xn) { return 0; } // 出力: Off |
MikamiUitOpen | 0:b3c94b253ae5 | 51 | |
MikamiUitOpen | 0:b3c94b253ae5 | 52 | // コピー・コンストラクタ,代入演算子禁止禁止のため |
MikamiUitOpen | 0:b3c94b253ae5 | 53 | GrEqualizer(const GrEqualizer&); |
MikamiUitOpen | 0:b3c94b253ae5 | 54 | GrEqualizer& operator=(const GrEqualizer&); |
MikamiUitOpen | 0:b3c94b253ae5 | 55 | }; |
MikamiUitOpen | 0:b3c94b253ae5 | 56 | } |
MikamiUitOpen | 0:b3c94b253ae5 | 57 | #endif // GRAPHIC_EQALIZER_HPP |