fmod

fmod

fmod Ex 聲音系統是為遊戲開發者準備的革命性音頻引擎。目前最新版本是Fmod Studio 1.08.13。你也可以在FMOD的官網上下載到FMOD 3。如今採用了FMOD作為音頻引擎的遊戲包括Far Cry孤島驚魂)、Tom Clancy's Ghost Recon(幽靈行動),甚至著名的World Of Warcraft魔獸爭霸)。

支持平台


Microsoft Windows series. (Win32平台)
Microsoft Windows series 64bit. (AMD64) (Win64平台)
Linux (Linux平台)
Linux 64bit. (AMD64) (Linux64平台)
Android (安卓智能機平台)
Macintosh. OS8 / 9 / X and OSX for x86. (Mac OS 平台)
Sony PlayStation 2 (PS2平台)
Microsoft Xbox (XBox平台)
Nintendo Gamecube (任天堂NGC平台)
Sony Playstation Portable. (PSP平台)
Microsoft Xbox 360. (XBox360平台)

特點


簡化

以前我們可能會針對採樣、流或者CD音頻使用不同的API,但到2013年,這一切都被一個“Sound”函數所取代,例如mod、midi、wav等都可以被API平滑地調用。

虛擬頻道

虛擬頻道允許在有限的軟硬體條件下使用數以千計的聲道。聲音可以根據3D距離和彼此優先順序進行切換。

插件設計

新的音頻格式、輸出模式和編碼器都將以DLL文件提供給用戶下載和添加到系統中。其中也包括了對VST(Virtual Studio Technology)效果器和Winamp DSP(Digital Singnal Processor)插件的支持。//就是說,它的擴展性很好

數字回放

數字CDDA回放時允許使用DSP特效(dsp effects)、頻譜分析(spectrum analysis)和音軌抓取(ripping)等,就好像回放一個PCM(Pulse Code Modulation:脈碼調製錄音,模擬信號——脈衝——數字信號1、0)文件一樣。

多個音效卡

初始化多個“System”對象就行了。

多路輸出

如今Fmod已經完全成為一個多聲道混音器(a full multichannel mixer)。2D聲音可以用5.1甚至7.1的形式播放。聲音可以交換彼此分配到的聲道,舉個例子,一個3D立體聲的左右聲道可以相互交換、混音或是全都通過左揚聲器播放出來。Fmod可以實現這一特性是由於它支持pan matrices(聲像矩陣)。任何輸入聲音頻道都可以被重定向到任意輸出揚聲器,並且支持緊接著的這個百分比層,因此可以說沒有一個絕對的揚聲器分配方案。這句話我不是很理解,原文是:The way this is available is FMOD supports pan matrices. Any input sound channel can be redirected to any output speaker,and on top of this percentages/fractional levels are supported,so there are no absolute speaker assignments.
為了滿足高端音效設備,FMod藉助ASIO(Audio Stream Input Output,音頻設備零延遲)功能,支持16個輸出通道的多通話線路輸出(multichannel output)。

多路輸入

例如Fmod支持多波段wav(multichannel wavs)、ogg和FSB文件的5.1音樂播放。

延遲錄音

FMOD Ex 如今支持相當低延遲的錄音,通過一種新型錄音引擎來進行這些處理和輸出。通過ASIO實現的“錄音->DSP->回放”延遲可以降低到1-3ms。這對於錄音的實時處理和回放都有莫大好處。

網路特性

網路音頻流。包括自定義網路流編碼,它能夠無縫支持Shout and Broadcast、Icecast(網路流式廣播伺服器/網路電台伺服器)和HTTP流。
◆下載能力。Fmod中支持網路文件的組件有另一個功能就是支持下載。甚至可以從網際網路上裝載靜態採樣(static samples)。
◆語音交談。在以後的版本中,將為網路實時語音會話提供伺服器到客戶端語音聊天支持。

支持類型

文件格式。
-- DLS - (DownLoadable Sound format可作為midi回放,也可以單獨使用。)
-- M3UASX、WAX、PLS (playlist,播放列表格式,記錄了許多到其他音頻文件的鏈接。使用FMOD EX的標記API獲取文件。)
-- AIFF - (Audio Interchange File Format)
-- ASF - (Advanced Streaming format,同時也支持視頻流中的音頻軌跡。)
-- FLAC - (Lossless compression codec,無損壓縮編解碼器)
-- FSB - (用FSBank和FMOD設計工具生成的FMOD採樣庫:FMOD Sample Bank)
-- IT - (Impulse tracker sequencedmodformat. FMOD Ex also fully supports resonant filters in .IT files,and the per channel or per instrument echo effect send,that can be enabled in ModPlug Tracker. This is cross platform effect support and does not require DirectX like other libraries do.)
-- MOD - (Protracker / Fasttracker and others sequencedmodformat)
-- MP2 - (MPEG I/Ⅱ Layer 2)
-- MP3 - (MPEG I/Ⅱ Layer 3,including VBR support)
-- OGG - (Ogg Vorbis format)
-- RAW - (Raw file format support. 用戶可以指定頻道數量、bitdepth和所用格式等。)
-- S3M - (ScreamTracker 3 sequencedmodformat)
-- WAV - (Microsoft Wave files,inlcluding compressed wavs. PCM,MP3 and IMA ADPCM compressed wav files are supported across all platforms in FMOD Ex,and other compression formats are supported via windows codecs on that platform).
-- WMA - (Windows Media Audio format)
-- XM - (FastTracker 2 sequenced format)
-- VAG - (PS2 / PSP only)
-- XMA - (Xbox 360 only)
因為Fmod支持新文件格式的插件,所以可以認為Fmod能夠支持的文件格式是無限的。注意,FMOD Ex不支持ACC,因為ACC所需的唯一引用文件是GPL,但FMOD Ex中沒有GPL保護代碼。為了支持這種格式,用戶需要自行添加插件。
◆聲音寫輸出
所有的輸出都可以寫入wav文件。如果使用編碼插件,它還能夠實時地編碼為mp3或者其他文件格式。
◆採樣精確定址
多數系統定址時採用密集塊分界線,例如mp3解碼時每次採樣塊大小為1152。而FMOD Ex支持精確的採樣定址和解碼,比如說你可以一下子準確地找到採樣偏移1000000的位置進行解碼,也可以精確地對音頻的1個採樣(?,原文是:1 sample of audio)進行解碼。
◆增強的流引擎
一種新型的低延遲流解碼器能夠在運行時將解碼負擔分散開去,而不是doing it in chunks (cpu spikes!)。這意味著遊戲將擁有更平滑的幀頻。
◆增強的採樣格式支持
包括對24位、32位整型和32位IEEE浮點採樣支持,還有對超立體聲的支持(more than stereo support)。Wav、ogg或者用戶自創的超立體聲採樣可以獲得相應支持。8個聲道以上的聲音都可以自然地播放。
◆增強的混音引擎
--增強了輸出聲道支持
多數系統僅支持混音輸出到單聲道(mono)或是立體聲(stereo)。FMOD Ex允許混音輸出到任意數量的聲道。例如,6聲道輸出(帶低音)可以用5.1或是杜比數碼(Dolby digital,多通道音頻格式)方式進行3D音效實時輸出。立體聲和5.1都被優化為特殊快速通道格式(special case fast-path)。
--基於混音引擎的完全DSP網路數據流
新的混音程序分隔開重採樣、混音和特效庫(resample/mix/effects stages)。它是個基於多輸入/輸出DSP引擎的異常複雜節點。它支持子混音、爆破音和更高級的發聲者定位和選擇操作。
--高質量混音
All mixing is floating point with full 32bit interpolation.
它所支持的重採樣模式包括:
o No interpolation(無樣條)
o Linear interpolation(線性樣條)
o Cubic interpolation(三次樣條)
o 5 point spline interpolation!(5點樣條插值)
All resampling is done with true 32bit precision using a 32bit fractional,it is not downscaled or compromised in any way.
--音量傾斜(Volume ramping)
音量傾斜作為一個標準存在系統中。立體音量傾斜支持在無“click”雜音的情況下自然調節。(Cubic volume ramps may be supported for crisper volume changes without clicks.)
--增強的3D音效
支持每個聲音的對數和線性rolloff模型。
幾何API. 音頻實現中一個革命性的進步是FMOD Ex對用戶幾何引擎的支持。因此幾何場景可以加入到FMOD中,而FMOD可以自動計算用戶在世界中行動時遇到的障礙和閉塞(obstraction/occlusion)。
支持多個監聽,包括為了分隔場景引入的多個3D監聽。
--真實音速(Real speed of sound)將調節遠方的聲音傳到你耳中的延遲時間。它可以根據用戶喜好進行開關。(即將實現)
--為軟體混合的3D聲音提供ITD(Inter-aural Time Delay,耳間時間延遲)(例如左聲道和右聲道的聲音將各自延遲以製造空間感)
--立體聲採樣或者多聲道採樣可以在3D中定位,它們的組成聲道也可以在3D空間中定位,並由用戶自行配置。
◆自定義回放延遲
可以使用“setDelay”函數設定聲音將在啟動后多長時間才開始播放(samples or ms)。可以在初始化和啟動聲道的時候調用它。
MIDI支持
FMOD Ex擁有它自己的軟體midi回放功能,因此midi回放是跨平台工作的。
Patch sets / DLS banks have to currently be provided with the song,or FMOD Ex will take advantage of any found in the operating system.
◆Stitching / sentencing (無縫接合?)
Seamless stitching,for sounds allows one sound to end then another starts immediately afterwards without gaps. This is great for commentary or interactive music.
◆基於特效的軟體(Built in software based special effects.)
FMOD Ex提供了一整套特效,並且可以用於任何FMOD所支持的操作系統。下列是默認提供的一些特效,更多的效果可以通過插件來添加。
Oscillators(振蕩器)- sine,square,saw up,saw down,triangle and noise wave oscillators.
2 Low-pass(低通濾波器) with resonance filters.
High-pass with resonance.
2 Echo filters.
Flange.
Distortion.(扭曲)
Normalizer. (標準化)
Parametric EQ.
Realtime pitch shifter (changes pitch not playback speed)
Chorus. (合唱)
Reverb. (混響)
◆頻道組和子混音(Channel groups and submixing)
頻道組可以創建多聲道組並把聲道分配到這些組。因此各種命令可以傳遞給整個組,例如音量控制、弱音(mute)、頻率、暫停等。你可以使用頻道組來控制主音量,多頻道組可以用於多主音量控制,因此對於遊戲中GUI相關音量的控制,或是採用了特效的音樂都很有幫助。這一特性使得允許音頻層次控制擁有良好的擴展性(flexibility)。
子混音可以針對某個頻道組進行特效處理,而不影響其他頻道。這個優勢可以大大降低CPU使用率,或是在一些聲音使用了DSP效果的時候,隔離出其他聲音來。(keeping some sounds dry)
◆增強的回叫信號(callback)支持
為回放設計了“latency adjusted”和“real-time”標記。這樣你就可以在混音或是audible的時候調用回放。這兩者是不同的,取決於混音緩衝區大小決定的時間長度。(This means you can get a callback at mix time,or audible time)
sample accurate user timer callbacks (ms or sample based) for global or per channel

相關評測


優點

免費:如果你不打算用你的遊戲或程序來賺錢,那麼FMod是免費的。
卓越的支持: FMod布告版上的資源很多,提出的問題也能很快得到解答。
專業開發工具: FMod作為一個專業產品被使用了好多年,因此它的庫文件是穩定和成熟的。
文件支持: FMod提供了對所有通用音頻文件的良好支持。這意味著你可以方便地添加聲音文件到你的應用中,而不需要考慮手工解碼的問題。

缺點

許可證費用:隨著FMod的使用程度增加,所需支付的許可證費用也飛速增長。在使用FMod以前要仔細考慮好你需要為使用這個產品支付多少許可證費用。
只有官方版本: FMod不是開源軟體,這意味著對一個開發者來說,你只能等待下一個SDK的發行來修正現有產品的Bug。
(介紹翻譯by 貓人Lara)

使用許可


只要不是用於商業用途就可以免費使用FMod(其實這是個很聰明的做法),但如果是商業用途則有不同的付費方式。就如FMod-DmWiki上的評論所說——“FMod has a more complicated licensing structure than other API's due to its professional nature.(介於FMod的專業特性,FMod比其他API應用擁有更為複雜的許可證制度)”。
假如你的最終應用程序售價低於每份5美元,那麼需要支付“$100 per title,per platform”,也就是說,無論你的程序賣出多少份,只需要針對每個平台支付100美金。然而隨著開發者的專業化程度提高,所需支付的FMod版權費也跟著上升。別忘了,100美金只是針對5美元的小Case,一般的大型遊戲需要為使用Fmod支付1000到4000美金“per platform,per title”的費用。實際上,假如你決定使用FMod Ex作為你的大型應用的音頻引擎,無論平台是什麼,都要支付4000美金。
另外有一點你要知道,無論購買了什麼樣的License,你的應用中總有一個地方要註明FMod的版權信息

函數名


功 能:計算x對y的模,即x/y的求余運算(參見百科詞條mod中的“求余函數”條目),若y是0,則返回NaN
用 法:double fmod(double x,double y);
結果符號與被除數(x)一致(編譯器c-free 5.0);
需要頭文件:math.h

國內公司


FMOD遊戲音頻技術在國內是新技術,國內能提供完整技術支持的不多;
能提供FMOD EX,FMOD EVENT SYSTEM的公司有:
MOD和Wwise是客戶端遊戲和Unity3D頁游的常用音頻引擎,團隊擁有的數名資深音頻設計師,熟練掌握FMOD和Wwise,可提供全套FMOD設計、音頻事件製作、測試外派等服務,同時與FMOD開發公司澳大利亞Firelight有著良好的合作關係,後者為團隊提供強大的FMOD技術支持,並定期在中國聯合舉辦FMOD相應技術講座。