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

Revision:
0:fa74b1130cc3
Child:
4:2f06a5893e4a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SignalProcessing/VariableLpHp.hpp	Sun Jan 29 09:11:30 2017 +0000
@@ -0,0 +1,50 @@
+//--------------------------------------------------------------
+// 遮断周波数可変フィルタ,LPF と HPF
+//
+// 2017/01/26, Copyright (c) 2017 MIKAMI, Naoki
+//--------------------------------------------------------------
+
+#ifndef VARIABLE_LOWPASS_HIGHPASS_FILTER_HPP
+#define VARIABLE_LOWPASS_HIGHPASS_FILTER_HPP
+
+#include "IIR_Cascade.hpp"
+#include "SignalProcessing.hpp"
+#include "BilinearDesignLH.hpp"
+#include "Array.hpp"
+using namespace Mikami;
+
+class VariableLpHp  : public SignalProcessing
+{
+public:
+    VariableLpHp(int order, float fs)
+        : ORDER2_(order/2), coefs_(order/2), coefsIir_(order/2),
+          designer_(order, fs), filter_(order) {}
+
+    virtual float Execute(float xn1, float xn2)
+    { return filter_.Execute((xn1 + xn2)*0.5f); }
+
+    void Design(float fc, BilinearDesign::Type passBand)
+    {
+        float g0;
+        designer_.Execute(fc, passBand, coefs_, g0);
+        for (int n=0; n<ORDER2_; n++)
+        {
+            coefsIir_[n].a1 = coefs_[n].a1;
+            coefsIir_[n].a2 = coefs_[n].a2;
+            coefsIir_[n].b1 = coefs_[n].b1;
+            coefsIir_[n].b2 = 1.0f;
+        }
+        filter_.SetCoefs(g0, coefsIir_);
+        filter_.Clear();
+    }
+    
+private:
+    const int ORDER2_;
+    
+    Array<BilinearDesign::Coefs> coefs_;
+    Array<Biquad::Coefs> coefsIir_;
+
+    BilinearDesign designer_;
+    IirCascade filter_;
+};
+#endif  // VARIABLE_LOWPASS_HIGHPASS_FILTER_HPP
\ No newline at end of file