是否有任何C ++(LGPL或LGPL)声音库可以让我通过纯粹指定频率和音量等内容来播放声音?
我的目标平台是Linux / Ubuntu,我并不关心跨平台。
如果我可以发送声音数组并且它能够将其压缩成普通的声音文件(例如mp3),那将是很好的。
我正在寻找类似OpenGL的东西,你可以在那里'画'声音,然后播放。 我听说过OpenAL,但它似乎只是一个用于加载和播放声音的库。
答案 0 :(得分:6)
大多数简单和低级音频库(例如OpenAL,SDL等)都可以非常轻松地播放PCM波形。您使用要播放的wave填充缓冲区并播放它。要从频率和音量以及诸如此类的东西制作波形,你需要编写一些代码(对于简单的波可能是几行)并且需要知道基本的三角函数。
OpenAL是一款面向3D游戏的跨平台API。它的界面在哲学上类似于OpenGL,并提供管理虚拟3D环境(位置,速度等)中的音频源的功能,并提供一些声音和环境效果(混响等)我知道它可以解码一些压缩格式( MP3,Vorbis,...)使用扩展,但我不确定它是否具有任何编码功能。
SDL(或简单直接媒体层)也是跨平台和面向游戏的,但它提供的不仅仅是音频。但它提供的任何功能都是非常基本的,这是故意的和设计的。 SDL是一个平台抽象层。它的音频功能同样非常基础和低级别;仅提供播放和录制PCM波。当然,有扩展库(例如SDL_mixer)具有更多功能。
参考文献:
据我所知,这两个项目都附带了文档和示例及其源代码,因此您可能需要获取源代码并开始试验。
如果我已经理解你想要正确做什么,这些库中的任何一个都可以很容易地做你想要的,但在我个人看来,SDL更简单易用(除非你想要3D定位音频和效果。 )