问题标签 [openal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
8910 浏览

c++ - 游戏开发声音框架

我正在与一个团队合作,该团队正在为各种 2D 以及最终的 3D 迷你游戏构建引擎。我们面临的问题是一个可靠的、跨平台的、健全的 API。显然,由于我们对跨平台功能的需求,DirectX 是不可能的。SDL 很好,而且效果很好,但让我们面对现实吧,SDL_Mixer 的功能有限。我们目前正在使用它,但是当我们最终扩展到 3D 时,这将是一个问题。

我一直在搞乱 OpenAL,但我发现的大多数文档都已经过时了,而且似乎并没有那么好用。我愿意学习 OpenAL,并努力通过它,但我想更确定一点,我不会浪费我的时间。不过,除了 DevMaster 教程之外,我还没有看到太多让我大吃一惊的文档。如果有人有比我找到的更好的材料,那就太棒了。

我还看到了诸如 FMOD 之类的项目,尽管获得了许可,但它似乎还不错。但是,与 OpenAL 一样,它们几乎没有文档。当然,我可以倾注代码来推断我的选择,但考虑到我最终可能会为此付出代价,这似乎有点痛苦。

无论如何,想法,评论,担忧?非常感谢!

0 投票
3 回答
2539 浏览

java - 我在哪里可以找到 LWJGL 的示例用法?

我在 lwjgl.org 上看过官方演示,但我希望看到更多教程级别的示例。

0 投票
5 回答
63376 浏览

iphone - 使用 OpenAL 将音频转换为 CAF 格式以便在 iPhone 上播放

我在 CrashLanding 示例中使用来自 Apple 的 SoundEngine 示例代码来播放多个音频文件。使用 CrashLanding 中包含的示例 caf 文件一切正常,但是当我尝试使用我自己的使用 afconvert 转换为 CAF 的示例时,我得到的只是石质的沉默;)

有没有人有 afconvert 的设置,可以生成能够通过 OpenAL 播放的 CAF 文件?

0 投票
2 回答
1503 浏览

c++ - 复音播放

我需要具有以下功能的音频播放:良好的性能(用于游戏)、音高控制以及同时多次分层相同样本的能力(复音)。在 iphone sdk 上获得这个的快速方法是什么?


这是我到目前为止发现的:

没有可用的库或示例代码可以做到这一点,请告诉我错了。

SoundEngine.cpp(来自 CrashLanding 和 TouchFighter 代码示例)使用 OpenAL 并允许控制音高,但每次启动缓冲区时,如果正在播放相同的缓冲区,则其播放头会回到开始处。

使用 SoundEngine.cpp 获得复音的一种肮脏的解决方案是为同一个声音文件加载多个缓冲区,而不深入研究其实现(这对我来说是不可理解的)。假设我想要每个声音最多 4 个复音,然后我为同一个文件加载 4 个缓冲区。我只需要将它全部包装在一个经理类中。走这条路安全吗?和/或有没有办法将 SoundEngine.cpp 破解为复音?

0 投票
6 回答
9032 浏览

c++ - 开源声音引擎

当我开始使用 SoundEngine(来自 CrashLanding 和 TouchFighter)时,我读过一些人建议不要使用它,因为根据他们的说法,它不够稳定。它仍然是我所知道的在不学习 C++ 和 OpenAL 的情况下通过音高和位置控制播放声音的唯一解决方案,所以我忽略了警告并继续使用它。

但现在我开始担心了。2.2 SDK 引入了 AVFoundation。使用 CrashLanding 中的 SoundEngine(用于声音)和 AVAudioPlayer(用于音乐),我发现 SoundEngine 在释放唯一现有的 AVAudioPlayer 时表现得很奇怪(所有声音都会停止,直到启动新的 AVAudioPlayer)。大约在 2.2 SDK 发布的同时,CrashLanding 示例代码被神秘地从 ADC 站点中删除。我担心会有更多不好的惊喜出现。

我的问题是,有人知道 SoundEngine 的开源替代品吗?甚至可能是使用 OpenAL 的 C++ 库?

0 投票
2 回答
348 浏览

iphone - 将框架复制到项目中?

尝试将框架复制到 Xcode 中项目的 Frameworks 文件夹中时,出现错误

无法将 /Developer/Platforms/.../Frameworks/OpenAL.framework 复制到 /Users/.../OpenAL.framework

之前不小心把同名的框架错了复制到项目里,删掉了,现在不能复制正确的了?在复制适当的版本之前,如何完全摆脱错误的版本?

提前致谢!

0 投票
2 回答
1391 浏览

audio - 一个人如何多次跳转到特定的偏移量?

想象一下这个函数:

这个想法是调用playSource(x, 0.5f)会跳转到(大约)缓冲区的一半,等等。

我第一次调用它时它工作正常,但如果我在同一个源上再次调用它(无论该源是否正在播放)它开始播放就好像我用偏移量 0 调用它一样。

任何想法为什么?

0 投票
1 回答
1519 浏览

iphone - 使用 openAL 的 iPhone 应用程序可以在模拟器中运行,但不能在设备上运行

我将 openAL 框架添加到我的应用程序中,并且我正在使用演示 CrashLanding 中的声音引擎。它在模拟器上工作得很好,但是当我为我的设备构建它时,我得到了错误。好像没有添加框架。我试过:重启xcode;删除框架并重新添加;清洁目标;重新启动计算机。它仍然可以在模拟器上运行,但设备设置甚至无法编译。有没有人有任何其他想法或者我做错了什么?

这是一个更具体的错误,现在有 17 个:

“_alSourcePlay”,引用自:

SoundEngine.o 中的 SoundEngineEffect::PlaybackProc(void*)

SoundEngine.o 中的 SoundEngineEffect::Start()

此外,CrashLanding 在我的设备上运行良好。

0 投票
1 回答
583 浏览

python - 使用 PyOpenAL 时正确的清理方法是什么?

我正在使用 Python 寻找 PyOpenAL 的一些声音需求(显然)。文档很少(由一个演示脚本组成,未经修改就无法工作),但据我所知,有两层。OpenAL 调用的直接包装和轻量级的“pythonic”包装器——我关心的是后者。具体来说,如何正确清理?如果我们举一个小例子:

实际上,一条消息按照“一个源未删除,一个缓冲区未删除”的行打印到终端上。但我假设我们不能对这些对象使用本机 OpenAL 调用,那么我该如何正确清理呢?

编辑:

我最终放弃了 pyopenal 并在 OpenAL 和 alure 上编写了一个小的 ctypes 包装器(pyopenal 公开了直接的 OpenAL 函数,但我一直得到 SIGFPE)。仍然好奇我应该在这里做什么。

0 投票
9 回答
10481 浏览

iphone - 如何在 iPhone 上编写实时准确的音频音序器?

我想在 iphone 上编写一个简单的音频音序器,但我无法获得准确的时间。最近几天我在 iphone 上尝试了所有可能的音频技术,从 AudioServicesPlaySystemSound 和 AVAudioPlayer 和 OpenAL 到 AudioQueues。

在我最后一次尝试中,我尝试了 CocosDenshion 声音引擎,它使用 openAL 并允许将声音加载到多个缓冲区中,然后在需要时播放它们。这是基本代码:

在里面:

在初始化中,我创建了声音引擎,将一些声音加载到不同的缓冲区,然后使用 NSTimer 建立音序器循环。

音频循环:

就是这样,它可以正常工作,但是时间不稳定且不稳定。一旦发生其他事情(例如在视图中绘制),它就会不同步。

据我了解声音引擎和 openAL 缓冲区已加载(在 init 代码中),然后准备立即开始alSourcePlay(source);- 所以问题可能出在 NSTimer 上?

现在应用商店里有几十个音序器应用程序,它们都有准确的时间。即使在 180 bpm 的缩放和绘图完成时,Ig "idrum" 也具有完美的稳定节拍。所以必须有解决办法。

有人知道吗?

提前感谢您的帮助!

此致,

瓦尔基


感谢您的回答。它让我更进一步,但不幸的是没有达到目标。这是我所做的:

在初始化中,我存储下一个节拍的时间并创建一个新线程。

在序列循环中,我将线程优先级设置得尽可能高,然后进入无限循环。播放完声音后,我计算下一个节拍的下一个绝对时间,并让线程进入睡眠状态,直到此时。

这再次起作用,并且它比我在没有 NSThread 的情况下的尝试更稳定,但如果发生其他事情,它仍然不稳定,尤其是 GUI 的东西。

有没有办法在 iPhone 上使用 NSThread 获得实时响应?

此致,

瓦尔基