Synthesizer for Japanese five vowels with keyboard. 鍵盤と一緒になった日本語の5母音の合成器.
Dependencies: BSP_DISCO_F746NG_patch_fixed BUTTON_GROUP LCD_DISCO_F746NG TS_DISCO_F746NG mbed
Diff: MyClasses_Functions/Resonator.hpp
- Revision:
- 0:a98746e7a170
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyClasses_Functions/Resonator.hpp Wed Feb 24 13:00:12 2016 +0000 @@ -0,0 +1,47 @@ +//------------------------------------------------------------------------------ +// 音声合成で使う共振器(ヘッダ) +// 作成者:三上直樹,2013/11/27 作成,(c)三上直樹 2013 +//------------------------------------------------------------------------------ + +#include "mbed.h" + +#ifndef RESONATOR_HPP +#define RESONATOR_HPP + +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