Articles of OpenAL的

如何在Windows中分发MonoGame游戏?

我使用VS2013和MonoGame来创建一个简单的游戏。 事情是我不能让其他个人电脑上运行。 我试图使用VS2013中的“始终复制”选项将内容复制到发布文件夹; 我已经尝试将OpenAL和wrap_oal DLL添加到Release文件夹,但它不工作; 我试图用VS2013的这个function发布游戏,但都没有成功。 我忘了什么吗? 编辑:我使用OpenGL模板(我试过的DirectX,但有同样的问题)。

使用LWJGL和OpenAL创建一个播放列表

我想知道如何为我的游戏中的音乐创建一个播放列表。 我使用LWJGL,并知道一些OpenAL,但我不知道如何testing歌曲结束。 我希望能够连续播放一首歌曲,而且我希望不用为每首歌曲编写一个定时器。

OpenAL可以和Python一起使用吗?

我从使用OpenAL和其他语言的背景出发, 而且我正在从Python获益很多的项目。 我记得PyAL,但自2013年以来一直没有更新,我的电脑甚至找不到要下载的软件包的副本。 我也知道这样的相对边缘软件包,比如alpy和python-openal; 但是如果他们没有维护,我还是犹豫不决。 (不能确定。) 有没有提供Python绑定到OpenAL的库? 还是我只需要写我自己的,或者与其他非3D声音的包装一起制作? 如果得到它比点更复杂,我将如何去做呢? 谢谢。

OpenAL似乎忽略了长时间声音的声音沉淀/定向

我不知道如何在标题中描述它,抱歉。 我的声音引擎目前完美地与聆听者的定位和声音定位,以创建沉淀和平移效果。 至less,简短的声音。 我将.mp3转换成了.wav格式,以testing从某一特定点播放歌曲,但突然OpenAL忽略了声音和聆听者不在同一个地方,只是在整个音乐中心播放歌曲。 有没有人曾经有过这个问题? 如果是这样, 那么问题是什么 ? 编辑:如果有帮助,歌曲是立体声,声音是单声道,全部在每个样本16位。

Opentk在商业上使用Openal的法律启示

我和我的朋友正在制作一款游戏,我们计划在游戏完成后出售游戏。 我们正在使用opentk。 我读过这个: http : //www.opentk.com/node/532 ,它很好地描述这是完全合法的。 不过,我们正在使用opentk附带的openal标准。 openal所属的许可证有些模棱两可,我在某些地方读到它在LGPL之下,而在其他地方则没有。 我也听说过一个“开放的软”。 我不完全确定它们有什么区别,哪些包含在opentk中,以及我被允许做什么,而不是做什么。 我们是否允许在程序中包含openal安装程序,以便程序能够正确启动用户? 或者这会招致可能的法律影响? 另外,我们是否需要在游戏中包含关于openal及其使用的法律信息? 或者我们罚款简单地使用它? 对不起所有的问题,并感谢任何人和每个人的回应,并阅读此,为您的时间。

如何防止在OpenAL的每个声音播放结束时单击?

我已经组建了一个基本的声音处理程序类用于我的游戏。 它使用OpenAL。 这是一个简单的方法来播放声音 – 这是一个开关块的摘录: case "EATEN_PILL": wavPath = "D:\\Programming\\SFX\\EATEN_PILL\\Hit_43.wav"; ALfilename = Path.Combine(Path.Combine("Data", "Audio"), wavPath); sound_data = LoadWave(File.Open(ALfilename, FileMode.Open), out channels, out bits_per_sample, out sample_rate); buffer_EATEN_PILL = AL.GenBuffer(); AL.BufferData(buffer_EATEN_PILL, GetSoundFormat(channels, bits_per_sample), sound_data, sound_data.Length, sample_rate); AL.Source(source, ALSourcei.Buffer, buffer_EATEN_PILL); AL.SourcePlay(source); break; 问题:1.每个声音结尾都有一个烦人的点击。 最终声音完全停止播放。 这是在播放了100个声音之后。 有没有人遇到过这个问题?

如何遍历ogg vorbisstream的一部分?

我成功地使用Java库JOrbis将ogg vorbis数据stream式传输到openAL,但是现在我想要遍历该stream的一部分,例如从30“到1'30”。 我认为在循环结束时,我可以从文件开头重新编码,跳过不需要的部分,然后保持stream式传输直到循环结束,然后重新启动。 但是我并没有真正相信这种方法,例如,如果我想循环4'和4'30“,我将需要解码每个循环4分钟的ogg数据为空。 另一种方法是把所有的循环放在内存中,但不会再stream入,我想避免这种情况。 那么有没有一种方法可以达到一个ogg vorbisstream中的一个点而不需要每次解码以前的数据呢? ogg是否包含一种可以使用的索引,或者可以通过解码整个文件之前做一个? 谢谢 (ps:我不能给这个问题正确的标签,因为我还没有150代表)

OpenAL – alGetSourcei和AL_BUFFERS_PROCESSED给垃圾

这个问题发表在SO上,但没有得到答案。 也许有人可以帮助我。 最近我有一个工作良好的程序,用OpenAL传送WAV和Ogg的声音。 然后我决定将源和缓冲区对象抽象成C ++类。 我得到了远程源代码。 我返回处理缓冲区数的函数不会改变传递给alGetSourcei的整数。 int ALSource::GetBuffersProcessed() const { ALint processed; alGetSourcei(this->source, AL_BUFFERS_PROCESSED, &processed); int error = alGetError(); if(error != AL_NO_ERROR) return -1; return processed; } 我检查了这个error绝不是AL_NO_ERROR 。 我在构造函数中生成源代码: alGenSources(1, &source); 这也从来没有给出任何错误。 这是实际的症状是processed声明,但没有初始化。 它的最终价值是最初的垃圾价值。 (通常像-8834824334)。 这是预期的行为? OpenAL规范规定,值应该从0 – any但不是特别的具体。 程序员指南是一样的。

我应该如何解除和删除OpenAL缓冲区?

我正在使用OpenAL播放声音。 我试图实现一个“即燃即用”播放函数,该函数接收一个缓冲区ID并将其分配给之前分配的池中的一个源,然后播放它。 但是,物体寿命存在问题。 在OpenGL中,删除函数会自动解除绑定(例如纹理),或者在最终解除绑定时自动删除(比如着色器),所以通常很容易管理删除操作。 但是,如果缓冲区仍然绑定到一个源,则AL_INVALID_OPERATION只会失败并AL_INVALID_OPERATION 。 有没有一种惯用的方法来“删除”OpenAL缓冲区,让他们完成播放,然后自动解除绑定,真的呢? 是否需要将缓冲区管理更深入地绑定到源池中(例如,删除缓冲区还需要检查所有已分配的源)? 同样,有没有一种习惯的方式来解除(但不是删除)缓冲区时,他们完成播放? 如果当我在寻找一个免费的源代码的时候,我只需要看看是否连接了一个缓冲区,而不需要检查源代码状态。 (我正在使用C ++,尽管C的方法也没有问题,假设使用GCd语言和使用终结器的方法可能不适用。

我在哪里可以得到c ++的openal sdk?

我所看到的OpenAL网站是一个糟糕的过时和破碎的共享点门户网站,下载部分的SDK给我一个500个HTML代码,当我要求它。 http://connect.creativelabs.com/openal/Downloads/OpenAL11CoreSDK.zip 我在softpedia上find了一个OpenAL SDK,它有头文件,但不是alu.h或alut.h,我正在看的这些教程显然需要加载wavs等。 我错过了什么? OpenAL死了还是什么?