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

最新文章

  1. 深入理解CSS中的margin负值
  2. VMware 虚拟机桥接网络设置
  3. Swift基础--Swift中的异常处理
  4. (转)Sql Server 对锁的初步认识
  5. Bundle文件的创建和使用(二)
  6. Oracle PL/SQL之LOOP循环控制语句
  7. VS2008调试快捷键
  8. webpack2使用ch9-处理模板文件 .html .ejs .tpl模板使用
  9. dnSpy 强大的.Net反编译软件
  10. System.map文件的作用
  11. PHP/Post 提交请求获取json数据,并转化为所需要的数组
  12. python学习(二)--数据类型
  13. 苏宁基于Spark Streaming的实时日志分析系统实践 Spark Streaming 在数据平台日志解析功能的应用
  14. MySQL创建数据库与用户
  15. 初试GH-OST(转)
  16. MongoDB 设置账号和密码
  17. Struts2_day04讲义_使用Struts2完成用户登录的权限拦截器的代码编写
  18. VS中sln和suo的区别
  19. python面向对象-2深入类的属性
  20. mycat读写分离与主从切换【转】

热门文章

  1. dbt seed 以及base ephemeral使用
  2. hadoop 知识点
  3. winform截屏
  4. BASIC-1_蓝桥杯_闰年判断
  5. NB-IOT/LoRa/Zigbee无线组网方案对比
  6. java DateUtils
  7. jenkins 执行python脚本 断言失败就可以构建失败
  8. shell 2变量
  9. Jenkins git鬼畜集
  10. 【Linux_Unix系统编程】chapter5 深入探究文件IO