Files
stk/src/Chorus.cpp
Gary Scavone fc877b87bf Version 4.4.4
2013-09-29 23:22:28 +02:00

57 lines
1.4 KiB
C++

/***************************************************/
/*! \class Chorus
\brief STK chorus effect class.
This class implements a chorus effect. It takes a monophonic
input signal and produces a stereo output signal.
by Perry R. Cook and Gary P. Scavone, 1995-2012.
*/
/***************************************************/
#include "Chorus.h"
namespace stk {
Chorus :: Chorus( StkFloat baseDelay )
{
lastFrame_.resize( 1, 2, 0.0 ); // resize lastFrame_ for stereo output
delayLine_[0].setMaximumDelay( (unsigned long) (baseDelay * 1.414) + 2);
delayLine_[0].setDelay( baseDelay );
delayLine_[1].setMaximumDelay( (unsigned long) (baseDelay * 1.414) + 2);
delayLine_[1].setDelay( baseDelay );
baseLength_ = baseDelay;
mods_[0].setFrequency( 0.2 );
mods_[1].setFrequency( 0.222222 );
modDepth_ = 0.05;
effectMix_ = 0.5;
this->clear();
}
void Chorus :: clear( void )
{
delayLine_[0].clear();
delayLine_[1].clear();
lastFrame_[0] = 0.0;
lastFrame_[1] = 0.0;
}
void Chorus :: setModDepth( StkFloat depth )
{
if ( depth < 0.0 || depth > 1.0 ) {
oStream_ << "Chorus::setModDepth(): depth argument must be between 0.0 - 1.0!";
handleError( StkError::WARNING ); return;
}
modDepth_ = depth;
};
void Chorus :: setModFrequency( StkFloat frequency )
{
mods_[0].setFrequency( frequency );
mods_[1].setFrequency( frequency * 1.1111 );
}
} // stk namespace