是否只有声音的API?
Allegro或SDL等API为我的需求提供了太多帮助。我只需要一个可以执行以下操作的库:
InitSound();
Sound *door = LoadSound("door.wav");
PlaySound(door,volume);
答案 0 :(得分:19)
我是SFML库的忠实粉丝。它确实提供了额外的图形和网络功能,但与此问题相关的是它还具有整洁的音频包。
音频功能包括:
网站: RF64
答案 1 :(得分:11)
使用PortAudio。它是一种可移植的跨平台音频API。
答案 2 :(得分:8)
如果您习惯使用OpenGL,那么您可能想尝试OpenAL?
API与OpenGL非常相似,所以你应该有宾至如归的感觉。
答案 3 :(得分:4)
答案 4 :(得分:2)
答案 5 :(得分:2)
我知道这是一个古老的问题,但是现在有人磕磕绊绊地想看看FMOD
您可以使用低级API开始简单,然后根据需要使用更强大的功能(和FMOD Studio)。
以下是播放声音的documentation,它引用了API中的示例:
这个例子展示了如何简单地加载和播放多个声音 最简单的FMOD用法。
我将这个低级API用于我开发的跨平台(Mac,Windows)Space Invaders克隆,发现它非常有用!
答案 6 :(得分:1)
如果您正在寻找专业的跨平台声音设计API和创作应用程序,请查看Audiokinetic Wwise。它可以做的不仅仅是播放声音。它具有效果,复杂的声音逻辑系统,声音分层,分析,交互式音乐工具等......它提供Ogg Vorbis和MP3支持,并且对于非商业项目是免费的。
答案 7 :(得分:1)
您可能需要查看Kowalski project,这是一个面向游戏和类似交互式应用程序的跨平台音频API。它是在zlib许可下发布的。
答案 8 :(得分:1)
虽然它只对非商业应用程序免费,但Bass非常容易实现。
使用示例:
// initialize device at 44kHz
if (!BASS_Init(-1,44100,0,0,NULL))
{
printf("Can't initialize device");
return 0;
}
HSAMPLE sample;
HCHANNEL channel;
// load from disk
if( sample = BASS_SampleLoad(FALSE,"foo.wav",0,0,1,BASS_SAMPLE_OVER_POS) ) {
// get playable channel
channel = BASS_SampleGetChannel( sample,FALSE);
// play
BASS_ChannelPlay(channel,TRUE);
// wait for playback to finish
while( BASS_ChannelIsActive( channel ) )
Sleep(100);
BASS_SampleFree(sample);
}
// cleanup
BASS_Free();
答案 9 :(得分:1)
考虑libsoundio。它不支持压缩或编解码器,但它确实提供了强大的跨平台声音API。它可能对您的需求有点低;您正在寻找的图书馆可能建立在libsoundio之上。
答案 10 :(得分:0)
尝试 libao http://www.xiph.org/ao/ - 非常简单&支持各种平台。我成功地尝试了覆盆子皮。