Reverb system using singlae allpass filter class for ST Nucleo F401RE.

Dependencies:   UIT_ADDA mbed

Committer:
MikamiUitOpen
Date:
Fri Oct 31 08:14:16 2014 +0000
Revision:
0:ff3a8918b1ad
Child:
2:e1227bdb1ba5
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:ff3a8918b1ad 1 //--------------------------------------------------------------
MikamiUitOpen 0:ff3a8918b1ad 2 // Reverb system using all-pass filter dlass
MikamiUitOpen 0:ff3a8918b1ad 3 // 2014/10/31, Copyright (c) 2014 MIKAMI, Naoki
MikamiUitOpen 0:ff3a8918b1ad 4 //--------------------------------------------------------------
MikamiUitOpen 0:ff3a8918b1ad 5
MikamiUitOpen 0:ff3a8918b1ad 6 #include "mbed.h"
MikamiUitOpen 0:ff3a8918b1ad 7
MikamiUitOpen 0:ff3a8918b1ad 8 #include "ADC_Base.hpp" // for ADC not using interrupt
MikamiUitOpen 0:ff3a8918b1ad 9 #include "DAC_MCP4922.hpp" // for DAC MCP4922
MikamiUitOpen 0:ff3a8918b1ad 10 #include "ScfClockTim3.hpp" // for clock supplied to SCF
MikamiUitOpen 0:ff3a8918b1ad 11
MikamiUitOpen 0:ff3a8918b1ad 12 #include "allpass_filter.hpp"
MikamiUitOpen 0:ff3a8918b1ad 13
MikamiUitOpen 0:ff3a8918b1ad 14 using namespace Mikami;
MikamiUitOpen 0:ff3a8918b1ad 15
MikamiUitOpen 0:ff3a8918b1ad 16 const int FS_ = 12000; // Sampling frequency: 12 kHz
MikamiUitOpen 0:ff3a8918b1ad 17 ADC_Base adc_(A0, FS_); // for AD
MikamiUitOpen 0:ff3a8918b1ad 18 DAC_MCP4922 myDac_; // for DA
MikamiUitOpen 0:ff3a8918b1ad 19
MikamiUitOpen 0:ff3a8918b1ad 20 const float G_A_ = 0.6f;
MikamiUitOpen 0:ff3a8918b1ad 21 AllpassFilter<1153> allpass_(G_A_);
MikamiUitOpen 0:ff3a8918b1ad 22
MikamiUitOpen 0:ff3a8918b1ad 23 DigitalIn sw_(D2, PullDown);
MikamiUitOpen 0:ff3a8918b1ad 24
MikamiUitOpen 0:ff3a8918b1ad 25 int main()
MikamiUitOpen 0:ff3a8918b1ad 26 {
MikamiUitOpen 0:ff3a8918b1ad 27 ScfClockTim3(500000); // cutoff frequency: 5 kHz
MikamiUitOpen 0:ff3a8918b1ad 28 while (true)
MikamiUitOpen 0:ff3a8918b1ad 29 {
MikamiUitOpen 0:ff3a8918b1ad 30 float xn = adc_.Read(); // Read from A0
MikamiUitOpen 0:ff3a8918b1ad 31 //-----------------------------------------------
MikamiUitOpen 0:ff3a8918b1ad 32
MikamiUitOpen 0:ff3a8918b1ad 33 float yn;
MikamiUitOpen 0:ff3a8918b1ad 34 if (sw_.read() == 1) yn = allpass_.Execute(xn);
MikamiUitOpen 0:ff3a8918b1ad 35 else yn = xn;
MikamiUitOpen 0:ff3a8918b1ad 36
MikamiUitOpen 0:ff3a8918b1ad 37 //-----------------------------------------------
MikamiUitOpen 0:ff3a8918b1ad 38 myDac_.Write(yn); // Write to DAC
MikamiUitOpen 0:ff3a8918b1ad 39 }
MikamiUitOpen 0:ff3a8918b1ad 40 }