不韋 呂 / F746_MySoundMachine

Dependencies:   F746_GUI F746_SAI_IO FrequencyResponseDrawer SD_PlayerSkeleton UIT_FFT_Real

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Reverberator.hpp Source File

Reverberator.hpp

00001 //--------------------------------------------------------------
00002 // Reverberation generator
00003 //
00004 //  2017/04/10, Copyright (c) 2017 MIKAMI, Naoki
00005 //--------------------------------------------------------------
00006 
00007 #ifndef REVERBERATION_SYSTEM_HPP
00008 #define REVERBERATION_SYSTEM_HPP
00009 
00010 #include "ReverbUnit.hpp"
00011 #include "ProcessingBase.hpp"
00012 
00013 namespace Mikami
00014 {
00015     class Reverberator : public ProcessingBase
00016     {
00017     public:
00018         Reverberator(float gC = 0.8f, float gA = 0.6f)
00019             : G0_(1.0f - gC),
00020               DELAY_INIT_(6000), variableDelay_(6000),
00021               cmF1_(gC, 887+1500), cmF2_(gC, 1153+3000),
00022               cmF3_(gC, 1499+6000),
00023               apF1_(gA, 97), apF2_(gA, 131) {}
00024 
00025         virtual float Execute(float sn)
00026         {
00027             float xn = G0_*sn;
00028             float yn = cmF1_.Execute(xn, variableDelay_/4)
00029                      + cmF2_.Execute(xn, variableDelay_/2)
00030                      + cmF3_.Execute(xn, variableDelay_);
00031             yn = apF2_.Execute(apF1_.Execute(yn));
00032             yn = yn + xn;   // add direct input signal
00033             return yn;
00034         }
00035 
00036         void SetDelay(int n) { variableDelay_ = DELAY_INIT_ - n; }
00037 
00038     private:
00039         const float G0_;
00040         const int DELAY_INIT_;
00041         int variableDelay_;
00042 
00043         CombFilter cmF1_, cmF2_, cmF3_;
00044         AllPassFilter apF1_, apF2_;
00045 
00046         // disallow copy constructor and assignment operator
00047         Reverberator(const Reverberator&);
00048         Reverberator& operator=(const Reverberator&);
00049     };
00050 }
00051 #endif  // REVERBERATION_SYSTEM_HPP