Audio 来自麦克风的OpenAL实时音频处理

Audio 来自麦克风的OpenAL实时音频处理,audio,real-time,signal-processing,openal,microphone,Audio,Real Time,Signal Processing,Openal,Microphone,我想编写一个跨平台的应用程序,可以实时处理和播放麦克风数据。想象一下,作为一个概念证明,人们可以在聊天室中相互交谈,并对自己的声音应用过滤器。OpenAL适合这样做吗?如果没有,有人能提供替代方案吗?此外,如果有人能提供或将我链接到一个简单的“hello world”程序,该程序可以从麦克风读取数据并将输出结果吐出来,那就太棒了 谢谢 苹果有两个(或更多)这样的样本。查看aurioTouch和SpeakHere。aurioTouch可以接收麦克风输入并回放,SpeakHere可以接收输入并录制,

我想编写一个跨平台的应用程序,可以实时处理和播放麦克风数据。想象一下,作为一个概念证明,人们可以在聊天室中相互交谈,并对自己的声音应用过滤器。OpenAL适合这样做吗?如果没有,有人能提供替代方案吗?此外,如果有人能提供或将我链接到一个简单的“hello world”程序,该程序可以从麦克风读取数据并将输出结果吐出来,那就太棒了


谢谢

苹果有两个(或更多)这样的样本。查看aurioTouch和SpeakHere。aurioTouch可以接收麦克风输入并回放,SpeakHere可以接收输入并录制,您可以非常轻松地修改它以回放。

根据API,OpenAL在技术上能够做到这一点,但苹果的iOS实现不包括音频捕获功能


在iOS上,您需要使用音频队列或音频单元进行录制。要应用实时效果,音频单元是一种可行的方法,尽管比音频队列复杂得多。

OpenAL可能不适合此用途。我建议使用SDL(可能与SDL_混音器一起使用)或PortAudio。两者都是跨平台的,并且都相当容易使用

要使用OpenAL实现此目的,您必须轮询以查看隐藏的循环缓冲区中累积了多少样本。然后,当你决定准备好的时候,你就把它们拿出来。然后应用过滤器。然后将过滤后的数据附加到缓冲区。然后将缓冲区排队到源上,并告诉源播放(除非它已经在播放)。在我看来,OpenAL的优势在于应用3D效果。它在实时过滤方面不是很好,尽管我希望如果您愿意接受输出上的更多延迟,您可以让它工作。对于过滤,我更喜欢回调模型而不是缓冲区对象模型



编辑:我在以下位置发布了一些代码:一条注释指出了处理的位置。

我对此也很感兴趣。可惜没有人回答=/