![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Demo program of digital signal processing: Variable LPF/HPF, Vocal canceller, Pitch shifter, Reverbrator. ディジタル信号処理のデモプログラム. 遮断周波数可変 LPF/HPF,ボーカルキャンセラ,ピッチシフタ,残響生成器.
Dependencies: Array_Matrix F446_AD_DA UIT_AQM1602 mbed
Diff: SignalProcessing/BilinearDesignLH.hpp
- Revision:
- 0:fa74b1130cc3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SignalProcessing/BilinearDesignLH.hpp Sun Jan 29 09:11:30 2017 +0000 @@ -0,0 +1,53 @@ +//------------------------------------------------------------------------ +// Design of Butterworth LPF and HPF using bilinear transform -- Header +// +// 2016/03/31, Copyright (c) 2016 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