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

SignalProcessing/MyFunctions.hpp

Committer:
MikamiUitOpen
Date:
2017-01-29
Revision:
0:fa74b1130cc3
Child:
1:b3cf07371911

File content as of revision 0:fa74b1130cc3:

//--------------------------------------------------------------------
//  STM32F446 と信号処理用ボードによるデモプログラムで使うグローバル関数
//
//  2017/01/29, Copyright (c) 2017 MIKAMI, Naoki
//--------------------------------------------------------------------

#include "SignalProcessing.hpp"     // 信号処理の抽象基底クラスなど
#include "AQM1602.hpp"
using namespace Mikami;

extern SignalProcessing *spPtr_;    // 処理に対応するポインタ

// 機能の割り当てと表示
void AssignDisplay(SignalProcessing &func, Aqm1602 &lcd,
                   string str, float val = -1)
{
    spPtr_ = &func;     // 機能の割り当て

    // 表示
    lcd.ClearLine(0);
    lcd.ClearLine(1);
    lcd.WriteStringXY(str, 0, 0);
    if (val == -1)
        printf("%s\r\n", str.c_str());
    else
    {
        printf("%s, %4.0f Hz\r\n", str.c_str(), val);
        lcd.WriteValueXY("%4.0f Hz", val, 0, 1);
    }
}

// 周波数変化が基準値より大きい場合に true を返す
//      min <= frq <= max
//      th : 基準値
bool FrChange(AnalogIn &aIn, float min, float max, float th, float &frq)
{
    static float frqCurrent = 0;
    frq = (max - min)*aIn.read() + min;
    if (fabs(frq - frqCurrent) > th)
    {
        frqCurrent = frq;
        return true;
    }
    else
        return false;
}