XAudio SDK for Delphi

XAudio SDK probably is (or at least was) the most powerful, yet freeware Software Developer Kit for playing MP3 files in Delphi. It offered outstanding possibilities. Let’s say that fifty (!) events, you could use to write any MP3-related software in Delphi is enough good mark. And there’s more. That is why, it was really pity to me to discover, that this library is no longer available neither to Windows nor free. And finding replacement is really hard, if not impossible.

I was out of Delphi coding for few years. Actually, forever since four or five years, as right now I’m coding only about an hour or two per month. So, I don’t know when and what actually happened. Some says that company, that originally developed XAudio has been sold to the bigger one. The facts are, that when you go to XAudio.com site to Developers section, you’ll find out, that currently and officially this library is paid and available only to Linux developers.

Searching the Internet for some long lost, old copy did not brought an interesting results at first. Only some Chineese, partial junk. The best results I found, was work done by Peter Luijer around 2002. It was XAPlayer component (I found version 1.3 final release from January 25th, 2002) — a completely rewritten Delphi’s header file for XAudio.dll engine. The problem was, that when writing own component, Peter had done some changes (mainly in naming scheme) which caused my old projects to not compile. Since I had no other option, I started boring process of changing his component, because it was of course easier to change names of one component than to change naming scheme in dozen of my projects.

Being in the middle of that process I found, by a complete accident, some old, long time not updated, webpage which contained… original XAudio component! VideoRipper.org not only contains newest available version, still very old and older than Peter’s component (version from April 19, 2001), but it was the original XAudio, I’ve been using for years! You can see all available resources here or directly grab the newest available in ZIP format. And there are also version for DOS (yes, yes, yes — you can write own MP3 player for DOS using Delphi or Pascal!) and for Watcom.

But there’s more! Page autor’s (another Peter) has provided us with his own Delphi examples of using XAudio and… complete XAudio SDK Documentation. I was near to cry, when I found it! :]

If you’ve been using (just as I was) version of XAudio older than, then there are some changes, you should consider to your source code. But they should be really cosmetic. For example:

1. Dropped OnNotifyInputDuration even — you should use OnNotifyStreamDuration instead.

2. You no longer set path to DLL file in component’s properties. Compiled application will work, if it will find required DLLs in either: (a) the same folder, (b) system folder or (c) anywhere in the search path. But take into consideration, that points (b) and (c) may not work, when developing application, so you should have copy of these libs in your project’s source folder.

3. Since version update, DLL files has also changed (and have been updated). Distribution version of your applications should now ship with updated (newest) versions of xaudio.dll and xa_dsound_output.dll libraries along with two new: xanalyze.dll and xa_resampling_output_filter.dll.

Since Private section of VideoRipper.org was not available, when writing this text, I don’t know who actually Peter is and whom should I thank. But he surely deserved for a big pot of beer. Not only for saving my ass, but also for providing really good piece of stuff for Delphi geeks.

Notice: all libs and files were tested in old, good Delphi 7.

Leave a Reply