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
Diff: MyAcousticEffector_MIC/Reverberator.hpp
- Revision:
- 14:34c356ceb8e7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyAcousticEffector_MIC/Reverberator.hpp Thu Apr 13 23:23:04 2017 +0000 @@ -0,0 +1,51 @@ +//-------------------------------------------------------------- +// Reverberation generator +// +// 2017/04/10, Copyright (c) 2017 MIKAMI, Naoki +//-------------------------------------------------------------- + +#ifndef REVERBERATION_SYSTEM_HPP +#define REVERBERATION_SYSTEM_HPP + +#include "ReverbUnit.hpp" +#include "ProcessingBase.hpp" + +namespace Mikami +{ + class Reverberator : public ProcessingBase + { + public: + Reverberator(float gC = 0.8f, float gA = 0.6f) + : G0_(1.0f - gC), + DELAY_INIT_(6000), variableDelay_(6000), + cmF1_(gC, 887+1500), cmF2_(gC, 1153+3000), + cmF3_(gC, 1499+6000), + apF1_(gA, 97), apF2_(gA, 131) {} + + virtual float Execute(float sn) + { + float xn = G0_*sn; + float yn = cmF1_.Execute(xn, variableDelay_/4) + + cmF2_.Execute(xn, variableDelay_/2) + + cmF3_.Execute(xn, variableDelay_); + yn = apF2_.Execute(apF1_.Execute(yn)); + yn = yn + xn; // add direct input signal + return yn; + } + + void SetDelay(int n) { variableDelay_ = DELAY_INIT_ - n; } + + private: + const float G0_; + const int DELAY_INIT_; + int variableDelay_; + + CombFilter cmF1_, cmF2_, cmF3_; + AllPassFilter apF1_, apF2_; + + // disallow copy constructor and assignment operator + Reverberator(const Reverberator&); + Reverberator& operator=(const Reverberator&); + }; +} +#endif // REVERBERATION_SYSTEM_HPP