/* BuildInstrument3.h */

#ifndef Included_BuildInstrument3_h
#define Included_BuildInstrument3_h

/* BuildInstrument3 module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* BuildInstrument */
/* BuildInstrument2 */
/* CompilerScanner */
/* LFOSpecifier */
/* LFOListSpecifier */
/* FilterSpec */
/* DelayEffectSpec */

#include "BuildInstrument.h"
#include "FilterSpec.h"

/* structure prototypes */
struct InstrumentRec;
struct ScannerRec;
struct LFOSpecRec;
struct OscillatorRec;
struct EnvelopeRec;
struct SampleSelectorRec;
struct EffectSpecListRec;
struct SampleListRec;
struct AlgoSampListRec;
struct WaveTableListRec;
struct AlgoWaveTableListRec;
struct DelayEffectRec;
struct DelayTapRec;
struct NonlinProcSpecRec;
struct FilterSpecRec;
struct OneFilterRec;
struct LFOListSpecRec;


/* parse function prototypes */
BuildInstrErrors						ParseOscFilterOutLFOList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscBandwidthLFOList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscFiltFreqLFOList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscFilterElem(struct FilterSpecRec* FilterSpec,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscFilterElems(struct FilterSpecRec* FilterSpec,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseNLIndexLFOList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseNLOutputScalingLFOList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseNLInputScalingLFOList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscDelayCutoffLfoList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscDelayScaleLfoList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscDelayTargetLfoList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscDelaySourceLfoList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscDelayElem(struct DelayEffectRec* DelayEffect,
															struct DelayTapRec* DelayTap, struct ScannerRec* Scanner,
															long *ErrorLine, unsigned long* OnceOnlyDefinitions,
															long Index, struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);
BuildInstrErrors						ParseOscGainLFOList(struct LFOListSpecRec* LFOList,
															struct ScannerRec* Scanner, long *ErrorLine,
															struct WaveTableListRec* WaveTableList,
															struct AlgoWaveTableListRec* AlgoWaveTableList);

#endif
