Integrated program of 4 different kinds of application programs for processing sound signal. 4種類のサウンド信号処理を統合したプログラム.

Dependencies:   F746_GUI F746_SAI_IO FrequencyResponseDrawer SD_PlayerSkeleton UIT_FFT_Real

Committer:
MikamiUitOpen
Date:
Thu Apr 13 23:23:30 2017 +0000
Revision:
15:fac50dd1de44
15

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 15:fac50dd1de44 1 //--------------------------------------------------------------
MikamiUitOpen 15:fac50dd1de44 2 // Reverb unit: comb filter and all-pass filter
MikamiUitOpen 15:fac50dd1de44 3 // 2017/04/08, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 15:fac50dd1de44 4 //--------------------------------------------------------------
MikamiUitOpen 15:fac50dd1de44 5
MikamiUitOpen 15:fac50dd1de44 6 #ifndef REVERB_UNIT_HPP
MikamiUitOpen 15:fac50dd1de44 7 #define REVERB_UNIT_HPP
MikamiUitOpen 15:fac50dd1de44 8
MikamiUitOpen 15:fac50dd1de44 9 #include "ReverbUnitBase.hpp"
MikamiUitOpen 15:fac50dd1de44 10
MikamiUitOpen 15:fac50dd1de44 11 namespace Mikami
MikamiUitOpen 15:fac50dd1de44 12 {
MikamiUitOpen 15:fac50dd1de44 13 // Reverb unit using comb filter
MikamiUitOpen 15:fac50dd1de44 14 class CombFilter : public ReverbBase
MikamiUitOpen 15:fac50dd1de44 15 {
MikamiUitOpen 15:fac50dd1de44 16 public:
MikamiUitOpen 15:fac50dd1de44 17 // Constructor
MikamiUitOpen 15:fac50dd1de44 18 CombFilter(float g, int delay)
MikamiUitOpen 15:fac50dd1de44 19 : ReverbBase(delay), G_C_(g) {}
MikamiUitOpen 15:fac50dd1de44 20
MikamiUitOpen 15:fac50dd1de44 21 // Execute comb filter with variable delay
MikamiUitOpen 15:fac50dd1de44 22 float Execute(float x, int n)
MikamiUitOpen 15:fac50dd1de44 23 {
MikamiUitOpen 15:fac50dd1de44 24 float yn = Get(n);
MikamiUitOpen 15:fac50dd1de44 25 Set(x + G_C_*yn);
MikamiUitOpen 15:fac50dd1de44 26 return yn;
MikamiUitOpen 15:fac50dd1de44 27 }
MikamiUitOpen 15:fac50dd1de44 28
MikamiUitOpen 15:fac50dd1de44 29 private:
MikamiUitOpen 15:fac50dd1de44 30 const float G_C_;
MikamiUitOpen 15:fac50dd1de44 31
MikamiUitOpen 15:fac50dd1de44 32 // disallow copy constructor and assignment operator
MikamiUitOpen 15:fac50dd1de44 33 CombFilter(const CombFilter&);
MikamiUitOpen 15:fac50dd1de44 34 CombFilter& operator=(const CombFilter&);
MikamiUitOpen 15:fac50dd1de44 35 };
MikamiUitOpen 15:fac50dd1de44 36
MikamiUitOpen 15:fac50dd1de44 37 // Reverb unit using allpass filter
MikamiUitOpen 15:fac50dd1de44 38 class AllPassFilter : public ReverbBase
MikamiUitOpen 15:fac50dd1de44 39 {
MikamiUitOpen 15:fac50dd1de44 40 public:
MikamiUitOpen 15:fac50dd1de44 41 // Constructor
MikamiUitOpen 15:fac50dd1de44 42 AllPassFilter(float g, int delay)
MikamiUitOpen 15:fac50dd1de44 43 : ReverbBase(delay), G_A_(g) {}
MikamiUitOpen 15:fac50dd1de44 44
MikamiUitOpen 15:fac50dd1de44 45 // Execute allpass filter
MikamiUitOpen 15:fac50dd1de44 46 float Execute(float x)
MikamiUitOpen 15:fac50dd1de44 47 {
MikamiUitOpen 15:fac50dd1de44 48 float un = x + G_A_*Get();
MikamiUitOpen 15:fac50dd1de44 49 float yn = -G_A_*un + Get();
MikamiUitOpen 15:fac50dd1de44 50 Set(un);
MikamiUitOpen 15:fac50dd1de44 51 return yn;
MikamiUitOpen 15:fac50dd1de44 52 }
MikamiUitOpen 15:fac50dd1de44 53
MikamiUitOpen 15:fac50dd1de44 54 private:
MikamiUitOpen 15:fac50dd1de44 55 const float G_A_;
MikamiUitOpen 15:fac50dd1de44 56
MikamiUitOpen 15:fac50dd1de44 57 // disallow copy constructor and assignment operator
MikamiUitOpen 15:fac50dd1de44 58 AllPassFilter(const AllPassFilter&);
MikamiUitOpen 15:fac50dd1de44 59 AllPassFilter& operator=(const AllPassFilter&);
MikamiUitOpen 15:fac50dd1de44 60 };
MikamiUitOpen 15:fac50dd1de44 61 }
MikamiUitOpen 15:fac50dd1de44 62 #endif // REVERB_UNIT_HPP