Возникла необходимость из программы воспроизводить звуки заданной частоты. Использую примерно такой код:
int fd = open("/dev/dsp",O_WRONLY,0);
ioctl(fd, SNDCTL_DSP_RESET, NULL);
ioctl(fd, SNDCTL_DSP_NONBLOCK, NULL);
int stereo = 0;
ioctl(fd, SNDCTL_DSP_STEREO, &stereo);
int rate = 22050;
ioctl(fd, SNDCTL_DSP_SPEED, &rate);
int nchans = 1;
ioctl(fd, SNDCTL_DSP_CHANNELS, &nchans);
int format = AFMT_U8;
ioctl(fd, SNDCTL_DSP_SETFMT, &format);
DWORD numSamples = rate;
unsigned char *samples = new unsigned char[numSamples];
for(DWORD i=0; i<numSamples; i++)
samples[i] = BYTE(128+127*sin(2*M_PI*i*1000/double(rate)));
int res;
res = write(fd, samples, numSamples);
//Воспроизведение второй раз - если без паузы, то щелчков не будет
res = write(fd, samples, numSamples);
Как можно исправить? Чего не хватает?