Я пытался создать звуковой сигнал с использованием ALSA. 2 звуковых сигнала должны быть сгенерированы, второй - после задержки 1 секунды. Мой код выглядит следующим образом.snd_pcm_writei не работает после задержки
if ((err = snd_pcm_prepare (playback_handle)) < 0) {
printf("cannot prepare audio interface for use \n");
return -1;
}
for (i = 0; i < TABLE_SIZE; i ++){
samples[i] = 100*sin(2.0*pi*f*(i/44100.0));
if ((err = snd_pcm_writei (playback_handle, &samples[i], 4)) != 4) {
printf("write to audio interface failed \n");
return -1;
}
}
//snd_pcm_drain(playback_handle);
printf("ending beep !!! \n");
sleep(1);
if ((err = snd_pcm_prepare (playback_handle)) < 0) {
printf("cannot prepare audio interface for use \n");
return -1;
}
for (i = 0; i < TABLE_SIZE; i ++){
samples[i] = 100*sin(2.0*pi*f*(i/44100.0));
if ((err = snd_pcm_writei (playback_handle, &samples[i], 4)) != 4) {
printf("write to audio interface failed \n");
return -1;
}
}
Здесь звучит первый звуковой сигнал, но второй звуковой сигнал не в порядке. Может ли кто-нибудь помочь мне с этой проблемой.
Что происходит после кода, который вы указали? –
После показанного фрагмента кода я закрываю play_handle. –