/* FilterSecondOrderReson.h */

#ifndef Included_FilterSecondOrderReson_h
#define Included_FilterSecondOrderReson_h

/* FilterSecondOrderReson module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* Memory */
/* FloatingPoint */
/* FilterSpec */

#include "FilterSpec.h"

struct SecondOrderResonRec;
typedef struct SecondOrderResonRec SecondOrderResonRec;

/* flush free list */
void											FlushCachedSecondOrderResonStuff(void);

/* create a new filter record */
SecondOrderResonRec*			NewSecondOrderReson(void);

/* dispose filter record */
void											DisposeSecondOrderReson(SecondOrderResonRec* Filter);

/* adjust filter coefficients */
void											SetSecondOrderResonCoefficients(SecondOrderResonRec* Filter,
														float Cutoff, float Bandwidth, FilterScalings Scaling,
														long SamplingRate);

/* apply filter to a sample value */
float											ApplySecondOrderReson(SecondOrderResonRec* Filter, float Xin);

#endif
