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

Dependencies:   UITDSP_ADDA UIT_ACM1602NI UIT_AQM1602 mbed

Resonator.hpp

Committer:
MikamiUitOpen
Date:
2014-12-02
Revision:
0:6c67a9387981
Child:
4:dd2ec72068d0

File content as of revision 0:6c67a9387981:

//------------------------------------------------------------------------------
//  音声合成で使う共振器(ヘッダ)
//      作成者:三上直樹,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