Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Build audacity with ASIO support on Windows

Build your own Audacity for Windows with ASIO driver support

Note, if you have come here from a video the instructions for installing the tools have now changed.

Due to licensing rules Audacity cannot provide a prebuilt version with ASIO support. But you can build your own and this guide makes it easy for you to do so.

Note that this builds Audacity 3.1.2. Audacity 3.0.0 introduced a new project file format so you will hit compatability problems if you try to use Audacity 2.x.x to open projects saved with this version.**

The Audacity program is the "go to" solution for many audio recording and editing tasks. However, unlike many more advanced DAWs, it doesn't support Windows ASIO drivers "out of the box". Fortunately, Audiacity's standard MME support is fine for most uses. That said, common reasons for needing ASIO are using digital audio or music equipment that only comes with ASIO drivers, such as Behringer mixers (which actually use the ASIO4ALL ASIO <> WDM bridging driver). Another common reason is to take advantage of the low latency or multiple channels supported by ASIO.

While it is possible to build your own Audacity with ASIO support this usually requires considerable technical skills.

To reduce this requirement, the instructions provided here make it easy to build your own version of Audacity with ASIO support on a Windows PC. The instructions for the few manual steps should be straight forward to follow. A script checks everything is installed and builds a 64 bit release version of Audacity for you.

NB. If you do use this to build Audacity with ASIO support you must not redistribute it due to the ASIO SDK licensing terms - see below.

Unfortunately, it turns out the Audacity ASIO build has limited multi channel support. For example, the peak meters always show channels 1 & 2 and to record channels 3 & 4 requires recording 1, 2, 3 & 4. So While Audacity still works really well for simple recording tasks, you might want to eventually switch to a full DAW with AISO support. I'll probably use Reaper.

Here's a brief blog post explaining why I needed ASIO and it includes a screen shot.

Since writing that, I discovered my McMillen K-Mix digital interface mixer facilities alow routing of inputs 3 & 4 to the main outputs on 1 and 2 so can use the default MME Audacity build after all. For playback from PC, I found the HiFi Driver and ASIO Bridge from VB Audio lets me re-route PC audio out to channels 3 & 4 on the K-Mix, Leaving Channels 1 & 2 free for instruments and Mics.

Licensing

The reason for Audacity's lack of ASIO support is licensing, not technical. Steinberg do not alow the ASIO SDK to be redistributed (as required by open source projects). In addition, Audacity is GPL licensed and so is incompatible with the ASIO SDK licence redistribution rules.

Detailed instructions

Note for developers: These instructions assume a clean dev. env. If you have existing installations of the tools you may hit errors due to differing versions. Perhaps use a VM (difficult with Windows licencing) or a Windows container.

This video by @Renamesk walks you through the process, but the tool installation method has changed.

  • ensure you have a PC with modern Windows installed. 11 and 10 are known to work but 7 and 8 should too.
  • install "Git For Windows" - click the "download" button.
  • make a new folder C:\projects
  • click on the 'raw' button at the top of the script (below) in this Gist.
  • use the browser Save As feature to save the script as \projects\build-audacity.cmd (be careful there's no ".txt")
  • open a new Windows cmd terminal (Windows + R keys and then type cmd)
  • type cd \projects and enter key
  • install required tools by typing build-audacity.cmd --install and enter.
    • if you have a non English Windows or Visual Studio then you must also install the VS English language pack.
  • when the install completes open a cmd temrinal again and start the build by typing build-audacity.cmd and enter.
  • come back later - it will take at least 10 minutes
  • Audactiy will be launched to test it was built correctly
    • to it run again see the program location printed out at the end of the build
    • or copy the specified folder to where you want to run Audacity from, optionally renaming it

If you have any ASIO drivers installed you should find ASIO is now available in the the Audacity driver selection combo box.

When things go wrong

As with any complex software build there are many moving parts (including Windows itself) and things can sometimes go wrong. Here are some tips if you hit build errors.

  • make sure you have latest script
  • run the script with --cleanall and try again
  • uninstall all the tools (Python, cmake, Visual Studio and its installer) and then reboot before trying again
    • note having other versions of any of the tools installed may well cause problems - remove them
  • read the error output - clues are often buried in reams of impenetrable text
  • disable any Anti Virus - the built-in Microsoft one is usually not a problem

Thanks

  • @diogodh for finding and fixing the bug with conan installations
  • The Audacity team for an fantastic audio tool.
@echo off
rem See https://wiki.audacityteam.org/wiki/Building_On_Windows
rem Build audacity with ASIO support on Windows
rem See the following gist for details of what ot install etc
rem https://gist.github.com/SteveALee/da24c2be633340b8791066dd98eb5d0b
rem
rem Options (only one may be specified)
rem
rem --install - install tools
rem --clean - remove built files
rem --cleanall - remove fetched and built files
rem --getonly - only get the files
rem --noget - don't fetch again from git
rem --gui - run cmake-gui
rem
rem MIT licence
rem steve@opendirective.com
SETLOCAL
set AUDACITY_REL=3.1.2
set VISUALSTUDIOVER=2019\Community
set VSDIR=%ProgramFiles(x86)%\Microsoft Visual Studio\%VISUALSTUDIOVER%
set PROJROOT=C:\projects
set AUDACITY=%PROJROOT%\audacity
set AUDACITY_BUILD=%PROJROOT%\audacity-asio
set EXEDIR=%AUDACITY_BUILD%\bin\Release
rem check projroot exists
if /I not [%~dp0] == [%PROJROOT%\] (
echo.
echo Error: This script must be run in %PROJROOT% - see %%PROJROOT%% in file
echo.
if not exist %PROJROOT% (
echo Create %PROJROOT
goto exit
) else (
echo cd to %PROJROOT%
goto exit
)
)
if not [%1] == [--install] goto clean
rem Get tools
rem ANSI escape sequences do not work in if () block so we use goto
set cmake-url=https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-windows-x86_64.msi
set vs2019-url=https://aka.ms/vs/16/release/vs_community.exe
set python-url=https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe
echo 
echo.
echo Fetching tools..
echo 
mkdir bin 2> :null
curl -L %cmake-url% -o bin\cmake.msi
curl -L %vs2019-url% -o bin\vs.exe
curl -L %python-url% -o bin\python.exe
echo 
echo.
echo Installing tools...
echo.
echo IMPORTANT!! Follow the instructions below for each installer
echo Close each installer when it is done
echo.
echo CMake: make sure you select "add cmake to system PATH"
pause
bin\cmake.msi
echo Visual Studio: make sure you select "desktop development with C++ option"
pause
bin\vs.exe
echo Python: make sure you select "add python 3.10 to the PATH"
pause
bin\python.exe
echo.
echo This window will now close!
echo Open another "cmd" window (Wnd + R, cmd) and run "%0" again to build Audactity
echo 
echo.
Pause
exit
:clean
if not [%1] == [--getonly] (
if /I [%1] == [--clean] echo Cleaning built files... & rmdir /s/q %AUDACITY_BUILD% 2> :null
if /I [%1] == [--cleanall] echo Cleaning source and built files... & rmdir /s/q %AUDACITY% %AUDACITY_BUILD% 2> :null
if /I [%1] == [--cleanall] where /q conan & if ERRORLEVEL 0 echo Cleaning conan modules... & conan remove -f * 2> :null
)
rem Launch cmake-gui
if [%1]==[--gui] cmake-gui -Daudacity_has_asio_support=On -DAUDACITY_BUILD_LEVEL=2 -S %AUDACITY% -B %AUDACITY_BUILD% & goto build
rem ensure tools are installed
if not [%1] == [--getonly] (
rem NB this sets 64bit arch for cmake
if not exist "%VSDIR%\VC\Auxiliary\Build\vcvars64.bat" echo Error: Install Visual Studio %VISUALSTUDIOVER% & goto exit /b
if not defined VisualStudioVersion call "%VSDIR%\VC\Auxiliary\Build\vcvars64.bat"
where /q cmake & if ERRORLEVEL 1 echo Cmake does not appear to be installed & goto exit /b
where /q conan & if ERRORLEVEL 1 pip install conan & if ERRORLEVEL 1 echo Python does not appear to be installed & goto exit /b
)
rem Get source code
set getsrc=0
if /I [%1] == [] set getsrc=1
if /I [%1] == [--getonly] set getsrc=1
if /I [%1] == [--cleanall] set getsrc=1
if /I not [%1] == [--noget] (
where /q git & if ERRORLEVEL 1 echo Error Install Git for Windows. Choose the option "Git from the command line" && goto exit /b
if [%getsrc%] == [1] (
echo.
echo Fetching code for Audacity %AUDACITY_REL%...
echo.
git clone -b Audacity-%AUDACITY_REL% --depth 1 https://github.com/audacity/audacity/ %AUDACITY%
if ERRORLEVEL 1 echo Error: cannot fetch the Audacity code. Try the --cleanall or --noget options & goto exit
if not exist %AUDACITY%\CMakeLists.txt echo Something is wrong with %AUDACITY% files & goto exit
)
)
if /I [%1] == [--getonly] goto exit
echo.
echo Building Audacity %AUDACITY_REL% 64 bit release with ASIO support...
echo.
cd %AUDACITY%
cmake -G "Visual Studio 16 2019" -DCMAKE_CONFIGURATION_TYPES=Release -Daudacity_has_asio_support=On -DAUDACITY_BUILD_LEVEL=2 -S %AUDACITY% -B %AUDACITY_BUILD% & if ERRORLEVEL 1 echo Error: Cannot create Audacity buildfiles & goto exit
:build
cd %AUDACITY_BUILD%
set msbuild="%VSDIR%\MSBuild\Current\Bin\MsBuild.exe"
%msbuild% audacity.sln -t:Audacity -p:configuration=Release
if ERRORLEVEL 1 echo Error: cannot build Audacity & goto exit
cd %PROJROOT%
rem All done
echo 
echo.
echo Congratulations!
echo Your new Audacity with ASIO support will now launch.
echo In future just run the audacity.exe. No need to install.
echo.
echo %EXEDIR%\audacity.exe
echo.
echo Or copy the folder
echo.
echo %EXEDIR%\
echo.
echo and run the included audacity.exe
echo.
echo 
start %EXEDIR%\audacity.exe
:exit
cd %PROJROOT%
ENDLOCAL
@dolfff
Copy link

dolfff commented Jan 10, 2022

Hi, after many failures using instructions in building.md, I tried this script. Before I started, I uninstalled VS, Python and cmake. The --install went well. But the actual build failed soon in the process with this error:

-- Configuring packages for Release
-- Conan: Detected VS runtime: MD
-- Conan: checking conan executable
-- Conan: Found program C:/Program Files/Python310/Scripts/conan.exe
-- Conan: Version found failed to create process.
-- Conan executing: C:/Program Files/Python310/Scripts/conan.exe install . --build missing --settings arch=x86_64 --settings build_type=Release --settings compiler=Visual Studio --settings compiler.version=16 --settings compiler.runtime=MD
failed to create process.
-- Resolving Conan library ZLIB
-- Could NOT find ZLIB (missing: ZLIB_DIR)
CMake Error at cmake-proxies/cmake-modules/AudacityDependencies.cmake:289 (message):
  Failed to find the conan package ZLIB
Call Stack (most recent call first):
  CMakeLists.txt:541 (resolve_conan_dependencies)

I tried --cleanall after this but even that didn't finish with the same error. What is going wrong?

@piretro
Copy link

piretro commented Jan 10, 2022

For the records: after various unsuccessful attempts where compilation was failing on expat throwing out syntax errors, and subsequent conan installation errors, I learned that you MUST have VS2019 English language pack installed in your environment to compile this correctly (credits goes to libexpat/libexpat#418 (comment) ).

Please add this info to the --install hint when it's time to install VS2019.

Thank you for this wonderful stuff @SteveALee it seems to work like a charm now! 🥇

@SteveALee
Copy link
Author

SteveALee commented Jan 11, 2022

@dolfff hmm, I had that at one stage. I'll see if I can figure it for you.

@SteveALee
Copy link
Author

SteveALee commented Jan 11, 2022

@piretro ouch! I recall wondering if language might be a problem for you but decided that would be too silly in 2021!. I was thinking of windows run though not a localised VS! Thanks for the improvement and sorry you had a painful experience

@dolfff
Copy link

dolfff commented Jan 11, 2022

Meanwhile I did another attempt without the script, just using the manual method. For the tenth time or so, I uninstalled and re-installed all the tools and boom, it suddenly worked! I have no idea what could have caused all the problems, I didn't do anything different from earlier attempts. Perhaps your script would have worked also, I didn't test that. In the end, all my efforts (almost 2 days of struggling) were in vain because Audacity with ASIO turned out to be an unworkable disaster so I gave up on it. Very unfortunate because I do like Audacity a lot.

@SteveALee
Copy link
Author

SteveALee commented Jan 11, 2022

@dolfff what a total pain! The build tools can be a little sensitive - so many moving parts! :(
I agree the ASIO version of Audacity is very limited indeed and I also ended up not using it and mapping channels , as I described in the linked blog post. Did you go for a DAW?

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Jan 11, 2022

@SteveALee
Copy link
Author

SteveALee commented Jan 11, 2022

@Chris-C-Bristol quite a few things have changed including how you install the tools. I suggest you uninstal all the old tools first and start from a clean slate.

@dolfff
Copy link

dolfff commented Jan 11, 2022

Well, I am not complaining about the ASIO limitations in Audacity, I was aware of that beforehand. The problem is bugs, a lot of them. Possibly in combination with the ASIO driver of my audio interface. I couldn't even get a proper recording (speed mismatch). Also several bugs while trying to playback. It seems to be a very very experimental untested feature. Usually I am quite patient in looking for causes and workarounds but this didn't feel like it was worth any more of my time.

Possibly a more straightforward and fail-safe build procedure would enlarge the group of people trying it. (Dmitry at discord told me that this is in the making). I think it's worthwhile because so many good audio interfaces are coming to market these days. So bit-perfect recording is an increasing demand.

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Jan 11, 2022

@SteveALee
Copy link
Author

SteveALee commented Jan 11, 2022

@dolfff Agree - it's a bit sidelined right now and ASIO is common. Wish I had bandwidth to help drive it a bit.

@dolfff
Copy link

dolfff commented Jan 11, 2022

You DO help to drive it by providing and maintaining this script. This enables more people to use Audacity with ASIO and that will result in more feedback and interest. So, keep up the good work. I hope you are able to streamline the procedure.

@SteveALee
Copy link
Author

SteveALee commented Jan 11, 2022

@dolfff :D Thanks

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Jan 12, 2022

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Jan 13, 2022

@SteveALee
Copy link
Author

SteveALee commented Jan 13, 2022

Sorry it did work. I really can't think what's going on.

As far as I know ASM is NOT actually used in the successful build

@piretro
Copy link

piretro commented Jan 13, 2022

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Jan 13, 2022

@SteveALee
Copy link
Author

SteveALee commented Jan 14, 2022

@piretro @Chris-C-Bristol

Disabling VS is an excellent call, as is a reboot after uninstall. Tips won in the long dev fight with Windows no doubt! :)
I stopped using 3rd party AVs after Avast had a memory leak that keep breaking my Firefox builds. I do leave the default Windows one on though. I should probably disable it in folders with code in!

@chris do try the script's --cleanall option as well as that cleans up the conan cache

I'll add a "Problems" section to the notes with all these great tips.

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Jan 16, 2022

@SteveALee
Copy link
Author

SteveALee commented Jan 17, 2022

@Chris-C-Bristol

Oh dear. With 10 copies of Python it seems you PCs config is a bit of a mess. The disclaimer for developer PCs applies I'm afraid.

Also your Windows account should be an admin account and run all cmd terminals without administrator privileges.

You could try the official manual Audactity build instructions using the cmake gui. That would eliminate problems due to the script. I doubt that would work either though.

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Jan 18, 2022

@SteveALee
Copy link
Author

SteveALee commented Jan 18, 2022

Huzzah! The --install option should have been enough without you needing all those extra hoops. But at least you are going now!

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Jan 19, 2022

@SteveALee
Copy link
Author

SteveALee commented Jan 19, 2022

@Chris-C-Bristol Ha ha, don't even breath on it! :-P

@scerazy
Copy link

scerazy commented Jan 29, 2022

Had to install Conan by hand from https://conan.io/downloads.html
Otherwise it errored out that executable is not installed (should be added to the --install section)

@SteveALee
Copy link
Author

SteveALee commented Jan 31, 2022

@scerazy Thanks for the feedback. That's strange as it does install conan as a python PIP after the primary install
where /q conan & if ERRORLEVEL 1 pip install conan
It worked fine in all my tests after cleaning completely.

I did just spot it's not installed for the GUI option but do not know if that matters or not

I will run some more tests. Thanks again.

@scerazy
Copy link

scerazy commented Feb 2, 2022

And pip version by manual install did not work either, I had to install .exe (hence it would be easier to add that to install section)

@SteveALee
Copy link
Author

SteveALee commented Feb 2, 2022

Hmm, PIP appeared to be the official way to install. It made a bit of a mess of the script too. Thanks for the suggestion.

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Feb 2, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment