BASS 简介
BASS是一个在多个平台上用于软件的音频库。其目的是为开发人员提供功能强大且高效的示例流(MP3,MP2,MP1,OGG,WAV,AIFF),MOD 音乐(XM,IT,S3M,MOD ,MTM,UMX),MO3 音乐(MP3 / OGG压缩MOD)和录音功能。提供了 C / C ++,Delphi 和 Visual Basic API,适用于Android,iOS,Windows Store / Phone,WinCE 和 ARM Linux 平台。
BASS 对于非商业用途是免费的。如果您是非商业实体(例如个人),并且您没有从您的产品(通过销售,广告等)赚钱,那么您可以免费使用BASS。
你可以在这个链接 http://www.un4seen.com 下载 BASS:
这次的播放器就是使用 BASS 播放音频文件,下载 BASS 后将文件 bass.lib、bass.dll 和 bass.h 拷贝到项目即可。
使用 BASS
配置好并引入头文件 bass.h 后,通过以下代码播放音频文件:
BASS_Init(-1, 44100, 0, 0, nullptr); HSTREAM stream = BASS_StreamCreateFile(FALSE, "filename", 0, 0, 0); BASS_ChannelPlay(stream, FALSE); /* 播放结束 */ //BASS_StreamFree(stream);
进度调节:
/* 获取播放进度 */ double pos = BASS_ChannelBytes2Seconds(stream, BASS_ChannelGetPosition(stream, BASS_POS_BYTE)); /* 设置播放进度 */ BASS_ChannelSetPosition(stream, BASS_ChannelSeconds2Bytes(stream, pos), BASS_POS_BYTE);
音量调节:
/* 设置 stream 音量,0 - 10000 */ BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 200); /* 获取 stream 音量,0 - 10000 */ BASS_GetConfig(BASS_CONFIG_GVOL_STREAM);
/* 获取系统音量 */ float volume = BASS_GetVolume(); /* 设置系统音量 */ BASS_SetVolume(volume);
获取频谱数据:
static float fft[128]; BASS_ChannelGetData(stream, fft, BASS_DATA_FFT256);
获取播放状态:
DWORD result = BASS_ChannelIsActive(stream); switch ( result ) { case BASS_ACTIVE_PAUSED: return PS_Paused; case BASS_ACTIVE_PLAYING: return PS_Playing; case BASS_ACTIVE_STOPPED: return PS_Stopped; }
以上是这次播放器用到的 BASS API,详细内容可以查看 BASS 帮助文档,也可以阅读 BASS 演示源码。
BASS 封装
将 BASS API 封装成一个类,从而管理所有的音频文件。可以设计一个单例类 SoundManager,以便在任何位置实现音频文件的管理。由于播放器不需要复杂的功能,所以将上面的 BASS API 进行添加到单例类中即可。
详细内容请参考源码。
源码下载:Simple2D-14.rar