#include <exec/types.h>
extern SHORT sinewave[8][513];
extern UBYTE bitval[16];

/****************************************************************/
LONG AddWaves(LONG ampl[],SHORT control,BYTE wf[],UBYTE *ws)

/*  Create the compound waveform by adding the harmonics.  This      */
/*  routine is a likely candidate for future conversion to assembler */
/*  to speed things up.                                              */

{
	SHORT i,j;
	LONG wavebuff[513];
	LONG maxval,minval;

        for (j=0; j<513; j++) wavebuff[j]=0;
	
	for (i=0;i<8;i++)
	{
		if ((ampl[i]!=0)&&(control&bitval[i]))
                {
                   for (j=0;j<513;j++)
		   {
	           wavebuff[j]=wavebuff[j]+ampl[i]*sinewave[i][j];
		   }
                }
	}
	maxval=minval=0;
	for (j=0;j<513;j++)
	{
		 wf[j]=wavebuff[j]>>15;
		 if (wavebuff[j]>maxval) maxval=wavebuff[j];
		 if (wavebuff[j]<minval) minval=wavebuff[j];
	}
        if (ws != NULL)
        {
           i=0;
           for (j=0;j<129;j++)
           {
                 ws[j]=wf[i];
                 i += 4;
           }
        }
	if (abs(minval)>maxval) maxval=abs(minval);
	return(maxval);
}
