VOGONS

Common searches


indirect sound

Topic actions

Reply 40 of 228, by Osprey

User metadata
Rank Member
Rank
Member

jonpol, I'm curious as to why EAX support emulation is now disabled by default. Is that because it was causing technical problems, was it causing confusion with people who didn't understand that it didn't actually enable EAX or was it something else? Thanks.

Reply 42 of 228, by Stiletto

User metadata
Rank l33t++
Rank
l33t++
ujakaman wrote:

Cool thread:)

Can you please stop with posts like this? Post something longer, or more informative, or a larger reaction.

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 43 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie
Osprey wrote:

jonpol, I'm curious as to why EAX support emulation is now disabled by default. Is that because it was causing technical problems, was it causing confusion with people who didn't understand that it didn't actually enable EAX or was it something else? Thanks.

When I was first working on IndirectSound (before I had even released it), I was going through many of my old games to test, and I found out that Deus Ex wouldn't render 3D sound unless EAX was supported. (The two aren't technically related, but I imagine the Deus Ex developers decided to have two audio paths, one with hardware acceleration and one without, and so if EAX wasn't supported the game decided to use the more basic audio path?) In order to figure this out and confirm my suspicions I had to add fake EAX emulation, and at the time my thought process was "I'll just enable it by default so that more games work with 3D sound out-of-the box".

The problem with this (and something I hadn't anticipated in the early days of IndirectSound when I was just testing whether there was any 3D sound at all and no users had actually played through games) was that EAX provides occlusion and obstruction, which gives the characteristic muffled low pass filter effect when a sound is played on the other side of a wall. Some games just turn on EAX for the reverb and don't do much else, but the more care that a game had in its EAX usage the more this occlusion/obstruction effect is used. The consequence of this is: If IndirectSound claims that EAX is supported and a game then uses occlusion/obstruction and IndirectSound doesn't implement it then the sounds are too loud. There are cases where something is supposed to be really muffled and barely heard but will instead be played at full volume.

So that's why I changed it: Having EAX support be enabled by default was done to make some games work that were ill-behaved, but it caused other games to not sound right even though they were well-behaved. I thought it probably made more sense to put the burden of changing a setting on those few games that don't support 3D without EAX rather than on those games that are doing what they're supposed to. Or, another way of looking at it: If a user tries to use IndirectSound with a game and some sounds are way too loud then it makes IndirectSound seem buggy (which it is in this case 😊 ), but if a user tries to use it and doesn't hear 3D sound s/he might look into it more and realize that it's just a matter of enabling EAX for that specific game. (Or, to put it even another way: EAX really shouldn't be enabled in IndirectSound unless it has to be to get 3D sound to work; having it off doesn't hurt anything, but having it on can make things sound incorrect.)

Does that make sense? If there are reasons to change it back that I haven't thought of let me know.

If I ever get EAX emulated for real (I know, I know... I've been talking about that for years with no progress) then I will make it enabled by default again.

Reply 45 of 228, by Osprey

User metadata
Rank Member
Rank
Member

That's a great, thorough explanation, jonpol. That makes total sense. Thanks a lot for taking the time to explain.

KainXVIII wrote:

What's new?

The changelog is on the website:
http://www.indirectsound.com/downloads.html

Reply 47 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie
lowenz wrote:
jonpol, have you seen this? https://github.com/nRaecheR/DirectSoundControl […]
Show full quote

jonpol, have you seen this?
https://github.com/nRaecheR/DirectSoundControl

A branch:
https://github.com/elishacloud/DirectSoundControl

No, I hadn't seen those. Looks interesting! Are you involved with either?

Reply 50 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie
lowenz wrote:

No, but I mailed them to you the other day (I'm Lorenzo 😁 )

Haha, busted! Sorry, I knew who you were, but I somehow saw that email and then promptly forgot about it. Can I blame it on being busy? Old age? 😊

Reply 51 of 228, by CoolGamer

User metadata
Rank Member
Rank
Member

jonpol,

Thanks for the IndirectSound wrapper. Is it possible to take advantage of OpenAL (OpenAL32.dll) or "OpenAL Soft" (soft_oal.dll) to emulate EAX effects?
http://kcat.strangesoft.net/openal.html

OpenAL Soft has EAX emulation (which can be turned on/off through alsoft-config.exe), but I can't get EAX games (such as Beyond Good & Evil) to use it. 🤣 As a result, that project is not really working for me.

IndirectSound's dsound.dll works with Beyond Good & Evil and tricks the game's configuration utility to think that my sound card supports EAX. But sadly, it is not really emulating EAX effects (based on your readme documents). Can IndirectSound's dsound.dll take advantage of "OpenAL Soft" to emulate EAX effects?

I am sure that your own EAX implementation will be the most accurate when it is done, but I am wondering if OpenAL Soft can be a quick & temporary solution for now.

Reply 52 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie
CoolGamer wrote:
jonpol, […]
Show full quote

jonpol,

Thanks for the IndirectSound wrapper. Is it possible to take advantage of OpenAL (OpenAL32.dll) or "OpenAL Soft" (soft_oal.dll) to emulate EAX effects?
http://kcat.strangesoft.net/openal.html

OpenAL Soft has EAX emulation (which can be turned on/off through alsoft-config.exe), but I can't get EAX games (such as Beyond Good & Evil) to use it. 🤣 As a result, that project is not really working for me.

IndirectSound's dsound.dll works with Beyond Good & Evil and tricks the game's configuration utility to think that my sound card supports EAX. But sadly, it is not really emulating EAX effects (based on your readme documents). Can IndirectSound's dsound.dll take advantage of "OpenAL Soft" to emulate EAX effects?

I am sure that your own EAX implementation will be the most accurate when it is done, but I am wondering if OpenAL Soft can be a quick & temporary solution for now.

Hi,

It's not as quick or easy as you might think, because the way that OpenAL handles updates is different than XAudio2, which is what IndirectSound uses. When I started IndirectSound I originally was going to use OpenAL, and although I've forgotten details (I guess it's been 5 years now!) one of the things I didn't like about the API was that this issue with how updates worked.

With that being said, it doesn't mean that it's not possible or not a good idea. I've been wondering if I should make an alternate version of IndirectSound that uses OpenAL Soft, because it's a pretty frequently requested feature. I think some things would be inferior to the current version of IndirectSound, but at least EAX would work which would make people happy 😊 . It would be a fairly substantial project, however (all of the hardware emulation code would have to be rewritten), and I don't have any current plans to do it. I'll think some more about it, though...

Reply 54 of 228, by XJDHDR

User metadata
Rank Newbie
Rank
Newbie

If it helps, I know that someone (I think it was KCat - the same guy behind OpenAL Soft) created a translator that converts DirectSound3D to OpenAL a while back for The Elder Scrolls: Oblivion
http://kcat.strangesoft.net/dsoal.zip
forums.bethsoft.com/topic/1192376-relz-restoring-surround-sound-and-eax/

It stopped working sometime around when I upgraded to Windows 8 though and I kept forgetting to mention this to him. The source code is included with the archive

My creations and essays:
https://xjdhdr.gitlab.io/

Reply 55 of 228, by CoolGamer

User metadata
Rank Member
Rank
Member

XJDHDR,

Thanks for the dsound to OpenAL fix. I couldn't get it to work with Beyond Good & Evil. It adds bunch of different virtual sound card options to the drop down list of the game's configuration tool but EAX option is greyed out for all of them.

But still, it might work with other games, so it is good to know these things. Thanks for pointing it out. It is good that the source code is also included.

Jonpol,

I am not a programmer but I hope the source code of the fix that XJHDR posted can be useful to you. Since it is hosted on kcat's website, it seems like it was made by OpenAL soft developer kcat as a port of OpenAL Soft for dsound games.

I have another idea regarding EAX compatibility. Is it possible for IndirectSound to spoof the name and device ID of Creative cards? It can either add a new virtual card to the drop down list of audio cards or just change the name and device ID of the installed system sound card. dsound.dll can read the desired card information (name, device id, etc.) from dsound.ini file.

This way it might be possible to chain Creative Alchemy software with IndirectSound. Creative Alchemy application does not start unless it detects a Creative Sound Blaster card (internal card or external usb card) on the system. Creative Alchemy's dsound.dll (located in game directory) can take care of EAX emulation calculations and pass all call's to IndirectSound's dsound.dll file (located under Windows\SysWow64 directory). IndirectSound can take care of Hardware acceleration features that Alchemy needs.

To accomplish this, we will have to rename windows system dsound.dll file located under SysWow64 folder to wsound.dll and place IndirectSound's dsound.dll and dsound.ini files under SysWow64. You can add an option to dsound.ini that specifies the name of the renamed original dsound.dll.

Cards supported by Creative Alchemy are listed on the link below. External USB powered "Sound Blaster X-Fi Surround 5.1 Pro" or "Sound Blaster X7" seem to be prime candidates for spoofing. 😀
http://support.creative.com/kb/ShowArticle.aspx?sid=28967

Latest Creative Alchemy version is supposed to be version 1.45.12 according to PC gaming wiki. It can be downloaded from pcgaming wiki website.
https://community.pcgamingwiki.com/files/file … eative-alchemy/

Please let me know what you think. I came up with this idea, when I saw that the dsound.dll fix that XJDHDR posted adds virtual sound card names to the audio devices list detected by games.

Reply 56 of 228, by UCyborg

User metadata
Rank Member
Rank
Member
CoolGamer wrote:

Creative Alchemy application does not start unless it detects a Creative Sound Blaster card (internal card or external usb card) on the system.

Not really true. The actual reason it doesn't start is because you don't have valid license files to use it. These would be usually located in C:\ProgramData\Creative\SoftwareLock and they're tied to computer hardware. ALchemy doesn't care about the sound card installed in the computer, it can work with any sound card.

The application is used to copy ALchemy's dsound.dll to game's folder to get that game to use it. It also silently adjusts some registry entries on first launch on Windows 8+ since MS made more system components being referenced by absolute path (security reasons), so ALchemy's dsound.dll is also picked in the case game tries initialize DirectSound via COM.

Anyway, the first thing that Alchemy dsound.dll does is check if valid license files are present. If they're not, it will act as a simple pass-through to system dsound.dll. If license is OK, it will try to load ct_oal.dll from system directory. This file is usually present only when you have Creative's sound card. It is hardware accelerated OpenAL implementation. If absent, the inferior implementation baked in dsound.dll itself will be used. Here's the interesting part, some Creative's software packages come with Sens_oal.dll, which is a full-blown software OpenAL implementation (It's called Host OpenAL), supporting both older EAX and newer EFX standards for environmental audio effects. Renaming the DLL to ct_oal.dll makes it usable with ALchemy. This one is also better than whatever is baked in dsound.dll. But, as with ALchemy itself, it works only if valid license files are present.

Both components tend to be bundled with drivers for various Creative sound cards, but also with Sound Blaster X-Fi MB3, which is a software only package for spicing up audio, it also comes with virtual audio device. Since I have it, I was able to verify on my computer that just preventing access to license files renders ALchemy inoperable. Whether the virtual Sound Blaster X-Fi MB3 device was present or not also didn't change anything. As long as license checks out, it should be happy with just integrated sound card with Windows' default drivers, I have VIA VT1708B.

There are some sound device name checks in Alchemy's dsound.dll, but they appear to be triggered only if you try to get ALchemy to use incompatible ct_oal.dll.

Regarding IndirectSound
I've noticed that in Drakan: Order of The Flame, sounds are funked up, like playing bad tape. Have to hear it yourself, when you start the game, hold Shift and make sure 3D sound buffers are enabled on Sound tab.

When using Windows 10 with some games the dsound.dll DLL is ignored even when it is located in the correct place and works with the same game using earlier versions of Windows.

Check for references to dsound.dll in registry under HKEY_CLASSES_ROOT\CLSID and HKEY_CLASSES_ROOT\Wow6432Node\CLSID You should find a bunch of keys containing "%SystemRoot%\System32\dsound.dll". These used to be "dsound.dll", allowing dsound.dll to be picked from game folder if game uses COM to initialize DirectSound. One way to modify those entries is launching regedit as TrustedInstaller. Process Hacker with TrustedInstaller plugin can do it.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 57 of 228, by CoolGamer

User metadata
Rank Member
Rank
Member

UCyborg,

Thanks for the information. It seems like hardware ID spoofing via virtual card would be useless.

I was just about to post some other information about Creative Alchemy here. I recently found out that Vogons community member MST made a restriction remover for Creative Alchemy that removes license check from Alchemy. The issue is, I still couldn't get it to work on my laptop.

I assumed that Alchemy did not work because my integrated sound card, "IDT High Definition Audio Codec", did not provide the hardware acceleration features that Alchemy needs. I was hoping that IndirectSound could be modified to provide hardware acceleration features that Alchemy needs. But based on your post, I am not sure if hardware acceleration is the issue or not.

Let me tell you what I did. I followed the instructions on the thread linked below to install EAX redistributable, Alchemy 1.45.03 and patched it using "CreativeALchemy14503RestrictionRemover-MST.exe".
http://forums.thedarkmod.com/topic/18249-tuto … -any-soundcard/

I keep getting the errors below with Beyond Good and Evil (EAX) and Star Wars Episode 1 Racer (Hardware accelerated dsound) when I use Alchemy with them.

DirectSoundCreate : Failed to initialize Creative ALchemy, falling back to dsound.dll

or

DirectSoundCreate8 : Failed to initialize Creative ALchemy, falling back to dsound.dll

or

DirectSoundEnumerateA : Failed to initialize Creative ALchemy, falling back to dsound.dll

Using Creative Software 3D Library
Failed to initializeCreative Software 3D Library
Failed to initializeCreative Software 3D Library
Failed to initializeCreative Software 3D Library
Failed to initializeCreative Software 3D Library

So what am I missing here? I don't have ct_oal.dll in my system. Is that the issue? Is there a restriction remover for ct_oal.dll?

Reply 58 of 228, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

which is a full-blown software OpenAL implementation (It's called Host OpenAL), supporting both older EAX and newer EFX standards for environmental audio effects. Renaming the DLL to ct_oal.dll makes it usable with ALchemy.

Why use a separate piece of software like ALchemy if it already supports EAX? 😐 (a question for Creative devs and whoever knows the answer)