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();
}