Simple2D-18(音乐播放器)使用 bass 音频库
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(-, , , , nullptr);
HSTREAM stream = BASS_StreamCreateFile(FALSE, "filename", , , );
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, ); /* 获取 stream 音量,0 - 10000 */
BASS_GetConfig(BASS_CONFIG_GVOL_STREAM);
/* 获取系统音量 */
float volume = BASS_GetVolume(); /* 设置系统音量 */
BASS_SetVolume(volume);
获取频谱数据:
static float fft[];
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
Simple2D-18(音乐播放器)使用 bass 音频库的更多相关文章
- Swift - 制作一个在线流媒体音乐播放器(使用StreamingKit库)
在之前的文章中,我介绍了如何使用 AVPlayer 制作一个简单的音乐播放器(点击查看1.点击查看2).虽然这个播放器也可以播放网络音频,但其实际上是将音频文件下载到本地后再播放的. 本文演示如何使用 ...
- Simple2D-17(音乐播放器)嵌入 ImGui 库
要把 ImGui 应用到项目中,先拷贝方框中的源文件到项目: 这些文件是 ImGui 的实现源码,可作为第三方库新建一个文件夹进行放置. 接下来是渲染部分的代码,项目可能使用 DirectX 或 Op ...
- Simple2D-15(音乐播放器)使用 glfw 库
glfw 是一个专门针对 OpenGL 的 C 语言库,它提供了一些渲染物体所需的最低限度的接口.它允许用户创建 OpenGL 上下文,定义窗口参数以及处理用户输入. 这次打算使用 GLFW 替代掉 ...
- iOS开发拓展篇—音频处理(音乐播放器1)
iOS开发拓展篇—音频处理(音乐播放器1) 说明:该系列文章通过实现一个简单的音乐播放器来介绍音频处理的相关知识点,需要重点注意很多细节的处理. 一.调整项目的结构,导入必要的素材 调整后的项目结构如 ...
- Android音乐播放器的设计与实现
目录 应用开发技术及开发平台介绍 应用需求分析 应用功能设计及其描述 应用UI展示 一.应用开发技术及平台介绍 ①开发技术: 本系统是采用面向对象的软件开发方法,基于Android studio开发平 ...
- iOS开发拓展篇—音频处理(音乐播放器2)
iOS开发拓展篇—音频处理(音乐播放器2) 说明:该文主要介绍音乐播放界面的搭建. 一.跳转 1.跳转到音乐播放界面的方法选择 (1)使用模态跳转(又分为手动的和自动的) (2)使用xib并设置跳转 ...
- iOS开发拓展篇—音频处理(音乐播放器3)
iOS开发拓展篇—音频处理(音乐播放器3) 说明:这篇文章主要介绍音频工具类和播放工具类的封装. 一.控制器间数据传递 1.两个控制器之间数据的传递 第一种方法:self.parentViewCont ...
- iOS开发拓展篇—音频处理(音乐播放器4)
iOS开发拓展篇—音频处理(音乐播放器4) 说明:该文主要介绍音乐播放器实现过程中的一些细节控制. 实现的效果: 一.完整的代码 YYPlayingViewController.m文件 // // Y ...
- iOS开发拓展篇—音频处理(音乐播放器5)
iOS开发拓展篇—音频处理(音乐播放器5) 实现效果: 一.半透明滑块的设置 /** *拖动滑块 */ - (IBAction)panSlider:(UIPanGestureRecognizer *) ...
- iOS开发拓展篇—音频处理(音乐播放器6)
iOS开发拓展篇—音频处理(音乐播放器6) 一.图片处理 说明: Aspect表示按照原来的宽高比进行缩放. Aspectfit表示按照原来的宽高比缩放,要求看到全部图片,后果是不能完全覆盖窗口,会留 ...
随机推荐
- JMeter分布式部署的大致步骤以及误区解释
master和slave机要在同一网段内,才能做分布式(Jmeter要配环境变量,这样不用手动起server) 分布式不成功,解决方案: 1.master端和slave端要ping通 2.ping通后 ...
- tomcat源码阅读之日志记录器(Logger)
UML图: 1.Logger接口中定义了日志的级别:FATAL.ERROR.WARNING.INFORMATION.DEBUG,通过接口函数getVerbosity获取日志级别,setVerbosit ...
- gphoto2
连上usb线,系统会跳出detect到camera的提示,这里一定要选择“unmount”,否则会面的命令执行会有问题 hjs@ubuntu:~$ gphoto2 --auto-detect Mode ...
- docker 使用教程(2)常用命令
1. 查看docker信息(version.info) # 查看docker版本$docker version # 显示docker系统的信息$docker info 2. 对image的操作(sea ...
- Joyoi花店橱窗(原tyvj1124)
题目:http://www.joyoi.cn/problem/tyvj-1124 两点注意!!! 1.滚动数组的初始化: 2.字典序操作! 感到很有趣!!! #include<iostream& ...
- POJ2955Brackets——dp
题目:http://poj.org/problem?id=2955 1.考虑区间. 2.当前区间可为自己子区间的和(题意果然是和而非最大值). 3.考虑当前区间的边界. #include<ios ...
- Eclipse中不让.svn文件夹一同编译到class中
开发过程中一直在用SVN做版本控制,使用Eclipse编译文件后,classes文件中总是有.svn的文件夹,在做提交时有时会报错,这些文件没有什么用,而且影响build的速度. 更恼火的是, 如果一 ...
- PHP简单查询界面
<html> <style type='text/css'> table {border-collapse:collapse;} td {border:solid 1px #d ...
- 扫盲贴,802.11AD
早在去年,大家已经开始关注新的802.11ad规范,其高频高带宽低延迟的特性也让大家对将来的无线网络应用形态充满了期待,而今年的CES2016展会上,已经有不少的802.11ad产品出现,看来2016 ...
- Sublime Text 3 个人使用总结
待更新 Sublime Text 3\Packages\FileHeader\template\header