/* FilterResonantLowpass.h */

#ifndef Included_FilterResonantLowpass_h
#define Included_FilterResonantLowpass_h

/* FilterResonantLowpass module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* Memory */
/* FilterButterworthLowpass */
/* FilterButterworthBandpass */

struct ResonantLowpassRec;
typedef struct ResonantLowpassRec ResonantLowpassRec;

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

/* create a new filter record */
ResonantLowpassRec*				NewResonantLowpass(long LowpassOrder, long BandpassOrder);

/* dispose filter record */
void											DisposeResonantLowpass(ResonantLowpassRec* Filter);

/* adjust filter coefficients */
void											SetResonantLowpassCoefficients(ResonantLowpassRec* Filter,
														float Cutoff, float Bandwidth, float Gain, long SamplingRate);

/* apply filter to a sample value */
float											ApplyResonantLowpass(ResonantLowpassRec* Filter, float Xin);

#endif
