Miscellaneous Compiling issues..

Hi Guys,

I spent the last couple of days in learning how to compile the Audacity code (VC++ 2005 express) so that I could have a personal version with ASIO support. I needed it so that I could record 4 tracks at once from my Firebox.

While the base 1.33 tarball did compile easily, and I was able to get the the Steinburg ASIO SDK incorporated, adding the optional libraries was a chore. I understand that there are license issues, but the crippleware tarball is a pain. Some additional docs on what versions of the ‘optional libraries’ are used would be very welcome as I tried to compile different versions on a trial and error basis but never quite got it to work :cry: .

I eventually gave up and checked out a copy of the CVS version. One problem - it didn’t compile. The entire solution linked and then quit on unresolved external references for the portaudio v19 static library. I noticed that a developer is working on it - a new version was checked in 4 days ago.

So I replaced it with the old version of the portaudio v19 static library from the original source tarball and was able to get a functioning version of Audacity with ASIO.

If it were somehow possible to make incorporating ASIO a much less painful process (similar to what you do with Lame…just add the .dll) it would be wonderful - the process took me > 20 hours.

In the meantime, Audacity rocks - keep up the groovy work!


Compiling from CVS is always going to run the risk of getting an uncompilable set of code, as it is in continual flux. The issue with the newer portaudio snapshot is now resolved and it builds normally. The release tarballs do not contain all the third party libraries because it would be massive (over 20MB without wxwidgets, double that with). It would also be a pain to maintain all the different libraries with all the patches needed to build on many platforms. Most open source programs have no dependencies in the source tarball, and expect you to either have them on the machine (most Linux users will) or download and compile them separately. This also means you don’t have to wait for us to update old versions of libraries to get round bugs, and can take advantage of the patches your distribution puts in to make packages build and install more smoothly.

ASIO can never be done through a DLL, because the interface to that DLL is what is restricted by Steinberg. It works with LAME because the problem is with patents not copyright and licensing, and the patents (in this case) only apply to executable code, not to source code.