34   void setCoefficients( StkFloat b0, StkFloat b1, StkFloat b2, StkFloat a1, StkFloat a2, 
bool clearState = 
false );
 
   37   void setB0( StkFloat b0 ) { b_[0] = b0; };
 
   40   void setB1( StkFloat b1 ) { b_[1] = b1; };
 
   43   void setB2( StkFloat b2 ) { b_[2] = b2; };
 
   46   void setA1( StkFloat a1 ) { a_[1] = a1; };
 
   49   void setA2( StkFloat a2 ) { a_[2] = a2; };
 
   65   void setResonance( StkFloat frequency, StkFloat radius, 
bool normalize = 
false );
 
   75   void setNotch( StkFloat frequency, StkFloat radius );
 
   87   StkFloat 
lastOut( 
void )
 const { 
return lastFrame_[0]; };
 
   90   StkFloat 
tick( StkFloat input );
 
  116   virtual void sampleRateChanged( StkFloat newRate, StkFloat oldRate );
 
  121   inputs_[0] = gain_ * input;
 
  122   lastFrame_[0] = b_[0] * inputs_[0] + b_[1] * inputs_[1] + b_[2] * inputs_[2];
 
  123   lastFrame_[0] -= a_[2] * outputs_[2] + a_[1] * outputs_[1];
 
  124   inputs_[2] = inputs_[1];
 
  125   inputs_[1] = inputs_[0];
 
  126   outputs_[2] = outputs_[1];
 
  127   outputs_[1] = lastFrame_[0];
 
  129   return lastFrame_[0];
 
  134 #if defined(_STK_DEBUG_) 
  135   if ( channel >= frames.
channels() ) {
 
  136     oStream_ << 
"BiQuad::tick(): channel and StkFrames arguments are incompatible!";
 
  141   StkFloat *samples = &frames[channel];
 
  142   unsigned int hop = frames.
channels();
 
  143   for ( 
unsigned int i=0; i<frames.
frames(); i++, samples += hop ) {
 
  144     inputs_[0] = gain_ * *samples;
 
  145     *samples = b_[0] * inputs_[0] + b_[1] * inputs_[1] + b_[2] * inputs_[2];
 
  146     *samples -= a_[2] * outputs_[2] + a_[1] * outputs_[1];
 
  147     inputs_[2] = inputs_[1];
 
  148     inputs_[1] = inputs_[0];
 
  149     outputs_[2] = outputs_[1];
 
  150     outputs_[1] = *samples;
 
  153   lastFrame_[0] = outputs_[1];
 
  159 #if defined(_STK_DEBUG_) 
  161     oStream_ << 
"BiQuad::tick(): channel and StkFrames arguments are incompatible!";
 
  166   StkFloat *iSamples = &iFrames[iChannel];
 
  167   StkFloat *oSamples = &oFrames[oChannel];
 
  169   for ( 
unsigned int i=0; i<iFrames.
frames(); i++, iSamples += iHop, oSamples += oHop ) {
 
  170     inputs_[0] = gain_ * *iSamples;
 
  171     *oSamples = b_[0] * inputs_[0] + b_[1] * inputs_[1] + b_[2] * inputs_[2];
 
  172     *oSamples -= a_[2] * outputs_[2] + a_[1] * outputs_[1];
 
  173     inputs_[2] = inputs_[1];
 
  174     inputs_[1] = inputs_[0];
 
  175     outputs_[2] = outputs_[1];
 
  176     outputs_[1] = *oSamples;
 
  179   lastFrame_[0] = outputs_[1];