Little example for you. phase has to be calculated for the delay of your echo (sps*delay, i.e. 44000 samples per second * 0.5 seconds delay -> phase = 22000).
void addecho(int* pcm_databuffer,unsigned int pcm_datalength,unsigned int phase,double damping)
{
int* pcm_databuffer_with_echo = new int[](pcm_datalength+phase);
unsigned int i,j;
for(i=0;i<phase;i++)>
{
pcm_databuffer_with_echo[i] = pcm_databuffer[i];
}
for(j=0;i<pcm_datalength;i++,j++)>
{
pcm_databuffer_with_echo[i] = pcm_databuffer[i] +
(int)((double)pcm_databuffer[j]*damping);
}
for(;j<pcm_datalength;i++,j++)>
{
pcm_databuffer_with_echo[i] = (int)((double)pcm_databuffer[j]*damping);
}
PumpToDevice(pcm_databuffer_with_echo,pcm_datalength+phase);
delete [] pcm_databuffer_with_echo;
}
Good luck.