/* DelayLine.h */

#ifndef Included_DelayLine_h
#define Included_DelayLine_h

/* DelayLine module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* Memory */
/* FixedPoint */
/* DelayEffectSpec */
/* FilterFirstOrderLowpass */

#include "FixedPoint.h"

struct DelayLineRec;
typedef struct DelayLineRec DelayLineRec;

/* forwards */
struct DelayEffectRec;

/* flush cached delay line records */
void							FlushCachedDelayLineStuff(void);

/* create a new delay line processor */
DelayLineRec*			NewDelayLineProcessor(struct DelayEffectRec* Template,
										long FramesPerSecond);

/* dispose of the delay line processor */
void							DisposeDelayLineProcessor(DelayLineRec* Delay);

/* update delay line state with accent information */
void							UpdateDelayLineState(DelayLineRec* Delay, float Accent1, float Accent2,
										float Accent3, float Accent4);

/* apply delay processing to some stuff to stereo data */
void							ApplyDelayLineStereo(largefixedsigned* Data, long NumFrames,
										DelayLineRec* Delay);

/* apply delay processing to some stuff to mono data */
void							ApplyDelayLineMono(largefixedsigned* Data, long NumFrames,
										DelayLineRec* Delay);

#endif
