eax

eax

EAX全名為Environmental Audio Extension(環境音效擴展)這是創新公司在推出SB Live音效卡時所推出的API插槽標準。

定義


不與DirectSound或OpenAL同級,而是寄生於DirectSound與OpenAL的3D音效,主要是針對一些特定環境,如音樂廳、走廊、房間、洞窟等,作成聲音效果器,當電腦需要特殊音效時,可以透過DirectSound、OpenAL和驅動程序讓音效卡處理,展現出不同聲音在不同環境下的反應,並且通過多聲道(建議為5.1、7.1聲道),達到立體的聲音效果。EAX在剛推出時為1.0版,目前是5.0版,而許多遊戲目前也都支持此項規格。
這裡討論的EAX指代的是音頻API插槽標準,而不是創新驅動中常見的“Environmental Audio(環境音效)”,雖然名稱相同,但並不是一個事物,在討論遊戲音頻引擎的時候請大家明白這一點,不要混淆哦。
目前EAX寄存於DirectSound與OpenAL來實現EAX音效,但由於從Windows Vista起,系統不允許EAX直接使用DirectSound實現EAX音效,所以如果遊戲為DirectSound遊戲,則需要使用創新鍊金術驅動(Creative Alchemy)來使DirectSound遊戲在Windows Vista、Windows 7實現EAX音效。如果遊戲基於OpenAL開發,則不需要使用,可直接實現EAX音效(前提是遊戲必須支持EAX)。詳細遊戲列表請參考Creative Alchemy Lab主頁。
目前音頻設備所支持的EAX版本的詳細情況請看下方詞條,有詳細介紹。

作用


既然EAX只是一種API插槽,那麼它究竟有什麼用呢?從它的名稱就可以看出來,EAX實際上是為了幫助軟體開發人員方便的利用Environmental Audio而設的,不過將來還可能包括Environmental Audio以外的東西。由於EAX目前必須依賴於DirectSound3D與OpenAL,所以基本上是用於遊戲之中。EAX 1.0的作用說起來比較簡單:為遊戲加入3D混響(reverb)效果。注意僅僅是混響效果,而不是別的什麼東西,所以如果有人大談EAX 1.0的定位效果如何如何好或不好,那隻能說明他對EAX的作用並不了解。在支持EAX的3D遊戲中,音效的3D定位實際上是由DirectSound3D來完成的。當然因為EAX和DirectSound3D密不可分,所以也容易造成誤解。

實現


EAX主要依附於DirectSound3D與OpenAL,因此與DirectSound3D和OpenAL密不可分,也就是說,要支持EAX就必須支持DirectSound3D或OpenAL,否則無法利用EAX的函數和屬性。反過來,使用DirectSound3D和OpenAL不一定支持EAX。
由於需要基於DirectSound3D與OpenAL,EAX的調用方式基本上和DirectX相一致,對於用慣了DirectX編程的人來說,簡直就是小菜一碟。一個典型應用的實現只需要不多的代碼,一般來說,首先必須啟動DirectSound,然後就是創建音效緩存,包括主緩存和次級緩存:主緩存是DirectSound必有的,主要用來表現聽者(the listener)在3D聽覺環境中的情況,如位置、速度、聽者方向(向上、下、左、右看等)等等;次級緩存則可以有很多,主要用來表現音源(每一個次級緩存對應一個音源)的情況,如速度、音錐(sound cones)、與聽者的最大/最小距離等等。音效緩存創建后,還要為每一個緩存創建三個界面:標準界面控制基本的緩存行為(回放音量、頻率等),3D界面控制3D行為(位置、速度等),特性設置界面則為緩存設置EAX特性。都完成之後,我們就可以設置環境效果並修改調節各種有關參數了。除了可以精確控制環境參數外,EAX還預設了許多現成的環境如ROOM、CAVE、CONCERHALL等,我們可以通過
EAX_REVERBPROPERTIESpreset=(EAX_PRESET_ROOM);
pReverb->Set(DSPROPSETID_EAX_ReverbProperties,DSPROPERTY_EAX_ALL,NULL,0,&preset,sizeof(EAX_REVERBPROPERTIES));
之類的語句來設置。對於一些不想花腦筋去詳細研究聲學的開發者來說是很方便的。

版本


EAX 1.0

因為EAX1.0的作用只是為遊戲加入3D混響(reverb)效果,而且用起來很簡單(下面我們將會討論這一點),所以有人攻擊EAX只是簡單的幾條函數而已。其實EAX 1.0本身的確是很簡單的(對API插槽而言,簡單易用是一種優點),但實時reverb的實現就一點都不簡單,有諸如各種反射、空間材質、空間大小等等一大堆東西要考慮,除了要求音效卡處理能力強外,還要求有好的演演算法。雖然之前許多音效卡可以設置reverb,但往往只能在MIDI上簡單實現,而且沒有幾個能真正應用於實時變化的遊戲當中。環境音效提出了“環境”的概念,而EAX在1.0中實現了混響這一最重要的因素的編程介面,可以說是遊戲中3D定位概念之後的一個巨大進步。
雖然眾多的廠商都宣布支持EAX這一API插槽,但就像同樣支持Direct3D但不同的圖形加速卡畫面素質和速度各不相同一樣,各種音效卡在實現EAX的效果和速度上也必然會各不相同。EAX以SoundBlaster Live!系列為基準來開發,因此從理論上來說,SoundBlaster Live!能獲得最好的效果,當然這並不絕對,因為畢竟聽覺是比較主觀的東西。
EAX1.0隻幫助實現了Environmental Audio中的混響效果,對於Environmental Audio的各種效果來說當然是不足夠的,而且在互動遊戲中應用的話,還必須有更多的特點。因此EAX也在不斷的發展,EAX 2.0正在開發當中,也許很快就可以和我們見面。
總結一下EAX 1.0的特性:
- 硬體可同時處理8個音源
- 實現32個獨立的3D音效
- 預置了環境效果音效
- 每個聲道預置了獨立的環境音效
- 硬體DSP渲染

EAX 2.0

EAX2.0究竟會有什麼改進,目前其實並不十分明朗,幾乎可以確定的改進包括加入了閉塞(Occlusion)、阻礙(Obstruction)以及一些更加方便易用的特性。閉塞(Occlusion)屬性的作用在於模擬類似於聲源位置在另一個房間或牆的另一邊之類的情況;而阻礙(Obstruction)屬性的作用在於模擬聲音在同一個場景中遇到障礙物時衍射的情況,例如一個人在同一個房間中的一個大柱子後面講話。
就在我們盼望著EAX2.0的時候,創新又宣布了EAX3.0,據介紹EAX3.0加入了功能強大、簡單易用的音效設計工具。包括可以為每一個單獨音源做早反射和混響的控制、局限反射群、改進了的距離模型、允許在環境之間動態平滑切換等等,並為開發者公開了全部環境音效參數。通過EAX 3.0,營造一個真實生動的音效將更加容易。
環境音效本身也在不斷的變化、改進之中,EAX作為它的API插槽,功能當然也會越來越強,作用越來越大。
總結一下EAX 2.0新增的功能與特性:
- 在Creative SB Live!音效卡中首次使用
- 硬體可同時處理音源數量提升至32
- 增加了音頻閉塞效果(Occlusion Effects)
- 增加了特定材質音效的混響效果參數

EAX 3.0

從EAX 3.0起,創新為EAX打上了Advanced HD的稱號,名字變為Creative EAX Advanced HD。如上文描述,EAX3.0不出意外的在提升音源處理數量的情況下,增加了動態平滑切換、環境平移、新的混響引擎、每一個單獨音源做早反射和混響的控制、局限反射群、改進了的距離模型等,並首次在Creative SB Audigy音效卡中使用,並且SDK中公開了全部的音效參數,方便了開發者與遊戲廠商的製作,並為提升音效打下了基礎。
總結一下EAX 3.0新增的功能與特性:
- 在Creative SB Audigy音效卡中首次使用
- 硬體可同時處理音源數量提升至64
- 實現了3D與環境之間的動態平滑切換
- 開發者可直接訪問所有混響參數
- 增加環境平移(Environmental Panning)
- 使用了新的混響引擎

EAX 4.0

在2003年的GDC2003上,創新發布了新一代的EAX——EAX 4.0 HD。EAX4.0當中引入了多迴響環境空間、並且擴展了聲效演演算法的庫集。EAX4.0當中的多環境功能(Multi-Environment)支持多環境、多聲效的及時渲染,可以同時對一個環境進行多次音效渲染,通過這項技術,遊戲開發團體可以創建一個更真實、豐富的立體音效場景。EAX 4.0還提供了新的演算方法,遊戲開發者可以在遊戲角色附近安插多個即時渲染的音效環境。另外,EAX4.0將兼容 OpenAL和微軟的DirectSound3D。
總結一下EAX 4.0 HD新增的功能與特性:
- 在Creative SB Audigy4音效卡中首次使用
- 實現了實時的硬體處理效果
- 新增了多環境功能,支持多環境、多音效的及時渲染
- 可以對一個環境進行多次渲染
- 使用了新的演算方法
- 可在遊戲角色附近安插多個即時渲染音效
- 增加了鑲邊效果(Flange)
- 增加了回聲效果(Echo)
- 增加了失真效果器(Distortion)
- 增加了環形調製效果(Ring modulation effects)

EAX 5.0

2005年,創新發布新一代獨立音效卡——Creative X-Fi系列。在X-Fi中,搭載了新一代的EAX音效版本:EAX 5.0 HD。
EAX 5.0 HD首次出現是在X-Fi音效卡系列中,擁有6項全新功能,包括128音源同時處理(128 Voices)、MacroFx、PurePath、Environment FlexiFx 、EAX Voice與音頻閉塞(Environment Occlusion)。這5項功能給於遊戲創作者超現實並且貼近生活的遊戲音效體驗。
128 Voices:128個音源可以讓用戶體驗到遊戲中最富有細節以及飽滿的聲音,另外,新的特性也允許在遊戲中改變聲音細節,比如說,在你所控制的玩家生命快被終結的時候,音樂能夠變得相當激烈。利用128 Voice遊戲開發者可以做出混合效果比,如“雷聲”“爆炸”“迴音”三者同時發生。
MacroFX:EAX 5.0的另一項新特性是 MacroFX,可以讓用戶確切的區分出來聲源的遠近和位置。在遊戲中物體離你的角色比較近的時候發出的聲音會比遠距離的時候大很多,並且可以粗略的估算出生源的距離。MacroFX引擎所要營造出來的效果是讓你想要閃避,因為這個特性是為了營造逼真的近場聲音,比如一顆子彈或者一束衝擊波,EAX MacroFX將它的定位處理得更精確,讓你有種它只在離你頭部幾公分的威懾感。能你在遊戲或者電影中獲得這種身臨其境的感覺。
EAX Voice:這個技術允許你成為遊戲中的一部分,配合EAX Voice你在遊戲中使用耳機的話你可以像在正常生活地去說話,在不同環境中,你的聲音都會不同,你需要適時去增加自己的音量或者語氣,而假如在3D Voice中,你聲音的方向也是根據你和玩家的位置所決定的。添加了多重環境的支持,你在遊戲中如果說話的聲音過響,甚至連敵人都能聽到你的聲音而獲知你的存在,或者你在哪一個房間中。
EAX PurePath:提供真實的電影級環繞效果,它能夠提供與DTS、Dolby Digital精度相類似的環繞效果。通常我們運用家庭影院來欣賞電影,同樣我們需要DTS或者Dolby Digital的高精度運算以及特定的音響來達到環繞效果,通常這些系統就是5.1或者7.1系列。
在以往的EAX技術中,開發者能夠定位360度空間中的音頻來源,定位音頻的具體方位以及所出聲的音箱,但也僅此而已,並沒有辦法控制這個音箱的精確地輸出音頻,或者聯合幾個音箱使音箱達到3D音效。
而具備了EAX PurePath后,音箱對於環繞的控制度就比以前要強許多。尤其是對低頻的控制。眾所周知,傳統的5.1或者7.1音頻系統是5或者7個衛星音箱加上一個加強低音的低音炮,但許多人都忽略了這個.1,也就是忽略了低音炮的作用。事實上,電影中許多音樂都直接瞄準低音的,比如爆炸,就需要很有爆發力且厚實的低音,而這些,衛星音箱並沒有辦法去實現。但在遊戲中,低音的作用並不如電影中那麼強烈,那麼就需要降低低音炮的功率控制,EAX PurePath的作用就是如此,它具備低頻控制增強(Low Frequency Enhancement,LFE),這樣遊戲開發者可以自由控制他們的遊戲所需要低音的需求性,並控制128個音源所需要用到的條目,並將更多的音源分配到中頻或者高頻中,使聲音更為出眾。
Environment FlexiFX:這個技術允許遊戲開發者在遊戲中達到更為完美的聲音細節。它們能夠直接訪問X-Fi的硬體特效引擎。在以往的EAX ADVANCED HD版本中,開發者要開發聲音是受到限制和約束的,比如說,他們只能動用4個特效處理線程,而其中2個是被指定為混響和和聲的,因此他們只能用2個去進行附加效果的處理。這使效率和效果都大打折扣。而在EAX ADVANCED HD 5.0中,重新設計了特效引擎的操作,提供了4個靈活的處理線程,讓開發者能夠靈活使用。
Environment Occlusion:環境閉塞。通過這個技術,用戶可以指定一個聲音並將它關閉,也許是一起玩遊戲的人出言不遜,也許是一些你不想聽到的雜音,總之通過Environment Occlusion技術,你可以將它從的聽覺中消失。通過對上一代EAX Occlusion技術的改進,不僅可以閉塞直接的聲音,連環境混響等連帶在聲音中的特效一併祛除。
總結一下EAX 5.0 HD新增的功能與特性:
- 在Creative X-Fi系列音效卡中首次使用(Xtreme Audio除外)
- 可同時處理128個音源
- 增加了EAX Voice
- 增加了EAX PurePath
- 增加了Environment FlexiFX
- 增加了EAX MacroFX
- 增加了環境閉塞(Environment Occlusion)

EAX Emulation

除了對獨立音效卡支持,創新還發布了針對集成音效卡的EAX版本EAX Emulation。
EAX Emulation並不是EAX的獨立版本,而是通過軟體模擬EAX 3.0、4.0的版本,此版本的作用就是讓集成音效卡通過軟體渠道模擬實現EAX 3.0、4.0的音效。
最早EAX Emulation是與Creative SB Audigy Advanced MB一起使用,配合 通過認證的集成音效卡來模擬實現EAX 4.0 HD音效。後來創新推出了更高級的Creative X-Fi MB與Creative X-Fi MB 2,在Audigy MB的基礎上替換配套軟體為X-Fi音效卡的配套軟體,配合通過認證的集成音效卡來實現EAX 4.0 HD音效,其中X-Fi MB 2可以支持EAX 5.0 HD音效。
Creative SB Audigy Advanced MB中的配套軟體包括了Creative音頻中心, Creative MediaSource 5 播放器與編排器, Creative WaveStudio 7, Creative ALchemy 鍊金術驅動。
Creative X-Fi MB中的配套軟體新增了X-Fi音效卡獨有的Creative 控制台啟動器,還有Creative卡拉OK播放器、Creative 娛樂中心,其他與Audigy基本相同,包括Creative MediaSource 5 播放器與編排器, Creative WaveStudio 7, Creative ALchemy 鍊金術驅動。
目前,所有的Realtek ALC HD集成音效卡均可在安裝Mod版的Realtek驅動后安裝Creative X-Fi MB或Creative X-Fi MB 2,最新的Mod版驅動為R2.56。

音頻設備


目前音頻設備對EAX的支持情況如下:
Creative SB Live可支持EAX 1.0-2.0(3.0需要KX、VXD、游飄驅動);
Realtek ALC可支持EAX 1.0-2.0(OpenAL可提供模擬的EAX 3.0 Emulated與EAX 4.0 Emulated);
Creative Audigy、Audigy 2可支持至EAX 3.0 HD(新驅動可支持EAX 4.0 HD 哦);
Creative Audigy 4可支持至EAX 4.0 HD;
Creative X-Fi MB可支持至EAX 4.0 HD;
Creative X-Fi MB 2可支持至EAX 5.0 HD;
Creative X-Fi( Xtreme Audio 除外!此款晶元非X-Fi的CA20K1,而是CA0111或CA0110,不是正宗的X-Fi)、華碩Xonar、Auzentech X-Fi Prelude可支持至EAX 5.0 HD;
其他的OEM產品所支持的版本根據具體產品而定。(其他的OEM產品,如華碩玩家國度主板子音效卡、華碩玩家國度G系列筆記本音效卡、DFI主板上的通過X-Fi認證的集成音效卡、微星BigBang主板認證集成音效卡等等)

現狀發展


EAX發布以來,從EAX 1.0已經發展到EAX 5.0 HD,並有多家硬體和軟體廠商支持,如YAMAHA、ESS、Aztech、QSOUND、創新、華碩等,EAX 2.0還被集成在IA-SIG(InteractiveAudioSpecialInterestGroup)。
但目前EAX並不樂觀,因為OpenAL迅速崛起的關係,基於OpenAL的遊戲音效引擎多了起來,比如Rapture3D、Fmod等等,這些引擎對EAX造成的衝擊並不小;同時基於OpenAL開發的遊戲在跨平台移植的時候靈活性大大增強,工作量相應減少,所以遊戲廠商越發青睞使用OpenAL開發遊戲而不使用DirectSound,這使得從DirectSound起家的EAX再度受到冷漠,再加上從Windows Vista后微軟更改的音頻機制,使得一般用戶在實現DirectSound遊戲的EAX音效時變得困難,需要藉助Creative Alchemy(鍊金術)驅動,而創新的驅動在玩家的口碑中並不優秀,所以造成了用戶的冷淡,對EAX的熱情並不是很大。

通用寄存


將數據33221100H傳送到EAX寄存器的指令
將數據33221100H傳送到EAX寄存器的指令
EAX也是一種32位通用寄存器。 EAX寄存器稱為累加器,AX寄存器是算術運算的主要寄存器,所有的輸入、輸出只使用AL或AX人作為數據寄存器。在80386及其以上的微處理器中,EAX寄存器可以用來存儲單元的偏移地址。
EAX可稱為數據寄存器,你除了直接訪問外,還可分別對其高十六位和低十六位進行訪問。它們的低十六位就是把它們前邊兒的E去掉,即EAX的低十六位就是AX。而且它們的低十六位又可以分別進行八位訪問,也就是說,AX還可以再進行分解,即AX還可分為AH(高八位)AL(低八位)。