Vowel synthesizer using digital resonators. This program can run without LCD display. ディジタル共振器を使った合成母音ジェネレータ.LCD表示器なしでも動く.

Dependencies:   UITDSP_ADDA UIT_ACM1602NI UIT_AQM1602 mbed

Revision:
5:0396de26b449
Parent:
4:dd2ec72068d0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Synthesizer/Resonator.hpp	Sat Jul 25 07:10:11 2015 +0000
@@ -0,0 +1,52 @@
+//------------------------------------------------------------------------------
+//  音声合成で使う共振器(ヘッダ)
+//      作成者:三上直樹,2013/11/27 作成,(c)三上直樹 2013
+//------------------------------------------------------------------------------
+
+#include "mbed.h"
+
+#ifndef RESONATOR_HPP
+#define RESONATOR_HPP
+
+namespace Mikami
+{
+    class Resonator
+    {
+    private:
+        static float piT_;
+        float a1_, a2_, b0_;
+        float yn1_, yn2_;
+
+        // コンストラクタに共通な初期化
+        void Initialize(float fr, float bw, float fs);
+
+    public:
+        // 共振周波数と帯域幅に対応する構造体
+        struct FrBw { float fr, bw; };
+
+        // デフォルト・コンストラクタ
+        Resonator() {}
+
+        // 初期化を行うコンストラクタ
+        Resonator(float fr, float bw, float fs)
+        { Initialize(fr, bw, fs); }
+
+        // 初期化を行うコンストラクタ(構造体使用)
+        Resonator(FrBw fb, float fs)
+        { Initialize(fb.fr, fb.bw, fs); }
+
+        // 共振器のパラメータの設定
+        void Set(float fr, float bw);
+
+        // 共振器のパラメータの設定(構造体使用)
+        void Set(FrBw fb) { Set(fb.fr, fb.bw); }
+
+        // 内部の遅延器をクリア
+        void Clear() { yn1_ = 0; yn2_ = 0; }
+
+        // 共振器に対応する処理の実行
+        float Execute(float xin);
+    };
+}
+#endif  // RESONATOR_HPP
+