<分区>
<分区>
自 iOS 5 起,我们在 OpenAL 中支持混响效果,但我找不到任何使用此功能的好示例。我只找到了一些ObjectAL源代码的链接,但它太复杂了,无法理解混响效果的用法。 那么,如何使用OpenAL向iOS应用添加混响效果呢?
最佳答案
ObjectAL 代码库已经变得相当复杂,但在 OpenAL 方面,它实际上只是 C API 的一个大包装。混响的主要 Objective-C API 入口点是:
如果你想自己实现它,你首先需要像我在+[ALWrapper初始化]:https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectAL/ObjectAL/OpenAL/ALWrapper.m#L1363中那样绑定(bind)扩展函数。
所有混响功能的核心都是通过调用 alcASASetListener() 和 alcASASetSource() 来完成。如果您在 ALWrapper 中搜索这些函数,您会发现它只是将调用包装在 Objective-C 中(加上一些错误处理),而 ALSource 和 ALListener 正在包装它。在最低级别,它只是一堆此类调用:
alcASASetSource(ALC_ASA_REVERB_SEND_LEVEL, sourceID, &value, sizeof(value));
因此代码将始终遵循以下两条路径之一:
全局控件(通过监听器控制)是:
本地控件(通过源控制)是:
我还在这里写了一个小演示: https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectALDemo/Demos/ReverbDemo.m
据我所知,Apple 尚未发布太多文档,因此您最好的选择是克隆存储库、构建演示并使用 API,直到您了解它的工作原理一起。然后,需要将您使用 ObjectAL 所做的事情转换为对 alcASASetListener() 及其 friend 的实际调用,但这些应该是非常直接的转换,因为它最终只是包装代码。
关于ios - 在 iOS 中使用 OpenAL 进行混响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12782758/
相关文章:
ios - 在应用程序关闭之前,Core Data 不会保存数据
iphone - AudioSession 实际上和 OpenAL 是一样的吗?
iphone - OpenAL 泄漏- OALSource :AddPlaybackMessage
ios - 为什么当我返回时我的主视图 Controller 不更新?
iphone - iOS : SA_OAuthTwitterController callback after authorization
java - 如何将音频流式传输到 OpenAL Sources?
IOS 8 : Real Time Sound Processing and Sound Pitching - OpenAL or another framework