我有一个double数组(大小超过60k条目),我有频率值。现在我想用C / C ++创建一个声音,我可以在扬声器上播放。我的操作系统是linux。
感谢。我希望我足够清楚。
答案 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。