2010-06-13 59 views
2

我正在开发音乐游戏,它就像一个星星,但不是唱歌,你必须玩recorder。它叫做oFlute,它还处于早期发展阶段。Linux,C++音频捕捉(只​​是麦克风)库

在游戏中,我捕捉麦克风输入,然后运行简单的FFT分析并将结果与​​典型录音机的频率进行比较,从而得到播放的音符。

在开始时,我使用的音频库是RtAudio,但我不记得为什么我切换到PortAudio,这是我目前使用的。 问题是,它随时会随机崩溃或停止捕获,就像麦克风没有声音一样。

我的问题是,什么是在Linux上捕获麦克风输入的最佳选择?我只需要打开,读取和关闭麦克风的字节流。

我一直在读this guide,和(联合国)令人惊讶地说:

我不认为PortAudio是类Unix操作系统非常好的API。

那么,你有什么建议我?

回答

6

考虑到其他选项,PortAudio是一个奇怪的选择。

我个人会抽出一切,并使用GStreamer。音频在Linux上可能是一个可怕的混乱(作为一个长期受害者)。让Gstreamer处理这件事,可以让你忘记它,继续前进,而不必再考虑它。

OpenAL可能是游戏开发中最受欢迎的游戏,它应该支持大多数系统(虽然你“有趣”,让它与PulseAudio玩的很好)。

我一定会确保你正在开发最流行的设置(现在是PulseAudio,我认为),所以你不会因为你释放的情况而陷入困境人们呻吟声的声音不起作用。

不要听PulseAudio的废话 - 它可能是新的,它可能比准系统ALSA系统占用更多的资源,但它肯定不会涉及延迟问题。要求人们删除它并不是现代桌面发行版的一种选择,因为它是如此紧密集成(也很实用)。

+0

好吧,我会给Gstreamer一个尝试。 – 2010-06-13 22:35:27

+0

最后,我用pulseaudio简单的api解决了问题,它效果很好。 – 2010-08-13 15:22:34

+0

Gstreamer是开发者的最佳选择。因为在这个框架上你可以制作CD/DVD质量的音频。这意味着你可以在48KHz到192KHz的范围内进行试验。是的,我正在努力学习它。 – YumYumYum 2010-12-09 14:38:39