
typedef enum channel {MONO_LEFT,MONO_RIGHT,MONO_BOTH,STEREO,STEREO_LEFT,
		 STEREO_RIGHT,STEREO_LEFT_BOTH,STEREO_RIGHT_BOTH,
		  UNSPECIFIED} channel;

struct IOAudio *GetAudioChannel(ULONG bufferSize,UBYTE *allocationMap);
void FreeAudioChannel(struct IOAudio *aIOB);
void InitAudioChannel(struct IOAudio *aIOB,UWORD volume,UWORD period);
struct IOAudio *DuplicateAudioChannel(struct IOAudio *OrigIOB);
void DeleteDuplication(struct IOAudio *aIOB);
ULONG LoadAudioBuffer(BPTR file,struct IOAudio *aIOB,ULONG toRead);
char *FindChunk(BPTR file,char *string);
void Position(BPTR file,char *string);
void WriteMsg(char *errMsg);
void playMonoSample(BPTR file,channel audioChannel,struct Voice8Header *vhdr,
		    ULONG len);
void playStereoSample(BPTR leftFile,channel audioChannel,
		      struct Voice8Header *vhdr, ULONG length, char *filename);
void playMonoTwice(BPTR file,channel audioChannel,struct Voice8Header *vhdr,
		   ULONG length);
BPTR dupFileHandle(BPTR origFile,char *filename);
ULONG getPosInFile(BPTR file);
void cleanup(int err);

/* Mem.c */
void storeLeft(BPTR file,ULONG length,ULONG blockLength);
void deleteLeft(void);
void getLeft(APTR dest);

void storeRight(BPTR file,ULONG length,ULONG blockLength);
void deleteRight(void);
void getRight(APTR dest);

typedef struct Voice8Header
{
   ULONG oneShotHiSamples,
	 repeatHiSamples,
	 samplesPerHiCycle;
   UWORD samplesPerSec;
   UBYTE ctOctave,sCompression;
   LONG volume;
};

#define MIN(x,y) ( (x) < (y) ) ? (x) : (y)

