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

50 lines
1.0 KiB
C++

/***************************************************/
/*! \class OneZero
\brief STK one-zero filter class.
This class implements a one-zero digital filter. A method is
provided for setting the zero position along the real axis of the
z-plane while maintaining a constant filter gain.
by Perry R. Cook and Gary P. Scavone, 1995-2012.
*/
/***************************************************/
#include "OneZero.h"
#include <cmath>
namespace stk {
OneZero :: OneZero( StkFloat theZero )
{
b_.resize( 2 );
inputs_.resize( 2, 1, 0.0 );
this->setZero( theZero );
}
OneZero :: ~OneZero( void )
{
}
void OneZero :: setZero( StkFloat theZero )
{
// Normalize coefficients for unity gain.
if ( theZero > 0.0 )
b_[0] = 1.0 / ((StkFloat) 1.0 + theZero);
else
b_[0] = 1.0 / ((StkFloat) 1.0 - theZero);
b_[1] = -theZero * b_[0];
}
void OneZero :: setCoefficients( StkFloat b0, StkFloat b1, bool clearState )
{
b_[0] = b0;
b_[1] = b1;
if ( clearState ) this->clear();
}
} // stk namespace