如何从双数组创建声音并在扬声器上播放

时间:2010-10-14 21:33:09

标签: c++ c linux audio

我有一个double数组(大小超过60k条目),我有频率值。现在我想用C / C ++创建一个声音,我可以在扬声器上播放。我的操作系统是linux。

感谢。我希望我足够清楚。

4 个答案:

答案 0 :(得分:2)

http://www.linuxjournal.com/article/6735

这是Linux Journal中关于使用ALSA(Advance Linux Sound Architecture)进行编程的文章的链接。它包含一些示例代码。

答案 1 :(得分:2)

以下信息来自名为beep的命令行程序,可在Debian中找到。源代码可通过存储库获得,也可用here

有一个ioctl()调用带有对控制台设备的KIOCSOUND请求,您可以通过PC扬声器播放声音。摘录如下:

ioctl(fd, KIOCSOUND, CLOCK_TICK_RATE/(int)frequency);

播放频率为frequency的声音,并且:

ioctl(fd, KIOCSOUND, 0);

停止发出哔哔声。 fd是具有/dev/console写入权限的文件描述符,frequency是声音频率,以赫兹为单位。常量CLOCK_TICK_RATE与用于产生蜂鸣声的定时器芯片有关,而beep源代码中的常量芯片的值为1193180(赫兹)。虽然这对你的系统可能有所不同,但如果我的想法是正确的,我记得在使用PC扬声器的旧DOS程序中看到了这个相同的常量。

答案 2 :(得分:1)

Qt库对于您想要做的事情可能有些过分,可能有一个更简单的选择,但它是 选项:)

你应该可以使用QAudioOutput课来做你想做的事。

答案 3 :(得分:1)

另外两个要看的是SDL和SFML。