用ALSA同步C代码

用ALSA同步C代码,c,linux,audio,raspberry-pi,alsa,C,Linux,Audio,Raspberry Pi,Alsa,我正在使用C.OS Linux动态生成声音样本。硬件是Raspberry Pi 3型号B。我需要将生成的样本写入与采样率同步的循环缓冲区。ALSA看起来相当复杂,所以我想象有一个标志或一些东西,我可以使用它来确保缓冲区不会溢出或不足。因此,如果我每秒使用48000个样本,我希望生成下一个样本,并在最后一个样本写入后的1/48000秒写入它。感谢您的建议,以及对优秀ALSA文档的参考。为防止不足,您应始终尽量保持缓冲区尽可能满 当设备处于(默认)阻塞模式时,会自动发生这种情况:当您尝试写入样本,但

我正在使用C.OS Linux动态生成声音样本。硬件是Raspberry Pi 3型号B。我需要将生成的样本写入与采样率同步的循环缓冲区。ALSA看起来相当复杂,所以我想象有一个标志或一些东西,我可以使用它来确保缓冲区不会溢出或不足。因此,如果我每秒使用48000个样本,我希望生成下一个样本,并在最后一个样本写入后的1/48000秒写入它。感谢您的建议,以及对优秀ALSA文档的参考。

为防止不足,您应始终尽量保持缓冲区尽可能满


当设备处于(默认)阻塞模式时,会自动发生这种情况:当您尝试写入样本,但环形缓冲区已满时,函数将休眠,直到有一些空间可用。因此,请尽可能快地编写示例。

在其他一些论坛上似乎有更多的答案。试试这个: