FMOD.dll的介绍

来源:互联网 发布:国际关系学院mti知乎 编辑:程序博客网 时间:2024/04/25 19:43

FMOD.dll的介绍
翻译(Robin)
Email:eway365@hotmail.com

什么是FMOD?
FMOD是一个非常简单通用的audio引擎,可以在windows,winCE,Linux,GameCube Xbox等平台上很好运行.
FMOD是一个共享软件,如果不用于商业用途可以免费使用,商业用途需要付费100美金.详细情况请关注www.fomod.org

下载后将fmod.dll和fmodvc.lib加入你的工程中.并引用头文件fmod.h
在使用fmod播入音乐之前,首先要初始化,代码如下:
FSOUND_Init(44100,32,0);
第一个参数为单乐输出的rate,单位为赫兹,在这里我们设置为44100.
第二个参数为设置最大的通道数量
第三个参数,可以指定一些标识,如果我们想的话.这里暂时置它为0.

好了,现在我们准备开始播放单乐了,可FMOD道底支持什么样的单乐格式呢?
歌曲,采样或是文件流(song,sample and stream)?
FMOD将它细分在两个API中.他们分别是FSOUND和FMUSIC

所有的music如:mod,s3m,xm,it,mid,rmi,sgt,fsb 都通过FMUSIC 这个API来播放
FSOUND API是提供给压缩格式使用的.文件一般如:wav,mp3,ogg,raw等
这些格式,你都可以通过别的软件进行互相转换.
如果你要播放的单乐是像炮弹发射一样的短小的声音,那么你可以将这些声间转成sample
Samples将在播放前先解压到内存,而且可以多次播放.
如果你要播放的是象背景音乐一样的较长的音乐,你可以得到这个音乐转化为流,这将导致
使用一些CPU和内存,因为文件从磁盘读取然后转成流需要一个过程.同时需要注意一点,在
同一时间不能多次播放

FMUSIC:
用FMUSIC播放需要一个handle,看如下代码:
handle = FMUSIC_LoadSong("YourFileName");
FMUSIC_PlaySong(handle);
现在你可能注意到,几乎每个function的第一个参数都需要一个handle;

设置单量
FMUSIC_SetMasterVolume(handle,256);
256是最高音,0表示静音

暂定单乐
FMUSIC_SetPaused(handle,true);
FMUSIC_SetPaused(handle,false);

循环播放
FMUSIC_SetLooping(handle,true);

停止音乐
FMUSIC_StopSong(handle);

free内存
FMUSIC_FreeSong(handle);

一个例子:
#include <conio.h>
#include "inc/fmod.h"

FMUSIC_MODULE* handle;

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

 // load song
 handle=FMUSIC_LoadSong ("canyon.mid");

 // play song only once
 // when you want to play a midi file you have to disable looping
 // BEFORE playing the song else this command has no effect!
 FMUSIC_SetLooping (handle, false);

 // play song
 FMUSIC_PlaySong (handle);

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

 //clean up
 FMUSIC_FreeSong (handle);
 FSOUND_Close();
}


下面开始介绍FSOUND
得到FSOUND的句柄:
handle = FSOUND_Sample_Load(0,"yourFileName",0,0,0);
FSOUND_PlaySound(0,handle);
这些音效在播放前将被载入内存,所以可能需要一点点时间.
第二行命令的第一个参数是播放时使用的通道.

设置音量
FSOUND_SetVolume(handle,255);
255为最大音量,0表示静音

暂停音乐
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 ()
{
 // init FMOD sound system
 FSOUND_Init (44100, 32, 0);

 // load and play sample
 handle=FSOUND_Sample_Load (0,"sample.mp3",0, 0, 0);
 FSOUND_PlaySound (0,handle);

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

 // clean up
 FSOUND_Sample_Free (handle);
 FSOUND_Close();
}

Streams:
handle=FSOUND_Stream_Open("YourFileName",0, 0, 0);
FSOUND_Stream_Play (0,handle);

停止音乐
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();
}

原创粉丝点击