文档章节

FMOD音频引擎简单使用

rise-worlds
 rise-worlds
发布于 2016/06/20 13:35
字数 854
阅读 25
收藏 0

现代游戏已经不能没有声音,所以音频引擎成为游戏引擎中不可缺少的一部分.这是一篇介绍现代音频引擎的文章(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 Rohdehttp://www.gamedev.net/reference/articles/article2098.asp
    FMOD wiki(http://www.devmaster.net/wiki/FMod
  • 本文转载自:http://www.cnblogs.com/flying_bat/archive/2008/10/19/1314437.html

    rise-worlds

    rise-worlds

    粉丝 3
    博文 1755
    码字总数 0
    作品 0
    深圳
    程序员
    私信 提问
    Android NDK开发之旅27--NDK--使用fmod模仿QQ变声特效

    前言 我们这次用到的是fmod这个库,fmod是音效引擎游戏开发革命引擎,著名的游戏开发引擎CosCos2D、 Unity都封装了这个库。 FMOD的如下优点: 使用FMOD我们可以使用更少的资源创建更加高级和...

    香沙小熊
    2017/11/27
    0
    0
    Android 端音频变声方案

    音频变声实质上是通过调整 PCM 数据的音调、节拍等属性,实现听感上的变化。如果是 mp3、aac 等压缩音频,则需提前解码成 PCM 数据,Android 端可以通过 MediaExtractor 及 MediaCodec 解码得...

    王英豪
    02/27
    0
    0
    音频引擎--FMOD

    FMOD 音频引擎是一个非常不错的音频引擎,其使用也比较简单,下面做一些简单介绍: 一.基本准备 它是免费的,你可以从它们的主站上下载API等文件.之后,你需要添加头文件和库文件,如下(C...

    匿名
    2010/12/28
    13K
    1
    NDK开发——Android Studio+CMake实现QQ变声效果

    项目演示 源码下载 Github:https://github.com/AndroidHensen/NDKVoice 项目分析 项目采用Fmod开源库,一个非常简单通用的音频引擎,对原始声音进行音效的处理即可做出变声的效果,下面是变...

    qq_30379689
    2017/09/02
    0
    0
    Android Studio NDK开发(九):变声特效

    前言 首先我们来介绍fmod,fmod声音系统是为游戏开发者准备的革命性音频引擎,如今采用了fmod作为音频引擎的游戏包括Far Cry(孤岛惊魂)、Tom Clancy's Ghost Recon(幽灵行动),甚至著名的...

    浮生若梦zp
    2017/12/02
    0
    0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

    Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

    小小编辑
    26分钟前
    24
    3
    java通过ServerSocket与Socket实现通信

    首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

    Blueeeeeee
    今天
    6
    0
    用 Sphinx 搭建博客时,如何自定义插件?

    之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

    王炳明
    昨天
    5
    0
    黑客之道-40本书籍助你快速入门黑客技术免费下载

    场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

    badaoliumang
    昨天
    16
    0
    很遗憾,没有一篇文章能讲清楚线程的生命周期!

    (手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

    彤哥读源码
    昨天
    19
    0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    返回顶部
    顶部