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

Committer:
MikamiUitOpen
Date:
Mon Jan 30 02:06:57 2017 +0000
Revision:
1:b3cf07371911
Parent:
0:fa74b1130cc3
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:fa74b1130cc3 1 //--------------------------------------------------------------------
MikamiUitOpen 0:fa74b1130cc3 2 // STM32F446 と信号処理用ボードによるデモプログラムで使うグローバル関数
MikamiUitOpen 0:fa74b1130cc3 3 //
MikamiUitOpen 1:b3cf07371911 4 // 2017/01/30, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:fa74b1130cc3 5 //--------------------------------------------------------------------
MikamiUitOpen 0:fa74b1130cc3 6
MikamiUitOpen 0:fa74b1130cc3 7 #include "SignalProcessing.hpp" // 信号処理の抽象基底クラスなど
MikamiUitOpen 0:fa74b1130cc3 8 #include "AQM1602.hpp"
MikamiUitOpen 0:fa74b1130cc3 9 using namespace Mikami;
MikamiUitOpen 0:fa74b1130cc3 10
MikamiUitOpen 0:fa74b1130cc3 11 extern SignalProcessing *spPtr_; // 処理に対応するポインタ
MikamiUitOpen 0:fa74b1130cc3 12
MikamiUitOpen 0:fa74b1130cc3 13 // 機能の割り当てと表示
MikamiUitOpen 0:fa74b1130cc3 14 void AssignDisplay(SignalProcessing &func, Aqm1602 &lcd,
MikamiUitOpen 1:b3cf07371911 15 char str[], float val = -1)
MikamiUitOpen 0:fa74b1130cc3 16 {
MikamiUitOpen 0:fa74b1130cc3 17 spPtr_ = &func; // 機能の割り当て
MikamiUitOpen 0:fa74b1130cc3 18
MikamiUitOpen 0:fa74b1130cc3 19 // 表示
MikamiUitOpen 0:fa74b1130cc3 20 lcd.ClearLine(0);
MikamiUitOpen 0:fa74b1130cc3 21 lcd.ClearLine(1);
MikamiUitOpen 1:b3cf07371911 22 printf("%s", str);
MikamiUitOpen 0:fa74b1130cc3 23 lcd.WriteStringXY(str, 0, 0);
MikamiUitOpen 1:b3cf07371911 24
MikamiUitOpen 1:b3cf07371911 25 if (val != -1)
MikamiUitOpen 0:fa74b1130cc3 26 {
MikamiUitOpen 1:b3cf07371911 27 printf(", %4.0f Hz", val);
MikamiUitOpen 0:fa74b1130cc3 28 lcd.WriteValueXY("%4.0f Hz", val, 0, 1);
MikamiUitOpen 0:fa74b1130cc3 29 }
MikamiUitOpen 1:b3cf07371911 30 printf("\r\n");
MikamiUitOpen 0:fa74b1130cc3 31 }
MikamiUitOpen 0:fa74b1130cc3 32
MikamiUitOpen 0:fa74b1130cc3 33 // 周波数変化が基準値より大きい場合に true を返す
MikamiUitOpen 0:fa74b1130cc3 34 // min <= frq <= max
MikamiUitOpen 0:fa74b1130cc3 35 // th : 基準値
MikamiUitOpen 0:fa74b1130cc3 36 bool FrChange(AnalogIn &aIn, float min, float max, float th, float &frq)
MikamiUitOpen 0:fa74b1130cc3 37 {
MikamiUitOpen 0:fa74b1130cc3 38 static float frqCurrent = 0;
MikamiUitOpen 0:fa74b1130cc3 39 frq = (max - min)*aIn.read() + min;
MikamiUitOpen 0:fa74b1130cc3 40 if (fabs(frq - frqCurrent) > th)
MikamiUitOpen 0:fa74b1130cc3 41 {
MikamiUitOpen 0:fa74b1130cc3 42 frqCurrent = frq;
MikamiUitOpen 0:fa74b1130cc3 43 return true;
MikamiUitOpen 0:fa74b1130cc3 44 }
MikamiUitOpen 0:fa74b1130cc3 45 else
MikamiUitOpen 0:fa74b1130cc3 46 return false;
MikamiUitOpen 0:fa74b1130cc3 47 }