FMOD音頻引擎簡單使用

來源:互聯網
上載者:User

現代遊戲已經不能沒有聲音,所以音頻引擎成為遊戲引擎中不可缺少的一部分.這是一篇介紹現代音頻引擎的文章(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)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.