SD card player with variable cotoff frequency lowpass and highpass IIR filter. SD カードの *.wav ファイルのオーディオ信号を,遮断周波数可変 IIR 低域通過および高域通過フィルタを通して,ボードに搭載されているCODEC で出力する.このプログラムについては,CQ出版社インターフェース誌 2018年8月号で解説している.
Dependencies: F746_GUI F746_SAI_IO FrequencyResponseDrawer SD_PlayerSkeleton
MyVariableFilter/BilinearDesignLH.hpp
- Committer:
- MikamiUitOpen
- Date:
- 2017-04-10
- Revision:
- 11:399670d24ed9
- Parent:
- 10:3532c05aa1a9
File content as of revision 11:399670d24ed9:
//------------------------------------------------------------------------ // Design of Butterworth LPF and HPF using bilinear transform -- Header // // 2017/03/25, Copyright (c) 2017 MIKAMI, Naoki //------------------------------------------------------------------------ #ifndef BILINEAR_BUTTERWORTH_HPP #define BILINEAR_BUTTERWORTH_HPP #include "mbed.h" #include <complex> // requisite #include "Array.hpp" namespace Mikami { typedef complex<float> Complex; // define "Complex" class BilinearDesign { public: struct Coefs { float a1, a2, b1, b2; }; enum Type { LPF, HPF }; // Constructor BilinearDesign(int order, float fs) : PI_FS_(PI_/fs), ORDER_(order), sP_(order/2), zP_(order/2), ck_(order/2) {} // Destractor virtual ~BilinearDesign() {} // Execution of design void Execute(float fc, Type pb, Coefs c[], float& g); private: static const float PI_ = 3.1415926536f; const float PI_FS_; const int ORDER_; Array<Complex> sP_; // Poles on s-plane Array<Complex> zP_; // Poles on z-plane Array<Coefs> ck_; // Coefficients of transfer function for cascade form float gain_; // Gain factor for cascade form void Butterworth(); void Bilinear(float fc); void ToCascade(Type pb); void GetGain(Type pb); void GetCoefs(Coefs c[], float& gain); }; } #endif // BILINEAR_BUTTERWORTH_HPP