EAX环境音效扩展
音频处理技术
EAX是什么?相信很多人都会脱口而出:Environmental AudioExtensions?环境音效扩展集。但我发现并不是每个人都清楚EAX的真正含义和特性,以致于常常可以在一些文章、讨论中看到一些似是而非的说法和争论,造成了很多不必要的误解。
EAX的本质
EAX是创新推出的3D音效API插槽标准(非独立音频API,不与DirectSoundOpenAL同级,而是寄生于DirectSound与OpenAL的3D音效),而且这个插槽标准目前必须依赖于微软的DirectSound3D或OpenAL。这里讨论的EAX指代的是音频API插槽标准,而不是创新驱动中常见的“Environmental Audio(环境音效)”,虽然名称相同,但并不是一个事物,在讨论游戏音频引擎的时候请大家明白这一点,不要混淆哦。
EAX 1.0是一个开放的API插槽标准,也就是说,任何人都可以使用这一接口插槽来开发或者在自己的软硬件产品中加入对EAX的支持,但开放的仅仅是接口插槽本身,至于如何实现EAX以及效果如何,就要靠自己的努力了。而EAX 2.0及其以上的标准就很少有其他厂商支持。大家都记得Creative收购了Ensoniq,一间著名的音频技术公司,EAX实际上是由Ensoniq帮助开发出来的。
目前音频设备所支持的EAX版本的详细情况请看下文,下文将有详细介绍。
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密不可分,所以也容易造成误解。
EAX1.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渲染
EAX2.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)
- 增加了特定材质音效的混响效果参数
EAX3.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)
- 使用了新的混响引擎
EAX4.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)
EAX5.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主要依附于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发布以来,从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的热情并不是很大。
参考资料
最新修订时间:2023-12-11 14:34
目录
概述
EAX的本质
参考资料