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