/* NLProc.h */

#ifndef Included_NLProc_h
#define Included_NLProc_h

/* NLProc module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* FixedPoint */
/* NonlinearProcSpec */
/* Memory */
/* WaveTableObject */
/* AlgoWaveTableObject */
/* SampleConsts */
/* FloatingPoint */
/* FastFixedPoint */
/* WaveIndexUtility */

#include "FixedPoint.h"

struct NLProcRec;
typedef struct NLProcRec NLProcRec;

/* flush free list elements */
void							FlushCachedNLProcStuff(void);

/* create a new nonlinear processor */
NLProcRec*				NewNLProcProcessor(struct NonlinProcSpecRec* Template,
										MyBoolean StereoFlag, float InverseVolume);

/* dispose of the nonlinear processor */
void							DisposeNLProcProcessor(NLProcRec* NLProc);

/* update nonlinear state with accent information */
void							UpdateNLProcState(NLProcRec* NLProc, float Accent1, float Accent2,
										float Accent3, float Accent4);

/* apply nonlinear processing to some stuff */
void							ApplyNLProc(largefixedsigned* Data, long NumFrames, NLProcRec* NLProc);

#endif
