在 Unix 上输出自制合成声音的简单方法是什么?
我想使用 ANSI C 在 Mac OS X(最好是其他类 Unix 操作系统)上进行一些声音合成。
这是出于学习目的,而不是“我需要一个解决方案,任何解决方案,快点!”
假设我的 C 程序中有一个 8 位缓冲区,每秒更新 22050 次。如何让我的扬声器将其输出为波形?
I want to do some sound synthesis on Mac OS X (and ideally other Unix-like OS) using ANSI C.
This is for learning purposes rather than "I need a solution, any solution, quick!"
Say I have an 8-bit buffer in my C program that I update 22050 times a second. How can I get my speakers to output that as a waveform?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
SDL 可以播放声音缓冲区。但是PortAudio可能工作得更好,PA会在需要更多数据时调用你的C回调,然后你可以将下一个缓冲区交给它。实际上这相当容易。
SDL can play sound buffers. But PortAudio may work better PA will call your C callback when it needs more data, and then you can hand it the next buffer. It's fairly easy actually.
没有 POSIX 音频 API 或类似的东西。因此,如果您想要在 Linux、OSX 等上支持声音,您需要一个包含不同操作系统的本机声音 API 的库。看看这个SO问题。它不是直接询问 OSX,但大多数答案也应该适用于它,除了 libao。至少我在他们的主页上没有找到任何表明他们支持 OSX 的内容。
There is no POSIX audio API or something similar. So if you want sound support on Linux, OSX, etc. you need a library that wraps around the native sound APIs of the different OSs. Take a look on this SO question. It's not asking directly for OSX, but most of the answers should also work for it, except maybe libao. At least I haven't found anything on their homepage, that says they support OSX.