VOGONS

Common searches


indirect sound

Topic actions

First post, by Davros

User metadata
Rank l33t
Rank
l33t

found this:
http://www.indirectsound.com/

IndirectSound emulates audio hardware acceleration on modern Windows operating systems. This enables older games to have 3D positional audio (i.e. surround sound played out of rear and side speakers) like they were intended to when they were originally released.

Guardian of the Sacred Five Terabyte's of Gaming Goodness

Reply 1 of 228, by TeddyTheBear

User metadata
Rank Newbie
Rank
Newbie

Cool a DirectSound3D to XAudio2 wrapper plus faked support of EAX. But why use XAudio2, a proprietary Microsoft API, and not something potentially portable like linking to an OpenAL libary? 🙁

Reply 4 of 228, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

This is interesting, although it looks like it's just a wrapper to make 3D positional audio work on Windows Vista and newer in games that use old sound APIs. Reverb and other such effects do not appear to be supported, unless I'm reading things wrong.

My Asus Xonar DX has a similar wrapper built into its drivers, which can be toggled on to provide EAX emulation. Unfortunately it causes newer games to become unstable if you leave it enabled all the time, though, so I rarely use it.

Reply 5 of 228, by Davros

User metadata
Rank l33t
Rank
l33t

Creative Audigy/xfi (maybe recon) also have a similar wrapper (creative alchemy) the changes directsound calls to equivalent openal calls
never had any problems with it

Guardian of the Sacred Five Terabyte's of Gaming Goodness

Reply 6 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie
TeddyTheBear wrote:

Cool a DirectSound3D to XAudio2 wrapper plus faked support of EAX. But why use XAudio2, a proprietary Microsoft API, and not something potentially portable like linking to an OpenAL libary? 🙁

Hi, I'm the author of IndirectSound. When I first started the project I was going to use OpenAL, but the more I looked into it the more disillusioned I became with it and Creative. Once I decided that OpenAL was out XAudio2 made the cut for the following reasons:

  • I know that if someone is running a game that uses DirectSound then s/he will also have the XAudio2 library available as part of DirectX. (That guarantee doesn't exist with something like OpenAL, and it makes using IndirectSound more complicated.)
  • The solution doesn't really need to be portable: The fundamental goal of IndirectSound is to restore 3D positional audio in Windows, and it actually relies on the real DirectSound being available.
  • XAudio allowed me to get it working more quickly so that I could get back to playing games 😀

Regarding the third point, a potentially more future-proof solution than XAudio2 would have been WASAPI, but that is still Windows-specific and non-portable. (I still might end up attempting it someday, but it would mean that I would have to duplicate a lot of functionality that XAudio2 gives me for free, and there's the distinct danger that any home-grown solution of mine wouldn't be as good as XAudio2 since I'm not an audio expert by any means.)

Thanks for your interest, and let me know if you have any more questions or feedback,
John-Paul

Reply 7 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie
Davros wrote:

Creative Audigy/xfi (maybe recon) also have a similar wrapper (creative alchemy) the changes directsound calls to equivalent openal calls
never had any problems with it

Yeah, if you have ALchemy working then there is no reason to use IndirectSound. (I only wrote it when I finally ditched my X-Fi 😉 )

HunterZ wrote:

This is interesting, although it looks like it's just a wrapper to make 3D positional audio work on Windows Vista and newer in games that use old sound APIs. Reverb and other such effects do not appear to be supported, unless I'm reading things wrong.

You are correct: EAX is not (yet) emulated. I'd really like to get it working, but it's quite a bit more difficult because XAudio2 doesn't have equivalent functionality and so I'd have to write the actual reverb algorithms myself. I've slowly been working on emulating EAX support (meaning that games now think that Eax 1.0 and 2.0 is supported even though they really aren't), and eventually I will start tinkering with actually adding reverb, but I'm a bit worried that anything I come up with will sound bad compared to what Creative's engineers were able to do.

Reply 8 of 228, by HunterZ

User metadata
Rank l33t++
Rank
l33t++
jonpol wrote:
Hi, I'm the author of IndirectSound. When I first started the project I was going to use OpenAL, but the more I looked into it t […]
Show full quote
TeddyTheBear wrote:

Cool a DirectSound3D to XAudio2 wrapper plus faked support of EAX. But why use XAudio2, a proprietary Microsoft API, and not something potentially portable like linking to an OpenAL libary? 🙁

Hi, I'm the author of IndirectSound. When I first started the project I was going to use OpenAL, but the more I looked into it the more disillusioned I became with it and Creative. Once I decided that OpenAL was out XAudio2 made the cut for the following reasons:

  • I know that if someone is running a game that uses DirectSound then s/he will also have the XAudio2 library available as part of DirectX. (That guarantee doesn't exist with something like OpenAL, and it makes using IndirectSound more complicated.)
  • The solution doesn't really need to be portable: The fundamental goal of IndirectSound is to restore 3D positional audio in Windows, and it actually relies on the real DirectSound being available.
  • XAudio allowed me to get it working more quickly so that I could get back to playing games 😀

Regarding the third point, a potentially more future-proof solution than XAudio2 would have been WASAPI, but that is still Windows-specific and non-portable. (I still might end up attempting it someday, but it would mean that I would have to duplicate a lot of functionality that XAudio2 gives me for free, and there's the distinct danger that any home-grown solution of mine wouldn't be as good as XAudio2 since I'm not an audio expert by any means.)

Thanks for your interest, and let me know if you have any more questions or feedback,
John-Paul

Thanks for stopping by to contribute to the conversation!

What about using OpenAL Soft (http://kcat.strangesoft.net/openal.html)? It's LGPL licensed, so you should be able to embed its source in yours (or at least statically link it or something), and its effects engine may have some significant level of feature parity with EAX.

Reply 9 of 228, by TeddyTheBear

User metadata
Rank Newbie
Rank
Newbie
jonpol wrote:
Hi, I'm the author of IndirectSound. When I first started the project I was going to use OpenAL, but the more I looked into it t […]
Show full quote
TeddyTheBear wrote:

Cool a DirectSound3D to XAudio2 wrapper plus faked support of EAX. But why use XAudio2, a proprietary Microsoft API, and not something potentially portable like linking to an OpenAL libary? 🙁

Hi, I'm the author of IndirectSound. When I first started the project I was going to use OpenAL, but the more I looked into it the more disillusioned I became with it and Creative. Once I decided that OpenAL was out XAudio2 made the cut for the following reasons:

  • I know that if someone is running a game that uses DirectSound then s/he will also have the XAudio2 library available as part of DirectX. (That guarantee doesn't exist with something like OpenAL, and it makes using IndirectSound more complicated.)
  • The solution doesn't really need to be portable: The fundamental goal of IndirectSound is to restore 3D positional audio in Windows, and it actually relies on the real DirectSound being available.
  • XAudio allowed me to get it working more quickly so that I could get back to playing games 😀

Regarding the third point, a potentially more future-proof solution than XAudio2 would have been WASAPI, but that is still Windows-specific and non-portable. (I still might end up attempting it someday, but it would mean that I would have to duplicate a lot of functionality that XAudio2 gives me for free, and there's the distinct danger that any home-grown solution of mine wouldn't be as good as XAudio2 since I'm not an audio expert by any means.)

Thanks for your interest, and let me know if you have any more questions or feedback,
John-Paul

Thanks for taking the time to answer!
I guess that makes sense not wanting to deal with all of Creative's crap but as HunterZ said there are other providers: OpenAL Soft, Blue Ripple Sound, AeonWave, ASUS and maybe a couple others as well as Creative and that would allow hardware acceleration for the providers who have hardware that supports it. I'm not trying to be overly critical of your work, Its really great! I can understand needing it to just work on everyone's machine and getting a quick version with XAudio2 out.
I need to test some of my games with it now when I can get the time. Thanks again!

Reply 10 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie
TeddyTheBear wrote:

I guess that makes sense not wanting to deal with all of Creative's crap but as HunterZ said there are other providers: OpenAL Soft, Blue Ripple Sound, AeonWave, ASUS and maybe a couple others as well as Creative and that would allow hardware acceleration for the providers who have hardware that supports it. I'm not trying to be overly critical of your work, Its really great! I can understand needing it to just work on everyone's machine and getting a quick version with XAudio2 out.
I need to test some of my games with it now when I can get the time. Thanks again!

I'm pretty happy whenever anyone takes an interest in it, so don't worry about being critical! 😀 Also, "quick" is relative: Even though IndirectSound has only been publicly available fairly recently I've actually been working on it off and on for a year. Getting all of the details of the DirectSound API to work properly turned out to be a lot of work (particularly those features that less-than-well-documented) and so I was grateful to be able to use XAudio2 as much as I could.

HunterZ wrote:

What about using OpenAL Soft (http://kcat.strangesoft.net/openal.html)? It's LGPL licensed, so you should be able to embed its source in yours (or at least statically link it or something), and its effects engine may have some significant level of feature parity with EAX.

Well, a large part of the historical reasoning for using XAudio2 was related to those same frustrations that led me to "take matters into my own hands" and write IndirectSound, and I am willing to admit my bias against OpenAL both for its history and, to be honest, as an API. I guess the short version is that having a reference implementation of 3D positional audio was attractive to me, and I believe that using XAudio2 is the closest that one can get to the reference 3D positional audio that DirectSound3D was designed with (I have no proof, but I wouldn't be surprised if the same algorithms that Microsoft used for 3D positioning in DirectSound3D are being used in XAudio2).

(Interesting side note: I eventually ended up reinstalling my X-Fi and dual booting into Windows XP to test some things, and now that I can compare apples to apples I definitely prefer the way that Creative positions 3D sounds. This has made me consider trying to implement my own method to try and recreate what Creative is doing which would go against the "reference implementation" philosophy; I think if I ever did try it, however, I would make it a non-default option.)

In any event, my motivation for writing IndirectSound was to restore 3D positional audio, with EAX emulation always being a "could potentially be nice in the future" feature. (I realize most gamers' priorities would be reversed, but I really love my 3D audio 😀.) I actually have thought of using OpenAL Soft at least as a reference for EAX, but until/unless I release source code I've avoided it because of the LGPL. Regardless, I would have the same potential concerns about quality of reverb. Emulating the actual EAX functionality is definitely in the realms of possibility (even the versions higher than 2.0 that weren't an open standard aren't too hard to figure out with the help of the header files and the OpenAL documentation), but there's a difference between applying some kind of reverb and actually having it sound like it's supposed to qualitatively. I actually don't know much about OpenAL Soft; do you know how close it sounds to a real Creative card?

Reply 11 of 228, by gulikoza

User metadata
Rank Oldbie
Rank
Oldbie
jonpol wrote:

I actually have thought of using OpenAL Soft at least as a reference for EAX, but until/unless I release source code I've avoided it because of the LGPL.

Just a quick note - if it's LGPL, then you don't have to release the sources of your program, only the modifications to the library (if any). Technically it might be a bit harder since if you statically link the library, you have to release the object files (but not necessarily the source) of your program so that the LGPL component can be modified/replaced and the whole program rebuilt. Sorry for the OT 😀

http://www.si-gamer.net/gulikoza

Reply 12 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie

I don't know if this is the appropriate place or if anyone's interested, but I've released a new version:

http://www.indirectsound.com/downloads/Indire … tSound_0_10.zip

All of the fixes in 0.9 and 0.10 were motivated by a volunteer user who wanted BloodRayne to work properly and helped me track down a lot of tricky bugs, including a few crashes. I don't know how many of the bug fixes affect other games, but I've also never had someone as meticulous to help me test before; if you use IndirectSound I'd definitely recommend getting the latest version 😀 .

Reply 15 of 228, by mirh

User metadata
Rank Member
Rank
Member

It's not like I want to piss jonpol (I already feel like I did in some past e-mails).
But in the last months wine first added DS hardware buffers, and this week even EAX (albeit just first version).

Now I'm sure you probably want the thing to be yours and follow your pace, but if you could only try to contact this guy, Mark Harmstone, I'm sure everybody would gain something. Imho.

pcgamingwiki.com

Reply 16 of 228, by jonpol

User metadata
Rank Newbie
Rank
Newbie
mirh wrote:

It's not like I want to piss jonpol (I already feel like I did in some past e-mails).

Don't worry; it takes lot to upset me, and I apologize if I gave that impression 😊

I would think that Wine serves a different purpose than IndirectSound, but I've never used it and maybe I'm mistaken. I'm definitely not opposed to talking to Mark Harmstone or anyone else, but I'm not clear on what you think I should contact him about. I'm guessing sharing knowledge and any quirks we've discovered? If so, I would freely tell him anything he wanted to know, but I would feel a bit weird contacting him (especially since my email address is easy to find and he hasn't contacted me to ask any questions).

As far as knowledge going the opposite direction, unfortunately real life has intruded on my time to spend with IndirectSound. I made lots of rapid progress with EAX and I actually have most features emulated (including EAX 3.0), but the big problem is what I have been afraid of all along: It technically works correctly, but it doesn't sound that great. (Reverb seems to be as much art as science, and as someone completely new to it there has been a pretty steep learning curve for me.) If I were still at the point I was a few months ago where I had significantly more time to spend on it I might indeed contact him asking for help or tips, but at the moment I have little if any spare time, unfortunately.

Finally, as far as IndirectSound being "mine", there is definitely truth to that in terms of the project itself, but not in terms of the knowledge I've gained about DirectSound and EAX. I eventually think that I will release the source code to it, but I haven't wanted to do so while I'm still developing it because:

  • It's been a fun and rewarding project for me personally, and it's something to look forward to working on outside of my usual job expertise (graphics). Maybe this is selfish, but I do give the result away for free 😀
  • Until I get all of the features in (which is basically done now except for EAX) I have been nervous about other "non-official" versions being released that might have bugs or partially-implemented features that would reflect badly on IndirectSound if someone downloaded that version and something sounded bad. (This is also why I haven't released the partial EAX support I've done even though I'm excited about it.) I don't know if this would actually be an issue at all or if I'm worrying about nothing, but it's a concern I have all the same.

With that being said, though, let me reiterate: If anyone has any interest or questions about anything related to DirectSound or EAX I would be willing and eager to share anything I've learned. I've learned a ton of stuff working on the project that I have never seen anywhere else online (in fact, I often see information that is actually wrong), and I'm always happy to answer anyone's questions or discuss things.

Thanks for your interest, and sorry again if I came across as rude or upset in any correspondence,
John-Paul

Reply 17 of 228, by mirh

User metadata
Rank Member
Rank
Member
jonpol wrote:

Don't worry; it takes lot to upset me, and I apologize if I gave that impression 😊

I would think that Wine serves a different purpose than IndirectSound, but I've never used it and maybe I'm mistaken. I'm definitely not opposed to talking to Mark Harmstone or anyone else, but I'm not clear on what you think I should contact him about. I'm guessing sharing knowledge and any quirks we've discovered? If so, I would freely tell him anything he wanted to know, but I would feel a bit weird contacting him (especially since my email address is easy to find and he hasn't contacted me to ask any questions).

Well, to be fair, hadn't it been for your posts on VOGONS I would have never thought indirectsound could be something any better than even the crappy 3DSoundBack. I mean, the spartan graphics and the lack of "difficult" words suggests almost like it was an abandoned project (or probably I'm a moron).
And then of course there are also those Linux developers that want to touch Windows as less as possible.

With that being said, I know you can already use WineD3D on Windows.
And even if it wasn't possible to do directly like that, I guess there would still be a lot of shared code.

jonpol wrote:
As far as knowledge going the opposite direction, unfortunately real life has intruded on my time to spend with IndirectSound. I […]
Show full quote

As far as knowledge going the opposite direction, unfortunately real life has intruded on my time to spend with IndirectSound. I made lots of rapid progress with EAX and I actually have most features emulated (including EAX 3.0), but the big problem is what I have been afraid of all along: It technically works correctly, but it doesn't sound that great. (Reverb seems to be as much art as science, and as someone completely new to it there has been a pretty steep learning curve for me.) If I were still at the point I was a few months ago where I had significantly more time to spend on it I might indeed contact him asking for help or tips, but at the moment I have little if any spare time, unfortunately.

Finally, as far as IndirectSound being "mine", there is definitely truth to that in terms of the project itself, but not in terms of the knowledge I've gained about DirectSound and EAX. I eventually think that I will release the source code to it, but I haven't wanted to do so while I'm still developing it because:

  • It's been a fun and rewarding project for me personally, and it's something to look forward to working on outside of my usual job expertise (graphics). Maybe this is selfish, but I do give the result away for free 😀
  • Until I get all of the features in (which is basically done now except for EAX) I have been nervous about other "non-official" versions being released that might have bugs or partially-implemented features that would reflect badly on IndirectSound if someone downloaded that version and something sounded bad. (This is also why I haven't released the partial EAX support I've done even though I'm excited about it.) I don't know if this would actually be an issue at all or if I'm worrying about nothing, but it's a concern I have all the same.

Well, if don't want to feel sorry for users problems, you could still have a private repository on github to share your thoughts with Mark.
Then it would be up to him to release to push code to wine.
Wine is LGPL then.. so it should be possible to have a compromise where you just release Windows binaries based on the open source linux version, maybe.
Or you may just link to wine repositories for a quick way to get generic source code. And provide Windows specific code just under request (GPL allow this iirc)

In this way, I don't think that the average Linux user would complain about bugs like the average Windows one would.

jonpol wrote:

With that being said, though, let me reiterate: If anyone has any interest or questions about anything related to DirectSound or EAX I would be willing and eager to share anything I've learned. I've learned a ton of stuff working on the project that I have never seen anywhere else online (in fact, I often see information that is actually wrong), and I'm always happy to answer anyone's questions or discuss things.

Thanks for your interest, and sorry again if I came across as rude or upset in any correspondence,
John-Paul

😘
I'll try to get in touch with him for you then.

pcgamingwiki.com