Jump to content

Audio APIs and EAX


Recommended Posts

I want to explain what i know about gaming audio so that it's clear why I write what I write in the wiki. What I've learned is from observation, since I don't program games I don't know the finer details; it would be nice if someone that knew such info could chime in.

 

DirectSound

DirectSound seems to have been the basis for Windows-based games between 1996 and 2007. What I mean by that, is that there were other audio tools or APIs, such as Miles Sound System, but it pretty much piggybacked on DirectSound. Unreal's audio plugin was Galaxy Audio, which also used DirectSound. It seems like every audio API of the time routed back to DirectSound. Also, if a game had EAX, it used DirectSound.

 

In the past, EAX was a component of DirectSound 3D (DirectSound 3D was a component of DirectSound). When DirectSound 3D stops working properly (Vista and newer), EAX stops working and, as a side effect, surround sound stops working. In DirectSound games that don't use EAX or DirectSound 3D, surround sound works fine in newer Windows versions without the need for DirectSound restoration software; I don't exactly know why that is but I assume that DS3D simply depends on something that was cut off after Vista. Some games that don't use EAX still need DirectSound restoration software for surround sound to work properly; I assume this is because of shoddy coding, but it's typically games that use Miles Sound System (Duke Nukem Forever, Source engine games to some extent).

 

XAudio2 replaced DirectSound. XAudio2 has its own software-based environmental effects and I've not seen mention of it having any Creative EAX features.. RAGE, Wolfenstein TNO, Far Cry 3, Watch Dogs, and the Windows versions of Metro 2033 and Last Light use XAudio2, just to name a few games.

 

OpenAL

OpenAL was initially created by Loki Software, a Linux software developer, and later obtained by Creative. OpenAL is able to access hardware features of sound devices in newer operating systems, it is its own audio API, no DirectSound required. I think that Creative hoped to use OpenAL as a vessel to keep EAX alive through the changes made to Windows Vista but I have a feeling that a lack of support (surprise!) and lack of tools provided by Creative has lead to OpenAL not being very popular and lead to the death of EAX. I'm under the impression that EAX 4 and 5 only work with OpenAL and not DirectSound. DOOM 3 (not BFG edition) refuses to activate EAX 4 unless you have OpenAL installed.

 

Some OpenAL-based games seem have a DirectSound dependency (UT2004, Postal 2) that makes it seem like the game's OpenAL software isn't properly communicating with your audio drivers. UT2004 and Postal 2 seem to respond to DS3D restoration software; I get EAX effects in UT2004 and surround sound restored in Postal 2. Doesn't make much sense to me since an OpenAL game shouldn't need DirectSound, I just try various things and go with what works.

 

FMOD

FMOD is a fairly popular API because it includes tools (a GUI) that make integrating audio into games fairly simple for audio creators and not just programmers. FMOD is an audio API that primarily does audio on the CPU but can access EAX features and offload to audio hardware. Some examples of FMOD using EAX would be Cryostasis and the first BioShock. You may notice that both of those games mention OpenAL. What is likely happening is that FMOD is leveraging OpenAL to access EAX 4/5 features. FMOD is still doing the hard work, it's just accessing OpenAL for help. Of course, now days with stronger CPUs, hardware-based audio processing isn't really necessary and FMOD is very good at doing its own environmental effects in software on the CPU. The Crysis games use FMOD with software mixing and I thought that Crysis 2 and 3 sounded very good.

 

Wwise

Wwise is similar to FMOD in that it's easy for audio creators to use but I don't think that it can access EAX features. That doesn't matter, though, because I've been fairly impressed with Wwise's environmental effects. My only complaint with Wwise was that they didn't initially support 7.1 output but they added that feature in October 2013. I think that Thief (2014) was the first Wwise-based game to support 7.1 and then the Outlast developers seemed to have updated the game's Wwise implementation and it now outputs at least 7.0 audio.

 

Wwise and FMOD are both pretty good with their software-based environment effects, some games do sound ugly but it seems to depend on the person implementing the audio.

 

 

My page has info about what games us what API: http://satsun.org/audio/

Link to post
Share on other sites

As you said, plain DirectSound games work on NT6 ,due to an emulation layer which still emulate it through WASAPI (with possibly a quality reduction). 

 

But then you have DirectSound3D, which since 1996 standardizes...needless to say 3D audio.

I guess precisely for this ancient origin it always expected an hardware accelerator to work.

 

And with no Hardware Abstraction Layer left in Vista and newer, and an already mentioned emulation layer which is simple as hell, the only possible result is to use plain software fallback mode.

This of course as we know just support stereo audio

It does indeed support multichannel audio, at least on my 7

 

I find difficult though to believe there exist games which support surround sound in this mode.

 

And there's no shoddy coding in just DS3D required to have surround sound , it's the only theoretically needed component (which btw is what alchemy/xear3d restore, not plain DS).

Instead I would call shoddy coding to require EAX to just have 5.1 or 7.1 sound.

 

Finally I'm not sure for EAX 5, but at least for EAX 4 I think there are games which are not openAL, I recall medieval 2: total war being one of these

Link to post
Share on other sites

And with no Hardware Abstraction Layer left in Vista and newer, and an already mentioned emulation layer which is simple as hell, the only possible result is to use plain software fallback mode.

This of course as we know just support stereo audio

 

I find difficult though to believe there exist games which support surround sound in this mode.

This makes sense. Without the HAL, the game falls back to software / stereo mode but I assume this only happens in DirectSound3D games. DirectSound games that don't use the DirectSound3D component, work normally in software with surround sound. An example of that would be Fallout 3 and New Vegas. Those games use just DirectSound (no DS3D) and their surround sound works fine in NT6.

 

And there's no shoddy coding in just DS3D required to have surround sound , it's the only theoretically needed component (which btw is what alchemy/xear3d restore, not plain DS).

Instead I would call shoddy coding to require EAX to just have 5.1 or 7.1 sound.

Maybe it is different usage of DS and DS3D. Most DirectSound games I have tested that don't use EAX have functioning surround sound in software mode but most games that have EAX seem to fall back to stereo in software mode and of course EAX is disabled. I have assumed that if a game did not use EAX, then it should use software-based DirectSound but it seems that perhaps some games use DirectSound3D even though they do not use EAX or audio hardware features. The trend I have seen is with Miles Sound System games like DNF, Half-Life 2, and Team Fortress 2, they don't use EAX but maybe they use DS3D because using ALchemy fixes surround sound problems. Source engine games with MSS have environmental audio effects but I assume it is done in software with MSS. I'm not sure if DS3D did any type of reverb effects in software outside of EAX. DS3D games that have EAX sound very dry with EAX disabled so it seems that those games depended entirely on EAX to provide environmental effects.

 

In short, if a game was programmed for DirectSound in software mode, everything works fine in NT6, but if the game was programmed for DirectSound3D then audio breaks in NT6 regardless of if it used EAX.

 

I think it basically comes down to if a game is trying to use DS features that were affected by NT6 then the audio breaks in NT6, but if the game was programmed using the most basic (software) DS features then it is unaffected.

 

Finally I'm not sure for EAX 5, but at least for EAX 4 I think there are games which are not openAL, I recall medieval 2: total war being one of these

I think this is just an issue with DOOM 3. When DOOM 3 was initially released it used DirectSound. They later releast a patch (1.3) that added EAX 4 support and OpenAL (OpenAL not mentioned in patch notes). My guess if that they left the DirectSound portion as-is and just implemented the EAX stuff with OpenAL so the game will only recognize EAX when OpenAL is available.
Link to post
Share on other sites
On 7/24/2014 at 10:29 PM, Satsun said:

This makes sense. Without the HAL, the game falls back to software / stereo mode but I assume this only happens in DirectSound3D games. DirectSound games that don't use the DirectSound3D component, work normally in software with surround sound. An example of that would be Fallout 3 and New Vegas. Those games use just DirectSound (no DS3D) and their surround sound works fine in NT6.

Wait wait wait... Fallout 3 is one of those game where I could feel the greatest difference after restoring. I mean.. with my simple stereo headphones it's really hard to understand if the game is really outputting 6/8 channels, or it's just using some kind of HRTF, but I'm quite sure FO games are using DS3D.

Besides, it seems I'm not the only one to think like this

 

Nevertheless, you made me wondering about this thing so I tried to check what games were claimed to be plain DirectSound only but which still could provide something different than shitty stereo. Unsurprisingly, the good old ALchemy page helped a lot

  • Age of Empires 3: it has just plain stereo, lol
  • Call of Duty 4: it uses Miles Sound System, so a somewhat "custom" audio framework which includes a proprietary software multichannel provider. Besides this file "used in older games such as Call of Duty 2" seems intriguing
  • Crysis: it uses FMOD.. and I then realized it could use DirectSound3D too. Your ears could give this last a check 😛
  • Hellgate: London: I don't really know this game.. but I find hard to believe that a game with a DX10 engine uses plain DS for audio.. I won't strike the name since this is just a supposition though
  • Heroes of Might and Magic V: I'm uncertain for this game too. Other games in the series used to have MSS.. but I have no clue for this. Even though the only opinion I read was bad
  • Star Trek: Bridge Commander: a 2002 game with EAX which needs alchemy? somebody must have missed "3D" while writing this
  • Starcraft: idk
  • Tomb Raider Anniversary: I think this was a pretty bad misspell.. TRAOD had EAX 3 and DS3D.. i'm not expecting less from the sequels
  • Tomb Raider Legend: the same applies for legend
  • Trackmania Original: I'm too tired atm to search, but after this all.. I'm quite sure this fall within one of the previous thing

If you have other counterexample feel free to post them

 

On 7/24/2014 at 10:29 PM, Satsun said:

Maybe it is different usage of DS and DS3D. Most DirectSound games I have tested that don't use EAX have functioning surround sound in software mode but most games that have EAX seem to fall back to stereo in software mode and of course EAX is disabled. I have assumed that if a game did not use EAX, then it should use software-based DirectSound but it seems that perhaps some games use DirectSound3D even though they do not use EAX or audio hardware features. The trend I have seen is with Miles Sound System games like DNF, Half-Life 2, and Team Fortress 2, they don't use EAX but maybe they use DS3D because using ALchemy fixes surround sound problems. Source engine games with MSS have environmental audio effects but I assume it is done in software with MSS. I'm not sure if DS3D did any type of reverb effects in software outside of EAX. DS3D games that have EAX sound very dry with EAX disabled so it seems that those games depended entirely on EAX to provide environmental effects.

I find pretty hard you had working surround w/o restoration. What game are you talking about?

I think then that technically EAX effects can be applied to plain stereo signal as well... but EAX=Creative=licensed hardware = dedicated hardware was always expected, since 1998.

Even better, nothing could stop microsoft from implementing EAX support (at least the first 2 versions) in its software emulator... but we all know this won't be the case.

 

And I think nothing could stop microsoft from making the emulation layer answering "yes" when questioned about hardware support (I don't really know what it's being checked here, but I suppose it could look if "Generic Hardware" device it's available)

 

On 7/24/2014 at 10:29 PM, Satsun said:

In short, if a game was programmed for DirectSound in software mode, everything works fine in NT6, but if the game was programmed for DirectSound3D then audio breaks in NT6 regardless of if it used EAX.

 

I think it basically comes down to if a game is trying to use DS features that were affected by NT6 then the audio breaks in NT6, but if the game was programmed using the most basic (software) DS features then it is unaffected.

As I said, as far as I understand, if back in those day you were an audio engineer and you were programming with just "software DS" in mind you wouldn't have been thinking to surround audio or to your users

I mean.. Let's try to give a good explanation once for all

 

 

I gave a big check to the microsoft developer network and there's very few mention of DirectSound3D. 99% of times it will be just Directsound. As said on wikipedia this may be due to the names merge happened back in the DX8 days..

 

But let's keep using the common distinction for ease: DirectSound was plain stereo.

DirectSound3D was the extension used for managing sounds with XYZ coordinates, a must have for surround audio.

If you think about it, it's obvious: you could have even 20 speakers around you, but as far as the audio is not positionally placed in 3D space, it's pointless

 

Anyway, now the question is: did Vista remove DS3D specifically?. No.

The only thing missing is good old Hardware Abstraction Layer. Nothing else is mentioned.

 

So why older games have bad audio? I myself thought (after days spent googling) that fallback software 3D audio was indeed possible and feasible. But we all know things are different.

Call this performance reasons, call this quality reasons, call this laziness (why implementing your own sound engine (i.e. more work, more weak links), when you can just blame sound card manufacturer for psychoacoustics stuff?), call it negligence (hey, CPU-rendered audio has no future, let's just use LOCHARDWARE to prevent slowdowns on the computers of those fools that could have forgot their soundblaster on the shelf)...

... and well, this may be why we are in this situation.

Or

Although windows XP seemed to have nothing against software elaborations..

.. one of the capabilities of the new Windows Vista audio driver stack was the support for multi-channel software buffers... something that left me puzzled...

 

However this second theory could be easily ruled out just by trying no other than Fallout 3 under XP.

In fairness, this game gave 7 channels (satsun says 8, but what's count is that they are not 2) without alchemy or GX, on 7. Just make sure to use complete emulation or basic acceleration modes (this should completely mimic windows NT6 behavior)

 

We will eventually understand if it used to be OS's fault (damn microsoft then) or it was all developers's fault (damn them then d:)

Just for completeness, I'd like to mention I spent two entire hours looking for fallout 3 audio engine (hex scan executable, searched for .dlls, I even watched the entire damn credits..). Anyway I had no luck. Some claim game uses FMOD (that was in fact a possible choice)... but FMOD own director seems somewhat to deny....under the circumstances, I would say they used an in-house (luckily in 2008 they thought it was time to include software multichannel audio routing too)

 

So, I can see only two reasons for surround audio not playing:

  1. Game developers always coded games in such a way multichannel could be enabled only if outsourced to an sound card/chip. Nowadays this could sound crazy but 10 years ago doubling or even quadrupling audio channels could kill performance
  2. DirectSound emulation layer just report back system has 2 channels

Of course when I'm talking of hardware I'm talking of whatever thing can report back it has hardware buffers, including Realtek, Via integrated chips

TL;DR, a bit of both: applications should have checked separately 3D and hardware buffers but they didn't (in fact the latter was such a lazy given that sometimes it was like implicitly assumed)

On 7/24/2014 at 10:29 PM, Satsun said:

I think this is just an issue with DOOM 3. When DOOM 3 was initially released it used DirectSound. They later releast a patch (1.3) that added EAX 4 support and OpenAL (OpenAL not mentioned in patch notes). My guess if that they left the DirectSound portion as-is and just implemented the EAX stuff with OpenAL so the game will only recognize EAX when OpenAL is available.

I said I don't know if there exist EAX 4 games using directsound Ok, anyway F.E.A.R. uses EAX4 with DS... so we may just say that the only version that potentially is OAL-only is the fifth (until proven otherwise of course)

Edited by Mirh
Link to post
Share on other sites

Alright, so there is definitely something different about Fallout 3. The environmental effects don't seem different but certain sound effects play differently. Without ALchemy, surround sound still works but sounds are played differently. I went into a subway and noticed my footsteps playing in the center channel, this is without ALchemy. With ALchemy, the footstep sound was played in the two from speakers. I don't think FO3 uses EAX and surround definitely works without ALchemy, but it seems that using ALchemy definitely changes something so it is probably safe to say that if you want the best sound experience that you should use DS3D restoration software with Fallout 3. I might boot to Windows XP to see how the audio in these games performs there but that might not happen for another 1.5 weeks.

 

Tested Oblivion and Fallout NV and they both have the same behavior.

 

For Crysis, I didn't notice any difference. There don't appear to be any references to DSOUND.DLL in any of Crysis' files.

 

I'll have to check out those other games.

Link to post
Share on other sites

Oh, I did a nice discovery while looking for explanation of the infobox game template

You can actually not only mention the usual graphic engine, but audio engine as well! With something like:

 

{{Infobox game/row/engine|Miles Sound System 6.2|Audio}}

 

 

note for dummies: audio engine (FMOD, MSS) is a different notion from audio API (openAL, directsound, Aureal)

Link to post
Share on other sites

I wouldn't mind contributing to adding audio software to the engine area. Some games have similar audio issues and I've noticed that these issues are typically related to the audio engine so if people had that information to reference then they might know what to expect. One common issue that was brought to my attention was odd center channel use in games that use Wwise; Dishonored and Borderlands 2 are just a couple games that exhibit this issue.

Link to post
Share on other sites

I have just tried with Mass Effect 1 page and man, I was even able to include the reference. I'm really satisfied.
Speaking of wwise, I already found some cool lists which should make obsolete to own games to check that :p

Anyway, I wanted to be clear once and for all about the differences between lower level APIs and actual engines (which is something messed on your website)

XAudio2 is the low-level API meant to replace DirectSound (2007). And it "sits" on its same level.
XAudio2 is by no means windows vista specific, although when on windows XP it has to make compromises. In this case XAudio2 has to to rely -ironically- on DirectSound to work.
We could say that on the other hand, when on Windows Vista, it's the contrary: DirectSound has to rely on XAudio2 to be emulated/work. LEAP is not XAudio2
take note: I suspect the previous diagram I linked is somewhat incomplete, since DirectSound and WASAPI can not be on the same level. WASAPI is the lowest level API before drivers, where on windows XP KMixer would be there (which indeed is the ancestor of WASAPI itself, thus I don't understand why they placed a middle level api such as directsound alongside)

None of the previous API could be considered a proper audio engine/framework/middleware because they are not high level enough

While I was looking for these information, I found Microsoft itself recommend XACT as a audio engine, and indeed I found strange you found it in just a game out of 176.
Nevertheless as explained here, XAudio and DS are on completely different abstraction levels

Last, and least I was just wondering why microsoft claims XAudio2 "removes the 6-channel limit on multichannel sounds" which seems really BS in my opinion..

Regards and thanks for reading

Edited by Mirh
removed wrong sentence
Link to post
Share on other sites

I'm sure I need to do some clean-up on my page but I'm not too concerned with researching very deep into DirectSound and XAudio2, I do need to make sure that I'm using the correct terminology, though! :D

 

When it comes to looking at a shipped game, I don't know how to differentiate between XAudio2 and XACT. I did see the note about MS recommending people use XACT but many games seem to have XAudio2 references in their executable so I just mark those as an XAudio2 game. I think I marked Bastion as XACT because it had no XAudio2 references but it has some sound banks associated with XACT (XWB files); many XAudio2 games also seem to have XACT sound banks so I'm not sure precisely which specific Microsoft API is being used.

 

I have seen the quote "removes the 6-channel limit on multichannel sounds" and I was not sure why they said that. Most DirectSound-based games I've tested output 7.0/7.1. I think that maybe whoever wrote that did not know that DirectSound could already output to 8 speakers. I can't currently find it, but I read that XAudio2 can output to many more speakers, I guess for if they want to output to something like a Dolby ProLogic IIz (9.1) configuration. I have also read that OpenAL can supposedly output to any number of speakers; maybe it can. I don't know what the theoretical maximum number is, but very few people have 7.1 speakers and most consumer-level sound devices are either 5.1 or 7.1 so I leave it at that.

 

I don't understand what you're saying about Mass Effect 1, I think we have some language barrier issues. :) I tried to play ME1 in the past but that game crashed very often and I lost interest. Mass Effect 1 uses OpenAL, if that is what you're talking about. Wwise was used in ME 2 and 3.

 

I would like to know more about audio APIs but I would prefer if someone that already had experience could explain it all because it seems somewhat complicated.

Link to post
Share on other sites

I talked of the Mass Effect 1 page just to say I had mentioned the audio engine in the infobox and it seemed good-looking. Nothing more nothing less :p

 

And indeed, I'm not really interested in the actual technical differences between APIs, but more to the use of the proper terminology.

I was just somewhat puzzled for the discrepancy on your website. 

 

For the records, DirectSound, OpenAL, Aureal3D and XAudio2 -should- all sit on the same level. And those are the APIs (which is the name of one of the row of your table).

And only then you have the engines.

 

e.g: physX is a middleware, whilst CUDA is the API

Link to post
Share on other sites

For the records, DirectSound, OpenAL, Aureal3D and XAudio2 -should- all sit on the same level. And those are the APIs (which is the name of one of the row of your table).

And only then you have the engines.

 

Are you saying that FMOD and Wwise are not APIs? I don't know for sure, but at least this guy and this guy calls them APIs. Wwise and FMOD are definitely their own audio engine but they also have their own API since they don't depend on DirectX. FMOD does have some hardware and EAX features that depend on OpenAL, but other than that FMOD is its own entity. I believe that FMOD and Wwise just go straight 

Link to post
Share on other sites

So... I have been thinking to this for the whole day...
I was going to say that, technically yes, they are all APIs from games perspective.
My point was that none of the "bare" simpler APIs had something like these though and that you could hardly have called them "engines" but...
 
perhaps it's just everything relative..  it's a matter of "the highest abstraction layer which processes sound" maybe...
That thing that receives game objects position and brings out the signal from "game level" to "OS level"
 
I mean... it all depends on the definition you give to engine: should it be necessarily high-level and -possibly- come with dev tools/sdk (like those in the first 3 links).. or should it just be whatever "codes" the audio part?
For example, here we could not say DS is the engine (wwise is), but here OpenAL is supposed to be able to replace FMOD ... (which afterwards would still route audio to openAL... -messy isn't it?-)
 
 
I think this is already enough material to reflect upon.
I end with a little OT: bioshock supports alchemy too (this should be linked with what is said in the soundblaster.com website) XD -mind 100% blown-

EDIT: FMOD dropped support for DirectSound hw and OpenAL in 2010.

Edited by Mirh
Link to post
Share on other sites

As always, when I'm looking for completely different things (the last remnant) I find the most mixed things.

 

Unreal Engine technically has an own audio engine which could be listed alongside 3d party such as FMOD, miles and so on

Speaking of Unreal Engine 3: openAL was supposed to be the default audio provider (notice the 7.1 support)

 

Then, starting from November 2009 XAudio2 took its place (and look! 5.1 is almost listed as a new cool feature!)

-OpenAL should still be unofficially supported somewhat, as mentioned in the december 2010 iOS version release notes-

 

Last but not least, did you ever tried any of the OpenAL replacements?

-more about OpenAL routing -

-additional info about routing- It seems cm_oal.dll/ct_oal.dll exposes audio cards (in this case c-media and creative based ones) to the system (otherwise just generic providers are present (hardware is not present neither from Vista onwards))

 

Besides, it seems generic openAL providers should be avoided. Native ones are always better

Edited by Mirh
OAL providers note
Link to post
Share on other sites
  • 1 month later...

Oh wow, you're doing great work guys. I've always been quite... flustered about what's happened to audio quality in general over the last decade, actually more the sound in Thief 1 is still.... blah I digress great work!

A question I have is, do we have a list somewhere of games that need all the audio "fixes" for proper audio output?

EDIT: Just noticed the original link, that's neat could be integrated in PCGW.

Link to post
Share on other sites
  • Found PCGamingWiki useful? Please consider making a Donation or visiting our Patreon.
  • Who's Online   1 Member, 0 Anonymous, 273 Guests (See full list)

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Forum Statistics

    1,541
    Total Topics
    8,298
    Total Posts
×
×
  • Create New...