FMOD音频引擎简单使用

http://blog.csdn.net/cnjet/article/details/506104

现代游戏已经不能没有声音,所以音频引擎成为游戏引擎中不可缺少的一部分.这是一篇介绍现代音频引擎的文章(http://hard.zol.com.cn/labs/2003/0520/60986.shtml).FMOD音频引擎(http://www.fmod.org)是一个非常不错的音频引擎,其使用也比较简单,下面做一些简单介绍:
一.基本准备
它是免费的,你可以从它们的主站上下载API等文件.之后,你需要添加头文件和库文件,如下(C/C++):

    • fmodvc.lib 用于 Microsoft Visual C++ 和 Codewarrior
    • fmodbc.lib 用于 Borland
    • fmodwc.lib 用于 Watcom
    • fmodcc.lib 用于 LCC-Win32
    • libfmod.a 用于 MingW and CygWin
    • fmod-3-7.lib 用于 GCC
      (参考:http://www.gamedev.net/reference/articles/article2098.asp
      之后,只要添加fmod.h头文件后就可以使用了.
      二.开始使用
      1.初始化
      开始播放声音前,需要进行初始化,很简单:
      FSOUND_Init (44100, 32, 0);
      第一个参数是输出HZ,第二是最大软件信道数可以不管也不会增加CPU负担,第三个参数可以设置一些标志可以不设置则赋值为0.
      2.基本常识
      FMOD将音频分为声音(sound)和音乐(music)两种.前者如:.MOD, .S3M, .XM, .IT, .MID, .RMI, .SGT or .FSB
      等,后者如: .WAV, .MP2, .MP3, .OGG or .RAW等.二者使用不同的函数处理.都可以通过采样后流的方式来处理.不过小文件一般通过采样方式,它可以多次播放但占用内存.大文件通过流方式,减少内存消耗.
      3.播放音乐
      首先定义一个FMUSIC_MODULE类型变量来作为文件句柄.然后就可以通过FMUSIC API来实现,如:
      装入文件:
      handle=FMUSIC_LoadSong("YourFileName");
      FMUSIC_PlaySong(handle);
      音量控制:FMUSIC_SetMasterVolume (handle, 255);后面的参数在0~255之间,值越大声音越大.
      暂停播放:FMUSIC_SetPaused (handle, true);
      重开始:FMUSIC_SetPaused (handle, false);
      循环播放:FMUSIC_SetLooping (handle, true);
      停止播放:FMUSIC_StopSong (handle);
      释放音频内存:FMUSIC_FreeSong (handle);
      下面是一个命令模式下的例子:
      #include <conio.h>
      #include "inc/fmod.h"

      FMUSIC_MODULE* handle;

      int main ()
      {
         // 初始化
         FSOUND_Init (44100, 32, 0);

      // 装如
         handle=FMUSIC_LoadSong ("canyon.mid");

      // 只播放一次
         // 播放midi文件时请关闭循环播放
          FMUSIC_SetLooping (handle, false);

      //播放
         FMUSIC_PlaySong (handle);

      // 按任一键结束
         while (!_kbhit())
         {
         }

      //释放
         FMUSIC_FreeSong (handle);
         FSOUND_Close();
      }
      4.播放声音
      4.1 采样(Sample)方式
      先定义FSOUND_SAMPLE类型变量,然后就可以使用FSOUND系列函数来实现,如:
      装如文件:
      handle=FSOUND_Sample_Load (0,"YourFileName",0,0,0);  //除文件名外的参数用于多采样或其它等
      FSOUND_PlaySound (0,handle);
      设置音量:FSOUND_SetVolume (handle, 255);
      暂听:FSOUND_SetPaused (handle, true);
      重新开始:FSOUND_SetPaused (handle, false);
      停止:FSOUND_StopSound (handle);
      释放:FSOUND_Sample_Free (handle);
      下面是一个简单的例子:
      #include <conio.h>
      #include "inc/fmod.h"

      FSOUND_SAMPLE* handle;

      int main ()
      {
         // 初始化
         FSOUND_Init (44100, 32, 0);

      // 装载和播放
         handle=FSOUND_Sample_Load (0,"sample.mp3",0, 0, 0);
         FSOUND_PlaySound (0,handle);

      // 按任一键结束
         while (!_kbhit())
         {
         }

      // 释放
         FSOUND_Sample_Free (handle);
         FSOUND_Close();
      }
      4.2 流(stream)方式
      先定义一个FSOUND_STREAM 类型变量,然后:
      装入文件:
      handle=FSOUND_Stream_Open("YourFileName",0, 0, 0);
      FSOUND_Stream_Play (0,handle);
         提示:3.7版本之前的方式是不一样的.
      停止:FSOUND_Stream_Stop (handle);
      释放:FSOUND_Stream_Close(handle);
      其它和前面是一样的.下面是一个简单的例子:
      #include <conio.h>
      #include "inc/fmod.h"

      FSOUND_STREAM* handle;

      void main ()
      {
         //init FMOD sound system
         FSOUND_Init (44100, 32, 0);

      //load and play sample
         handle=FSOUND_Stream_Open("sample.mp3",0, 0, 0);
         FSOUND_Stream_Play (0,handle);

      //wait until the users hits a key to end the app
         while (!_kbhit())
         {
         }

      //clean up
         FSOUND_Stream_Close(handle);
         FSOUND_Close();
      }
      5.关闭
      FSOUND_Close ();

      参考:
      A Quick Guide to FMOD by Joachim Rohde(http://www.gamedev.net/reference/articles/article2098.asp
      FMOD wiki(http://www.devmaster.net/wiki/FMod

时间: 2024-08-09 17:49:15

FMOD音频引擎简单使用的相关文章

NDB Cluster (分布式存储引擎)存储引擎简单简介及Mysql cluster的实现

一.NDB Cluster (分布式存储引擎)存储引擎简单简介 NDB 存储引擎也叫NDB Cluster 存储引擎,主要用于MySQL Cluster 分布式集群环境, Cluster 是MySQL 从5.0 版本才开始提供的新功能.这部分我们可能并不仅仅只是介绍NDB存储引擎,因为离开了MySQL CLuster 整个环境,NDB 存储引擎也将失去太多意义.所以 接下来会和MySQL Cluster的搭建一块介绍. Mysql Cluster 是一种技术,其主要功能是在无共享的相关系统中部署

【Cocos2d入门教程八】浅析Cocoss2d下的音频引擎及封装音频类

Cocos2d-x提供了一个音频CocosDenshion引擎,CocosDenshion引擎可以独立于Cocos2d-x单独使用,CocosDenshion引擎本质上封装了OpenAL音频处理库.具体使用的API是SimpleAudioEngine.在大多数平台上,cocos2d-x可以调用不同的SDK API来播放背景音乐和音效.CocosDenshion音频引擎只能在同一时间只能播放一首背景音乐,但是能同时播放许多音效.下面列举CocosDenshion引擎下的SimpleAudioEng

MGTemplateEngine 模版引擎简单使用(转)

原文:http://blog.csdn.net/crazy_srufboy/article/details/21748995 要实现的效果 首先上图中间的 标题至内容 都是使用UIWebView显示,评论是UITableView可以往下拖加载更多评论,也可以增加评论同删除评论. 动机 评细页中使用 UIWebView 会使显示内容更加的灵活和简单,当然你也许可以网上找UITextView的扩展同样也行,但我感觉HTML更符合我的需求.在多年的PHP开发中我们知道,其实详细页都是大同小异,主要是显

MGTemplateEngine 模版引擎简单使用以及MGTemplateEngine导入xcode6.1报错修改

MGTemplateEngine 模版引擎 一.  MGTemplateEngine比较象 PHP 中的 Smarty 模版引擎,是一个轻量级的引擎,简单好用.只要设置很多不同的HMTL模版,就能轻松的实现一个View多种内容格式的显示,对于不熟悉HTML或者减轻工作量而言,把这些工作让设计分担一下还是很好的,也比较容易实现设计想要的效果. 像网易.粉笔网都是用的该库. 首先,看看模版的代码 [html] view plaincopy <!DOCTYPE html> <html lang

[JavaWeb基础] 019.Velocity 模板引擎简单示例

1.什么是Velocity 一种J2EE的前端模版技术,和JSP,Freemarker差不多,都是用来展示网页内容的.和JSP不同的是velocity只能显示Action中的数据,不能处理数据.不能写java代码,但是可以使用Velocity标记.也就是说把显示代码和后端的JAVA代码分离开来,降低程序的耦合性 2.需要引入哪些Jar包 velocity-1.5.jar,velocity-1.6.2.jar,velocity-tools-2.0.jar,velocity-tools-generi

JavaScript引擎简单总结

顾名思义,JavaScript引擎就是指解析执行JavaScript脚本的虚拟机,一般附带在浏览器中,不同浏览器附带的JS引擎不同,其中Chrome的V8引擎性能十分优越. 一.微软 Chakra:译名查克拉,微软开发的JS引擎,用于IE9的32版本. 二.Mozilla SpiderMonkey:第一款JavaScript引擎,用于Mozilla Firefox 1.0~3.0版本. Rhino:由Mozilla基金会管理,开放源代码,完全以Java编写. TraceMonkey:基于实时编译

MySQL管理之 MyISAM和InnoDB存储引擎简单对比

版权归QQ87006009所有 一.MyISAM引擎: 1.隔离事务界别: 由于myisam的隔离事务级别是串行.采用的是表级锁,不支持事物和全文索引.因此不适用在大并发,重负荷的生产系统上. 2.实例的崩溃恢复: 当系统宕机或者mysql进程崩溃后,MyISAM引擎表很容易受到损坏.不得不用外部命令myisamchk来进行修复. 3.分配内存和使用: myisam引擎内存主要存放索引信息,不存放数据信息,因此在检索表时会先访问索引信息,然后在去磁盘读取数据信息. 4.cpu的使用效率: myi

数据库里面的数据类型和引擎简单介绍

数据类型(mysql) Int char bit varchar date time datetime text 字符: Char 普通字符串(老老实实占多少是多少) Varchar 可变字符串(占多少用多少) (字符说的是字符个数.字节是说文字存储大小) (除了ASCLL(0~127)码系列占1个字节.其他都是占两个字节) Text 大文本不设置长度(16kb) Longtext 极大文本 日期 Time Date Datime (八个字节)(年月日时分秒) 常用数据类型 Int DECIMA

Bullet物理引擎简单说明

说明 Bullet是一款开源的物理模拟计算引擎,包括刚体.柔体.弹性体等,是世界三大物理模拟引擎之一(包括Havok和PhysX),被广泛应用于游戏开发(GTA5等)和电影(2012等)制作中. Bullet也见于计算机动画相关论文中,如流体模拟(Versatile Rigid-Fluid Coupling for Incompressible SPH). 官方介绍:Bullet Physics SDK,real-time collision detection and multi-physic