34   void setB0( StkFloat b0 ) { b_[0] = b0; };
 
   37   void setA1( StkFloat a1 ) { a_[1] = a1; };
 
   40   void setA2( StkFloat a2 ) { a_[2] = a2; };
 
   43   void setCoefficients( StkFloat b0, StkFloat a1, StkFloat a2, 
bool clearState = 
false );
 
   61   void setResonance(StkFloat frequency, StkFloat radius, 
bool normalize = 
false);
 
   64   StkFloat 
lastOut( 
void )
 const { 
return lastFrame_[0]; };
 
   67   StkFloat 
tick( StkFloat input );
 
   93   virtual void sampleRateChanged( StkFloat newRate, StkFloat oldRate );
 
   98   inputs_[0] = gain_ * input;
 
   99   lastFrame_[0] = b_[0] * inputs_[0] - a_[1] * outputs_[1] - a_[2] * outputs_[2];
 
  100   outputs_[2] = outputs_[1];
 
  101   outputs_[1] = lastFrame_[0];
 
  103   return lastFrame_[0];
 
  108 #if defined(_STK_DEBUG_) 
  109   if ( channel >= frames.
channels() ) {
 
  110     oStream_ << 
"TwoPole::tick(): channel and StkFrames arguments are incompatible!";
 
  115   StkFloat *samples = &frames[channel];
 
  116   unsigned int hop = frames.
channels();
 
  117   for ( 
unsigned int i=0; i<frames.
frames(); i++, samples += hop ) {
 
  118     inputs_[0] = gain_ * *samples;
 
  119     *samples = b_[0] * inputs_[0] - a_[1] * outputs_[1] - a_[2] * outputs_[2];
 
  120     outputs_[2] = outputs_[1];
 
  121     outputs_[1] = *samples;
 
  124   lastFrame_[0] = outputs_[1];
 
  130 #if defined(_STK_DEBUG_) 
  132     oStream_ << 
"TwoPole::tick(): channel and StkFrames arguments are incompatible!";
 
  137   StkFloat *iSamples = &iFrames[iChannel];
 
  138   StkFloat *oSamples = &oFrames[oChannel];
 
  140   for ( 
unsigned int i=0; i<iFrames.
frames(); i++, iSamples += iHop, oSamples += oHop ) {
 
  141     inputs_[0] = gain_ * *iSamples;
 
  142     *oSamples = b_[0] * inputs_[0] - a_[1] * outputs_[1] - a_[2] * outputs_[2];
 
  143     outputs_[2] = outputs_[1];
 
  144     outputs_[1] = *oSamples;
 
  147   lastFrame_[0] = outputs_[1];