Output the audio signal with filtering by graphic equalizer in the *.wav file on the SD card using onboard CODEC. SD カードの *.wav ファイルのオーディオ信号をグラフィック・イコライザを通して,ボードに搭載されているCODEC で出力する.

Dependencies:   F746_GUI F746_SAI_IO SD_PlayerSkeleton FrequencyResponseDrawer

Committer:
MikamiUitOpen
Date:
Mon Apr 10 04:07:35 2017 +0000
Revision:
24:f78f9d0ac262
Parent:
23:878419f8638b
25

Who changed what in which revision?

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