Skip to content

Instantly share code, notes, and snippets.

@SteveALee
Last active May 13, 2024 21:02
Show Gist options
  • Save SteveALee/da24c2be633340b8791066dd98eb5d0b to your computer and use it in GitHub Desktop.
Save SteveALee/da24c2be633340b8791066dd98eb5d0b to your computer and use it in GitHub Desktop.
Build audacity with ASIO support on Windows

Build your own Audacity for Windows with ASIO driver support

You might want Audacity to work with the ASIO drivers supplied with your sound devices. Commmon reasons for this are:

  • Only ASIO drivers are available (eg Behringer mixers)
  • Performance - ASIO has low latency (delays)
  • You don't want to use the ASIO4All bridging driver with non ASIO drivers
  • Multi channel support - though Audacity is not so good at handling other than Stereo or Mono

Due to licensing restrictions the Audacity team cannot provide a prebuilt version with Windows ASIO driver support. But with this guide and script you can easily build your own Audacity with ASIO support.

This builds the latest Audacity release 3.4.2 by default. If you want 3.3.3 then use "build-audacity.cmd -v3.3.3". For the 3.5.0 beta use "build-audacity.cmd -v3.5.0-beta""

ko-fi

Background

Drivers are the glue between an audio program like Audacity and external hardware like a mixer or sound interface. The drivers usually used on Windows have limitations which can be overcome if you use ASIO drivers for your hardware. Specifically, low latency (delay) and multi channel support are available with ASIO drivers.

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 include using digital audio or music equipment that only comes with ASIO drivers, such as Behringer mixers (which actually suggest using the less efficient ASIO4ALL ASIO to WDM bridging driver). Another common reason is to take advantage of the low latency or multiple channels supported by ASIO. Note that Audacity really is not a good multichannel solution, so if that is required a DAW might be a better bet.

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

But have no fear, the instructions and script provided here make it easy to build your own version of Audacity with ASIO support. You just need a suitable Windows PC. The script installs all required tools and builds a 64 bit release version of Audacity with ASIO for you using the official build instructions.

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.

Here's a brief blog post explaining why I needed ASIO and it includes a screen shot. But note, 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.

Development PC

The script installs a set of development tools that are known to build Audacity. Due to the complex nature of such tools, any other versions of them on your PC may interfere with this script. Thus this scipt should be run on a clean PC without any developer tools. No support can be offered otherwise.

If you would rather not install these tools (Git for Windows, Visual Studio, CMake, Python and Conan), or you already have versions of them or even if you are having build problems, you can use a one of the following Vitual Machines:

  • Windows Sandbox - Sandbox can be enabled on Windows 10/11 Pro/Enterprise and can also be installed on Windows Home with a bit of effort. If the build experiences memory errors you will need a configuration file to provide more memory than the default 4GB.
  • A virtualisation program - install a VM and and a matching Developer Virtual Machine Image from Microsoft. In most cases VirtualBox will be a good choice (import the Microsoft supplied .ova appliance file but the Visual Studio pre installed in the VM must be uninstalled first to avoid problems).

In both cases you can copy the built files to where they will be run from on you PC file system, possibly by sharing a PC folder with the VM.

Step by Step Instructions

  • Ensure you have a PC (or VM) with Windows 10 or 11 installed.
  • 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 (right click) feature to save the script as This PC -> C:\projects\build-audacity.cmd. To avoid it being saved as a text file type the filename in quotes, eg "build-audacity.cmd".
  • open a new Windows cmd terminal (Windows + R keys and then type cmd)
  • Type cd \projects and enter key.
  • Install required tools and build by typing build-audacity.cmd and enter (use -v3.3.3 if requred).
    • Follow the prompts, pressing a key to start each tool's installer (when previous has finished).
    • NB for Visual Studio, make sure you check the "desktop development with C++" workload
    • If you have a non English Windows or Visual Studio then you must also install the English language packs.
  • Come back later - it will take at least 10 minutes.
  • Audactiy will be launched to test it was built correctly.
    • See the program location printed out at the end of the build so you can run it again.
    • Optionally copy the specified folder to where you want to run Audacity from, optionally renaming it.

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

If you have any ASIO drivers installed for active connected hardware you should find ASIO is now available in the the Audacity driver selection combo box which probably currently shows 'MME' selected (you may need to show using menu item View -> Toolbars -> Device toolbar).

NB: The Audacity settings and preferences are stored in a folder "Portable Settings" next to the audacity program. If you want to use settings in the user's home directory then delete this folder.

ko-fi

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.

If everyhting falls or you just want to shortcut lots of painful debugging then try a Microsoft Windows Virtual machine (VM) as mentioned above.

  • make sure you have latest script
  • make sure you are in a folder C:\projects in the cmd window
  • ensure you are an administrator on your Windows 10 or 11 64 bit PC (ie not a organisational PC)?
  • run the script with --cleanall and try again
  • uninstall all the tools and installers (Python, cmake, Visual Studio) and then reboot before trying again
    • note having other versions of any of the tools installed may well cause problems - remove them
  • ensure you ticked the specified options when installing Visual Studio and Python, reinstall if unsure
  • 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
  • if your PC is not English make sure you have EN language packs installed for Windows and VS

Thanks

  • @diogodh for finding and fixing the bug with conan installations
  • The Audacity team for an fantastic audio tool

ko-fi

@echo off
rem Version: 2.7.0
rem
rem Build audacity with ASIO support on Windows
rem See the following gist for details
rem https://gist.github.com/SteveALee/da24c2be633340b8791066dd98eb5d0b
rem
rem Options (only one may be specified)
rem
rem --install or none - install tools and build
rem --build - build, no install
rem --noget - build only but don't fetch again from git
rem --getonly - only get the files
rem --rebuild - cleanall and build
rem --clean - remove built files
rem --cleanall - remove fetched, built files and conan modules
rem --cleaninstall - remove downloaded installation files
rem -vj.m.p version - default is 3.4.2 (using conan 2.0.13) or specify 3.5.0-beta or else 3.3.3 (using conan 1.29)
rem
rem MIT licence
rem steve@fullmeasure.co.uk
TITLE Build Audacity with ASIO
setlocal
rem Clean up arguments
set TARGET=%1
set VERSION=%2
rem substring on empty var fails within parenthesis
if not [%TARGET%] == [] set TARGET_PREFIX=%TARGET:~0,2%
if [%TARGET_PREFIX%] == [-v] (
set TARGET=%2
set VERSION=%1
)
if [%TARGET%] == [] set TARGET=--install
if [%VERSION%] == [] (
set AUDACITY_REL=3.4.2
) else (
set AUDACITY_REL=%VERSION:~2%
)
set VISUALSTUDIOVER=2022\Community
set VISUALSTUDIOCMAKE=Visual Studio 17 2022
set VSDIR=%ProgramFiles%\Microsoft Visual Studio\%VISUALSTUDIOVER%
set PROJROOT=C:\projects
set AUDACITY=%PROJROOT%\audacity
set AUDACITY_BUILD=%PROJROOT%\audacity-asio
set MAKE_CONFIG=RelWithDebInfo
set EXEDIR=%AUDACITY_BUILD%\%MAKE_CONFIG%
set INSTALLFILEDIR=bin
rem More vaiables set for --install
if [%AUDACITY_REL:~0,3%] == [3.3] (set CONAN_VER=1.59.0) else (set CONAN_VER=2.0.13)
set CMAKE_OPTS=-DAUDACITY_BUILD_LEVEL=0 -Daudacity_has_asio_support=On
if [%AUDACITY_REL%] == [3.5.0-beta] set CMAKE_OPTS=%CMAKE_OPTS% -Daudacity_has_audiocom_upload=On -Daudacity_has_networking=On -Daudacity_has_url_schemes_support=On
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
)
)
echo.
echo Building Audacity %AUDACITY_REL% 64 bit RelWithDebInfo with ASIO support...
echo.
rem Get tools
rem ANSI escape sequences do not work in if () block so we use goto
set git-url=https://github.com/git-for-windows/git/releases/download/v2.44.0.windows.1/Git-2.44.0-64-bit.exe
set GITPATH=%ProgramFiles%\Git\cmd\
set vs2022-url=https://aka.ms/vs/17/release/vs_community.exe
rem Conan is installed later
if [%CONAN_VER%] == [1.59.0] (
rem Note Conan 1.59 has dependency issues with python 3.12
set python-url=https://www.python.org/ftp/python/3.11.0/python-3.11.0-amd64.exe
set PYTHONPATH=%LOCALAPPDATA%\Programs\Python\Python311\
) else (
set python-url=https://www.python.org/ftp/python/3.12.2/python-3.12.2-amd64.exe
set PYTHONPATH=%LOCALAPPDATA%\Programs\Python\Python312\
)
set PIPPATH=%PYTHONPATH%Scripts\
if not [%TARGET%] == [--install] if not [%TARGET%] == [--cleaninstall] goto clean
if [%TARGET%] == [--cleaninstall] echo Cleaning installation files... & rmdir /s/q %INSTALLFILEDIR% 2> :null & goto exit
echo   
echo.
echo Fetching tools..
echo 
mkdir %INSTALLFILEDIR% 2> :null
curl -L %git-url% -o %INSTALLFILEDIR%\g4w.exe
curl -L %vs2022-url% -o %INSTALLFILEDIR%\vs.exe
curl -L %python-url% -o %INSTALLFILEDIR%\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 before starting next
echo.
echo Git for Windows
echo Choose the option "Git from the command line..."
pause
%INSTALLFILEDIR%\g4w.exe
echo.
echo Visual Studio: make sure you select the Workload "Desktop development with C++"
echo You can uncheck "Start After installation"
pause
%INSTALLFILEDIR%\vs.exe
echo.
echo Python: make sure you select "Add python.exe to PATH" for future access
pause
%INSTALLFILEDIR%\python.exe
echo.
echo.
echo 
set installing=true
call :clean --rebuild
goto exit
rem subroutine
:cleanall
echo Cleaning source and built files... & rmdir /s/q %AUDACITY% %AUDACITY_BUILD% 2> :null
where /q conan & if ERRORLEVEL 0 echo Cleaning conan cache... & conan remove -c "*" 2>&1 > :null
exit /B
:clean
rem Python is on path, unless in windows sandbox
rem where /q python & if ERRORLEVEL 1 path %PATH%;%PYTHONPATH%
rem where /q pip & if ERRORLEVEL 1 path %PATH%;%PIPPATH%
rem where /q git & if ERRORLEVEL 1 path %PATH%;%GITPATH%
path %PYTHONPATH%;%PIPPATH%;%GITPATH%;%PATH%
if not [%TARGET%] == [--getonly] (
if /I [%TARGET%] == [--clean] echo Cleaning built files... & rmdir /s/q %AUDACITY_BUILD% 2> :null & goto exit
if /I [%TARGET%] == [--cleanall] call :cleanall & goto exit
if /I [%TARGET%] == [--rebuild] call :cleanall
)
rem Launch cmake-gui
rem VS doesn't include this with it's cmake
rem if [%TARGET%]==[--gui] cmake-gui -Daudacity_has_asio_support=On %CMAKE_OPTS% -S %AUDACITY% -B %AUDACITY_BUILD% & goto build
:checktools
rem ensure tools are installed
if not [%TARGET%] == [--noget] (
where /q git & if ERRORLEVEL 1 echo Git for Windows does not appear to be installed. Re run with "--install" & goto exit /b
)
if not [%TARGET%] == [--getonly] (
if not exist "%VSDIR%\VC\Auxiliary\Build\vcvars64.bat" echo Visual Studio does not appear to be installed. Re run with "--install" & goto exit /b
if not defined VisualStudioVersion call "%VSDIR%\VC\Auxiliary\Build\vcvars64.bat"
where /q python & if ERRORLEVEL 1 echo Python does not appear to be installed. Open a new cmd window or re-run with "--install" & goto exit /b
where /q conan & if ERRORLEVEL 0 pip show --version conan | findstr /R /C:"Version: %CONAN_VER%" & if ERRORLEVEL 1 echo conan %CONAN_VER% not found & pip uninstall -y -q conan
where /q conan & if ERRORLEVEL 1 echo installing conan %CONAN_VER% & pip install conan==%CONAN_VER%
)
rem Get source code
:getcode
if /I not [%TARGET%] == [--clean] (
if /I not [%TARGET%] == [--cleanall] (
if /I not [%TARGET%] == [--noget] (
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 /I [%TARGET%] == [--getonly] goto exit
if not exist %AUDACITY%\CMakeLists.txt echo The code files appear to be missing from %AUDACITY%. & goto exit
:cmake
cd %AUDACITY%
cmake.exe -G "%VISUALSTUDIOCMAKE%" -DCMAKE_CONFIGURATION_TYPES=%MAKE_CONFIG% %CMAKE_OPTS% -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% ALL_BUILD.vcxproj -p:configuration=%MAKE_CONFIG%
if ERRORLEVEL 1 echo Error: cannot build Audacity & goto exit
rem Settings stored with files rather than home directory
rem See https://manual.audacityteam.org/man/portable_audacity.html
mkdir %EXEDIR%\"Portable Settings"
cd %PROJROOT%
rem All done
echo 
echo.
echo Congratulations!
echo Your new Audacity %AUDACITY_REL% with ASIO support will now launch.
echo The ASIO options will appear if you have ASIO drivers and connected hardware
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 Note settings and preferences are stored in "%EXEDIR%\Portable Settings"
echo If you want to use settings in the user's home directory then delete this folder.
echo.
echo 
start %EXEDIR%\audacity.exe
if defined installing exit /B
:exit
cd %PROJROOT%
endlocal
@SteveALee
Copy link
Author

@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 via email

@SteveALee
Copy link
Author

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 via email

@SteveALee
Copy link
Author

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

@bezik46
Copy link

bezik46 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

@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.

@bezik46
Copy link

bezik46 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

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 via email

@Lubitorus
Copy link

Help! I have followed everything according to the instructions. But it asks me all the time to install Visual Studio 2019\Community, although I have already done this. what could be the problem? The language pack is also in English.

@SteveALee
Copy link
Author

@Lubiorus all I can think of is make sure you open a new command window so it picks up visual studio after it is installed. Also make sure you checked the C++ desktop option in VS as shown in the instructions.

@Lubitorus
Copy link

It finally worked, sorry I'm blind. Thank you <3

@SteveALee
Copy link
Author

What screen reader/ browser do you use? I can try with NVDA.

@Chris-C-Bristol
Copy link

Chris-C-Bristol commented Oct 11, 2022 via email

@SteveALee
Copy link
Author

@Chris-C-Bristol Thanks for that.

Yes it soon gets horribly complicated. That's the reason or my disclaimer about using only a clean machine without previous dev env set up.

@Giermann
Copy link

Thank you very much, @SteveALee !
I used to get Audacity compiled without any fears, but that was years ago... (Audacity 2.0.3).
Now I tried to get the latest 3.2.1 built, because of the new feature "Real-Time effects" - but failed...

I already had VS2017 installed and thought it would be okay - but it wasn't.
After trying several manual ways and tried to modify your script to use VS2017, I finally found that CMake seems to fail to create x64 configs for VS2017.
My last resort was to download and install a more recent Visual Studio and can now report:
Your script still works for Audacity 3.2.1, CMake 3.25.0, Python 3.11.0 and Visual Studio 2022!

If anyone is interested, here is my modified version for easy selecting the versions of all 4 tools on updates in the future:
https://gist.github.com/Giermann/c3f88ee2a147f9a688a2ca76e1334a54

@SteveALee
Copy link
Author

@Giermann hey, congrats and thanks for the heads up that VS 2022 is usable!! That's great to know. This build stuff can be so fragile, which of course is why I created the script in the first place. :D

@haberl333
Copy link

Thanks @SteveALee, your code encouraged me finally to try to build Audacity with Asio support. I always feared to install so much software only to create a program only once on my limited computer. Finally I used a Win11 virtuell machine offered by Microsoft (https://developer.microsoft.com/de-de/windows/downloads/virtual-machines/) using Virtualbox that needs a lot of Gigabytes but includes Visual Studio 2022. In this virtuell machine I only needed to install Git, CMake und Python to run build-audacity.cmd. That worked well for me.

@SteveALee
Copy link
Author

@haberl333 fantastic! That was a great thing to find out and I hope you enjoy it. I did not realise Windows VMs were available, thinking licencing would be a blocker. Those dev VMss are really useful. Using VMs or more recently, containers, are vital if you arexworking on lots of projects and I like how you suggest also keep all those tools from cluttering up you PC. I'll add a note. Thanks again

@mapper14
Copy link

mapper14 commented Feb 5, 2023

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

Amazing, it worked!..Now I can use Audacity-ASIO to connect with my Mackie ProFX V3 USB mixer; these newer V3 models do NOT use Window USB class compliant drivers but rather (first time for Mackie I believe) are dependent on Mackie (Loud corp) USB drivers which are downloadable from Mackie.com. Audacity is very confused in detecting the Windows Audio device passthrough which Audacity without ASIO is dependent on to get a successful Recording and Playback Audio setup.

Because I installed VS (Desktop with C++ ver) 2022 on my D: partition (I have a relatively small C: reserved primarily for Win 10 OS) I needed to adjust the path to VS in audacity-asio.cmd to point there.
I was worried as it ran as build-audacity.cmd seemed to restart the VS build routines several times and threw tons of Warnings. Warnings mostly involved components which were missing or the wrong version but eventually the script recovered after many had to be downloaded and updated (haven't checked the error list yet to try to understand all that). Total build took about 12 minutes to complete but finally got the Success! and "Where to find the audacity.exe" msg; it just in your c:\project folder which was created as recommended in the first steps.
Question...This new audacity-asio destination folder seems to have lots of .cmake files (and other files part of the build/make process creating a folder of around 491mb). Can I delete any of these or are these required to be left in place?

@Giermann
Copy link

Giermann commented Feb 6, 2023

Can I delete any of these or are these required to be left in place?

You may delete any files, that are not present in a normal Audacity installation.
In fact, you may also only replace the "portaudio_x64.dll" from an official distribution with that newly built one.

@SteveALee
Copy link
Author

SteveALee commented Feb 6, 2023

@mapper14 Congratulations and thanks for sharing. DOS/Windows use of separate drives is the source of so many problems. You were lucky. My guess is the CMake phase referenced all libs on C: when they were actually on D:. It's amazing VS dealt with it, with a double install. It might have been possible to address that, but life's too short :)

What @Giermann said re all those build artifact files. And it's great to know that only that DLL required.

BTW I wonder if you don't get much better latency than the old bridging driver which appeared to me to be a complete bodge.

@mapper14
Copy link

mapper14 commented Feb 6, 2023

Well, sorry to have to retract my enthusiasm now because with actual testing with my Mackie ProFX10V3 the s*** really hits the cooling fan! Although Audacity does run (the startup is extremely slow on my i5 laptop-almost 30 sec to get the splash screen!) the ASIO implementation in this build behaves very strangely when connected to the Mackies. Audacity Audio-Interface choices now add ASIO to the usual Windows MME, WASAPI and Direct Sound. Playback device choice now gives the usual Windows options for my laptop, Realtek HD speakers, headphones, plus ASIO. However the ASIO control panel acts very strangely; the ASIO tray icon has got to two vertical lines (not the fatal warning exclamation marks however) and flashes. ASIO control panel does open but does not display my ProFX bridged drivers correctly. On other ASIO compliant DAWs (such as Tracktion Waveform and Ableton) the ASIO panel correctly shows base ProFX plus two branches, one for the ProFX channel 1-2 and the other for ProFX channel 3-4 and either branch or both can be turned on or off. When the channel branch is ON, the DAW detects and uses that under its Interface-Device pull downs. I suspect these multichannel ASIO devices and drivers cause additional compatibility grief with this version of the audacity-asio build. Lord knows what the Allen Heath 4 channel USB mixers would show! The final (and fatal) defect shows up when Audacity-ASIO is actually connected to the ASIO-Mackie bridge and the input sound turns on for a few seconds, then turns off and keeps cycling and nothing comes through when the Record Monitor is clicked. Guess if I want to pursue this I'll have to dig into the code as to how the version of the ASIO base code is married to the audacity base. I'm pretty rusty on VS Make files so I have to rely on these cookbook scripts for now. I'd really love to hear if any Audacity geeks have any further experiences (good or bad) with the actual nuanced usages and behaviour after building and running audacity-asio. Cheers for now, Mike

@SteveALee
Copy link
Author

Sigh! So two possibilities come to mind 1) the Audacity ASIO support isn't working with your setup, or 2) the build is barfed even though it appears to work. I'll try to explore 2) in the next couple of days, but can't promise.

@SteveALee
Copy link
Author

@mapper14 I had a quick look and Visual Studio only lets you change the installation location of some components. I don't know if all required parts will be moved or not so adjusting the path in script may or may not work. I can't support this I'm afraid. If you really don't have room for VS and the build on C: I suggest your find another PC to build on.

@mapper14
Copy link

mapper14 commented Feb 7, 2023 via email

@Giermann
Copy link

Giermann commented Feb 7, 2023

As this Gist is only to help people compiling Audacity with ASIO support, I'd suggest to report the issue here.

@SteveALee
Copy link
Author

SteveALee commented Feb 7, 2023

Thanks @Giermann and +1

@mapper14 a build can in theory complete without errors but not be correct. It appears to me that VS only allows the libs etc to be in c:\Program Files... so if you edited the script to say they are in D:\ I'd say your build config is indeterminate.

Also ASIO4ALL is the "bodge" driver I had in mind in my previous comment. AfAIK it makes windows drivers look like ASIO but without any of the multichannel or speed advantages. I suggest if you see it being used you have a run time config issue which you can best take to the Audacity team for support Best of luck.

@mapper14
Copy link

mapper14 commented Feb 7, 2023 via email

@rvyhmeister
Copy link

I just tried this on a clean Windows 11 VM... Installed VS, python and git (and checkpointed the VM)... then ran the script... and here it dies... f:\audacity is set as PROJROOT.

Any help is appreciated!

Building Audacity 3.2.3 64 bit release with ASIO support...

-- Conan: checking conan executable
-- Conan: Found program CONAN_CMD-NOTFOUND
CMake Error at cmake-proxies/cmake-modules/conan.cmake:813 (message):
Conan --version failed='The system cannot find the file specified'
Call Stack (most recent call first):
cmake-proxies/cmake-modules/AudacityDependencies.cmake:18 (conan_check)
CMakeLists.txt:237 (include)

-- Configuring incomplete, errors occurred!
See also "F:/audacity/audacity-asio/CMakeFiles/CMakeOutput.log".
Error: Cannot create Audacity buildfiles

f:\audacity>

@rvyhmeister
Copy link

rvyhmeister commented Feb 17, 2023

Found the problem... conan existed and could be found, but not in the same path as python.exe... so I copied it from where it was to the scripts directory for the python that is in \program files\ directory... problem solved...

Now, how can I tell if I have ASIO properly installed? I don't see it anywhere, and my dev machine and the machine attached to the mixer are not the same... I don't want to go and expect it to work, and then there is something else... Thanks!

@Giermann
Copy link

Just open the Audio host submenu somewhere (in toolbar or Audio settings) and you should find "ASIO" there:
grafik

@victorwestmann
Copy link

I was just thinking... the first comment on this issue was on 2020. Almost 3 years ago. Isn't this something we couldn't try to merge with the main project now that it switched hands and they are revamping and improving Audacity considerable in such a short time span? What do you think? Is this doable? Is this possible?

@SteveALee
Copy link
Author

@rvyhmeister the fact its F: not C: as most common and tested indicates there might path issues.

@SteveALee
Copy link
Author

Oops, missed other comments

@Giermann thanks

@victorwestmann works form me. I'm sure even devs would appreciate easy build, at least for first build. And also those wanting to provide a drive by pull request. CC @Tantacrul

@rvyhmeister
Copy link

Hmm... I don't show the ASIO as shown by @Giermann. As I re-read the instructions it says that I must have ASIO drivers installed. I do have them installed, but they're not active, since I'm not connected to the ASIO mixer... So how do I get the ASIO drivers into Audacity? Or will ASIO show up magically when I run audacity on the machine connected to the mixer?

@SteveALee
Copy link
Author

@rvyhmeister try when connected to the active hardware. Otherwise, please ask over in the Audacity community as this Gist is about building only.

@MarkMayhew
Copy link

I had to "pip uninstall conan" and" pip install conan==1.59.0" for the script to work. Apparently conan 2.0 was just released and the commands are different. Reference: audacity/audacity#4360

@SteveALee
Copy link
Author

@MarkMayhew oh brilliant!! What happened to backward compatability!? Thanks for the heads up.

@rvyhmeister
Copy link

@rvyhmeister try when connected to the active hardware. Otherwise, please ask over in the Audacity community as this Gist is about building only.

When connected to active hardware, ASIO showed up and worked! Thanks to all!

@SteveALee
Copy link
Author

@rvyhmeister that's excellent news. Thanks for sharing.

@SteveALee
Copy link
Author

@MarkMayhew I updated the script. Thanks again.

@steadybright
Copy link

steadybright commented Apr 22, 2023

I got it to work as well, but it doesn't function as I expected, I've got a live instrument feed through a Focusrite Scarlett Solo. I am able to select the Scarlett Solo as the ASIO input and output in Audacity now, and it records the instrument through the Scarlett Solo just fine, but I cannot figure out how to configure Audacity to let me hear the instrument (other than playback of what was recorded). So, I can play the recording and hear the instrument in the recording, but I cannot hear the instrument "live." Has anyone else been successful making this work that may be able to help me? Thank you!

@SteveALee
Copy link
Author

SteveALee commented Apr 22, 2023

@steadybright Best ask the Audacity community as this gist is just about building with ASIO enabled.

That said it sounds like you need something else to play sounds coming in from your device when Audacity is not doing anything. Windows itself probably doesn't see the ASIO drivers at all. Have a look in control panel sound settings.

I'd expect audacity to let you hear when it's recording, so maybe select record and pause?

@SteveALee
Copy link
Author

Updated to Audacity 3.3.2

@SteveALee
Copy link
Author

SteveALee commented Jun 4, 2023

Fixed a bug stopping conan being installed as python was not on the path until you open a new cmd window

@Sky3RN
Copy link

Sky3RN commented Jun 20, 2023

It doesn't work with me..

I get stuck on the splash screen. I think portaudio_x64.dll is the issue. I tried swapping the portaudio dll with the original one and Audacity started but with no ASIO, I also copied the new compiled to the original Audacity and it didn't start (splash screen only). So yeah this file is causing trouble but I don't know why and how to solve it.

I spent hours and hours trying to compile and compile it again. Still stuck on the splash screen. Grrr.
Sometimes I get the popup asking for the ASIO I wand to use and splash screen again.

This is why I'm trying to compile Audacity with ASIO : audacity/audacity#4784

@SteveALee
Copy link
Author

@Sky3RN sorry to hear it does not work. Sadly I cannot offer any advice or support other than on this script that build Audacity. Just some random un tested thoughts.

  • I assume you have 64 bit Windows? Hard to image not these days :-P
  • Maybe something to do with French Language Windows? I know you need the English language pack to keep Visual Studio happy.
  • May be there is an Audacity log where startup errors are recorded? Did you explore the Windows error log?
  • You indicate a specific ASIO driver is causing problems so can you try another? Perhaps for other hardware? I don't know if the ASIO4ALL hack is compatible with Audacity.

Good luck.

@Sky3RN
Copy link

Sky3RN commented Jun 21, 2023

  • I assume you have 64 bit Windows? Hard to image not these days :-P

Sorry I didn't mention it. Yes, it's Win 10 64 bits.

  • Maybe something to do with French Language Windows? I know you need the English language pack to keep Visual Studio happy.

I've tried with French language, both French and English language, and also English language only. Same thing everytime.

  • May be there is an Audacity log where startup errors are recorded? Did you explore the Windows error log?

Yup, it might be, but I don't know where to find it. 😁 It's easier on Linux.. I'm not really familiar with Windows.

  • You indicate a specific ASIO driver is causing problems so can you try another? Perhaps for other hardware? I don't know if the ASIO4ALL hack is compatible with Audacity.

I tried with 2 different ASIO, one for my PreSonus StudioLive 16.0.2 and one for my Zoom UAC-232 (which is why I'm trying to compile Audacity). I never use the sh*tty ASIO4All. :)

@SteveALee
Copy link
Author

@Sky3RN

It's easier on Linux.. I'm not really familiar with Windows.

Any reason not to stick with Linux? It's been a decent desktop experience for a long time now. Is it availability of other software? Out of Interest which distro?

I tried with 2 different ASIO,

So it fails with two different manufacturer's drivers? Might be safe to assume doesn't work with any ASIO drivers? Hmm. I only have a McMillen ASIO driver. Will try to test a new build with it over next few days to ensure something did't go wrong when I bumped the Audacity build version.

never use the sh*tty ASIO4All.

Good plan. AFAIK it's only for use with ASIO only apps when you have no ASIO drivers. Trouble is many manufacturers got lazy and suggest you use it rather than supplying ASIO drivers. Not multi channel and not latency gains. Sigh. As you say "sh*tty " :)

@Sky3RN
Copy link

Sky3RN commented Jun 21, 2023

@SteveALee

It's easier on Linux.. I'm not really familiar with Windows.

Any reason not to stick with Linux? It's been a decent desktop experience for a long time now. Is it availability of other software? Out of Interest which distro?

The reason is more complicated than that !
I use Linux everyday for my "everyday tasks" as I could say. I use Windows only for two things : Recording / Mixing, and video editing.
I never use Audacity, I'm not a big fan of this software. But the reason why I'm trying to get this thing fixed is : As a sound engineer and YouTuber talking about sound, a lot of my audience are noobs using Audacity and nothing else. I recently did a video testing the new Zoom UAC-232 which is capable to record in 32 bits float, and I noticed it doesn't work on Audacity. In fact, it works fine with Audacity on Linux, but not with Audacity on Windows. By "doesn't work" I mean it's recognized but doesn't record in 32 bits float in Audacity for Windows 10.
That's why I'm trying to know why. And all of my researches led me to this point : Maybe it could come from this ASIO not supported natively on Audacity.

I tried with 2 different ASIO,

So it fails with two different manufacturer's drivers? Might be safe to assume doesn't work with any ASIO drivers? Hmm. I only have a McMillen ASIO driver. Will try to test a new build with it over next few days to ensure something did't go wrong when I bumped the Audacity build version.

Exactly, failed with the PreSonus driver and the Zoom driver. I've seen your script installs Audacity 3.3.2 and now the official release is 3.3.3, maybe it could be the cause ? I don't know. I'm not an expert in dev !

never use the sh*tty ASIO4All.

Good plan. AFAIK it's only for use with ASIO only apps when you have no ASIO drivers. Trouble is many manufacturers got lazy and suggest you use it rather than supplying ASIO drivers. Not multi channel and not latency gains. Sigh. As you say "sh*tty " :)

😁😁😁

@SteveALee
Copy link
Author

@Sky3RN So I'm a little confused now. Are you using both drivers with the same 32 bit capable Zoom hardware and get the same failure - hang during splash screen? Or different hardware for each driver and same failure? Or something else?

For your info I've found Audacity only adds the ASIO support UI when the hardware is connected using the ASIO driver. Might be relevant?

I'll look up your tube channel :)

I'll bump the version but I think you have same problem with both 3.3.2 with this script and 3.3,3 with Audacity project build?

@AdamWardUK
Copy link

@Sky3RN
Can't advise on this (not my area at all), but it occurred to me that testing https://www.wavosaur.com/ might help scope where the problem is - it supports ASIO without (being closed source) portaudio, so can perhaps help identify the issue as with portaudio itself or the underlying Windows support? And it might have some useful logging.

@Sky3RN
Copy link

Sky3RN commented Jun 21, 2023

@SteveALee

@Sky3RN So I'm a little confused now. Are you using both drivers with the same 32 bit capable Zoom hardware and get the same failure - hang during splash screen? Or different hardware for each driver and same failure? Or something else?

In fact, I have 3 soundcards plugged, all used "at the same time", I'm simply switching from one to another when needed, for multiple usages. So the failing is here with whatever soundcard and ASIO driver I use.

For your info I've found Audacity only adds the ASIO support UI when the hardware is connected using the ASIO driver. Might be relevant?

I've tried to compile with 2 of 3 soundcards disconnected, keeping connecting only the Zoom UAC-232 and.. Same issue !

I'll look up your tube channel :)

I don't know if you'll understand, it's all in French. :p

I'll bump the version but I think you have same problem with both 3.3.2 with this script and 3.3,3 with Audacity project build?

I'm trying right now to try with 3.3.3 (modified the "3.3.2" into "3.3.3" in the script) but keeps on failing.. Even with only 1 soundcard connected.

@AdamWardUK

Can't advise on this (not my area at all), but it occurred to me that testing https://www.wavosaur.com/ might help scope where the problem is - it supports ASIO without (being closed source) portaudio, so can perhaps help identify the issue as with portaudio itself or the underlying Windows support? And it might have some useful logging.

I'll have a look but I don't know how to proceed and I don't have enough time these days ! :/

@SteveALee
Copy link
Author

I bumped the Audacity version to 3.3.3 - https://github.com/audacity/audacity/releases/tag/Audacity-3.3.3

@SteveALee
Copy link
Author

@Sky3RN Compiling is independent of any sound hardware. The issue is how Audacity reacts when it runs. Perhaps having all hardware connected at once is confusing audacity. But you say even with just one. Or all the drivers?

I will double check it works with my ASIO hardware and let you know.

No I don;t speak French - looks good though. My wife is learning :)

@SteveALee
Copy link
Author

@Sky3RN did you try an ASIO DAW or some such to confirm the problem is with Audacity?

@SteveALee
Copy link
Author

@AdamWardUK oh, I see you suggested that too - thanks

@Sky3RN
Copy link

Sky3RN commented Jun 21, 2023

@SteveALee

I bumped the Audacity version to 3.3.3 - https://github.com/audacity/audacity/releases/tag/Audacity-3.3.3

Maybe I'm not sure what does "bumped" mean, but it looks like a real Audacity without ASIO.
As I told you before Audacity works fine, it's the version compiled with ASIO who doesn't work. So yeah, the 3.3.3 works, but 3.3.3 with ASIO doesn't work. Same for the 3.3.2.
I don't know if you see what I mean ?

Perhaps having all hardware connected at once is confusing audacity. But you say even with just one. Or all the drivers?

I tried with all hardware connected at the same time, and only with one connected.
Something's blocking and I can't find what and why..

No I don;t speak French - looks good though. My wife is learning :)

👍👍

did you try an ASIO DAW or some such to confirm the problem is with Audacity?

Yep. As far as it's my job, I'm using everyday Mixcraft, sometimes ProTools or Cakewalk or Studio One. Never had any issues with them.

To resume : Audacity works fine but doesn't record in 32 bits float, that's why I'm trying to compile it with ASIO, and when it's compiled it doesn't open and get stuck on the splash screen. Sometimes it asks for the ASIO driver but still gets stuck, and most of the other times I don't have the popup for ASIO selection.
I tried to compile and recompile again and again and again, I don't know how to force this popup to be shown ! It's seem to be a random thing.

@SteveALee
Copy link
Author

@Sky3RN I'm afraid I've run out of ideas for you. I just clean built 3.3.3 and it works fine with my McMillen K-mix ASIO driver. I needed to turn on the Device toolbar to see the ASIO option. It offers all 9 channels. I just didn't try any audio. But you don't get that far. :(

So I can only think it is a Windows issue - unlikely, an Audactity bug, an ASIO driver issue, or a audacity/driver compatibility issue.

In theory compiling twice will have been enough as installed drivers have no influence on the build, only the audacity version number
If you already had visual studio or python installed they may have been issues but I expected a build failure.
Note the --cleanall option deletes all fetched and built files but not the install tools. Try that an uninstalling the tools if you really want to

I can only wish you the best of luck. Sorry.

@Sky3RN
Copy link

Sky3RN commented Jun 22, 2023

@SteveALee I understand ! Nop unfortunately !

I used to think it's a Windows issue too, but I tried on 2 different computers. One is my main desktop, the other one is my laptop and they don't have the same setup at all. But they mostly have the same ASIO drivers installed (Zoom, PreSonus, ASIO Link Pro).
I tried with and without any gear connected, same issue : Stuck on the splash screen.

I might think it could be a driver compatibility issue but.. Which one ? I'll have to uninstall all the drivers to find out the messing one ! I'll try.

I use the --cleanall option ! ;-) And I already tried to uninstall the tools and reinstall everything with your script !

Well, thank you so much for your time and your kindness. I guess the only thing to do now is looking deeply on the Internet.

@SteveALee
Copy link
Author

@Sky3RN

I might think it could be a driver compatibility issue but.. Which one ? I'll have to uninstall all the drivers to find out the messing one ! I'll try.

Sadly that is probably your sensible next step. Uninstall all and add one at a time. Don't you just love computers! I'd try only the 32 bit one first as that's a bit unusual. I assume Audacity supports 32 bit OK?

@Giermann
Copy link

@Sky3RN

And I already tried to uninstall the tools and reinstall everything with your script !

Remember: the script offered here and the post-installed tools are only to compile Audacity!!
They neither affect the runtime of an ASIO build, nor are they necessary on every target machine.

You already wrote, that you checked your built portaudio_x64.dll with an original distribution and vice versa. Another option would be to share (NO - not to publish, only to share for testing) your built DLL with another person and/or get a running version from him or her. That way you could verify if it is really a driver issue with your drivers or a fault at build time.

@SteveALee
Copy link
Author

SteveALee commented Jun 22, 2023

@Sky3RN thanks @Giermann

I assumed you had no errors in the build and audacity was launched at the end? It seems so from what you say.

if you want to check for any errors / warnings you can run the following to build and send all output the file out.txt. But again I can;t really support you on build errors

build-audacity.cmd --clean > out.txt 2>&1

@Sky3RN
Copy link

Sky3RN commented Jun 22, 2023

@SteveALee

Sadly that is probably your sensible next step. Uninstall all and add one at a time. Don't you just love computers! I'd try only the 32 bit one first as that's a bit unusual. I assume Audacity supports 32 bit OK?

I just tried ! I've uninstalled all of my ASIO drivers, recompiled Audacity and.. Still doesn't work.
Yes it normally should support 32 bits float because it's working on Linux natively, didn't have to compile with ASIO.

@Giermann

Another option would be to share (NO - not to publish, only to share for testing) your built DLL with another person and/or get a running version from him or her. That way you could verify if it is really a driver issue with your drivers or a fault at build time.

I will try that !

@SteveALee

I assumed you had no errors in the build and audacity was launched at the end? It seems so from what you say.

I guess there was no error, but everytime I get a "121 avertissements" (I guess in English it's "121 warnings").

Here's the output file : http://pastebin.fr/129044

@htdSoundTech2020
Copy link

htdSoundTech2020 commented Sep 2, 2023

@SteveALee

It's easier on Linux.. I'm not really familiar with Windows.

Any reason not to stick with Linux? It's been a decent desktop experience for a long time now. Is it availability of other software? Out of Interest which distro?

The reason is more complicated than that ! I use Linux everyday for my "everyday tasks" as I could say. I use Windows only for two things : Recording / Mixing, and video editing. I never use Audacity, I'm not a big fan of this software. But the reason why I'm trying to get this thing fixed is : As a sound engineer and YouTuber talking about sound, a lot of my audience are noobs using Audacity and nothing else. I recently did a video testing the new Zoom UAC-232 which is capable to record in 32 bits float, and I noticed it doesn't work on Audacity. In fact, it works fine with Audacity on Linux, but not with Audacity on Windows. By "doesn't work" I mean it's recognized but doesn't record in 32 bits float in Audacity for Windows 10. That's why I'm trying to know why. And all of my researches led me to this point : Maybe it could come from this ASIO not supported natively on Audacity.

I tried with 2 different ASIO,

So it fails with two different manufacturer's drivers? Might be safe to assume doesn't work with any ASIO drivers? Hmm. I only have a McMillen ASIO driver. Will try to test a new build with it over next few days to ensure something did't go wrong when I bumped the Audacity build version.

Exactly, failed with the PreSonus driver and the Zoom driver. I've seen your script installs Audacity 3.3.2 and now the official release is 3.3.3, maybe it could be the cause ? I don't know. I'm not an expert in dev !

never use the sh*tty ASIO4All.

Good plan. AFAIK it's only for use with ASIO only apps when you have no ASIO drivers. Trouble is many manufacturers got lazy and suggest you use it rather than supplying ASIO drivers. Not multi channel and not latency gains. Sigh. As you say "sh*tty " :)

😁😁😁

The drivers from zoom for their smaller devices have always set the datachunk and native sample rate the computer will be "looking" for from the device. When this doesn't match up (usually DAW software to datachunk size for speed and memory use, Native sample rate to what's on the device itself) you can get all kinds of issues, from sound not showing up to driver not showing up. Also, 32bit windows doesn't exactly have an audio capability for 32bit float natively. I know this because every audio app I've tried in the 32bit versions only goes as high as 24bit. With Linux, you didn't have this problem because linux was 64bit only for a long while before 64bits became the norm for most Windows installations. If you are stuck with a 32bit windows, you are almost always limited to 24bits, 96k, accept with one or two software titles (can't remember which). If you are compiling a 64bit version and still don't get 32bit float (I've had no experience with your device here, so grain of salt), it may be connected to the driver, though I have seen that the device can use 24bit and the system 32 without problems in Adobe Audition. My experience with zoom devices has been that there is a driver interface that you can access to set the sample rate and the data chunk, but the device must be set to the right mode or you will not get audio; or you will get a message in your DAW that it isn't working. My H6 has 2 drivers installed. One is a simpler L\R stereo driver, another is the multitrack driver. If I set the device to Stereo for the connection and the PC for Multitrack, no go. If I set the data chunk wrong, the sound fragments. The sample rate can be higher than the project file, but lower and it'll stutter and possibly flag errors, showing you a thousand popup messages for all the samples you drop.
And the ASIO4ALL driver is not actually an ASIO driver, but an attempt at a clone of it. While I have always had access to the 32bit driver in 32bit Audacity, I haven't tried 64bits.
Here are the possibilities I can see:

  1. The DLL you are using is corrupted, replace it with a clean download.
  2. The DLL may be flagged as a "Dangerous" file by an AV like Windows Defender, fix that by allowing the file.
  3. The script is downloading new versions that mismatch (unlikely, but possible)
  4. If the DLL is the result of a Build operation, the build is done but one of the binaries or project files is missing or corrupted.
  5. You need to set your path variables on your own, since you may have UAC issues with that (a nasty little gift from Windows 7 that is helpful on occasion).

@SteveALee
Copy link
Author

@htdSoundTech2020 Thank you for your insights! It's a little hard to parse the one big paragraph but some thoughts.

  • This gist only automates the Audacity project build so any technical issues using Audacity need to be raised with the project team,
  • While the 32 Bit float audio resolution is not directly related to platform bit size, it makes sense 64 bits is required. To be honest older 32 bit platforms are likely to hit all sorts of support issues.
  • Yes ASIO4ALL is not ASIO - but this point confuses many due to the inaccurate name ASIO-fake or fauxASIO would be better. It makes normal windows sound appear to be the ASIO interface that Apps that require ASIO drivers demand. You don't get any of the ASIO benefits.

@mateusfig
Copy link

mateusfig commented Oct 9, 2023

No success. I tried it many time, many ways, with different Audacity version from 3.2.0. I uninstalled the previous Python and CMkake and installed this script's version. No way... I don't know what to do anymore. Always it end up with erros.

@Giermann
Copy link

Please post the errors here!
I didn't test the latest version yet, but I'm sure we'll find a solution... :)

@SteveALee
Copy link
Author

SteveALee commented Oct 10, 2023

Thanks @Giermann

@mateusfig I just did a full install and build and got no errors so the basic script is fine. SO perhaps somehting with you PC? There IS a lot of output, especially now conan is used but that's all normal "Noise". In addition to telling us what the errors are...

  • What version of Windows?
  • try the --cleanall command line option

@mateusfig
Copy link

Thanks @Giermann

@mateusfig I just did a full install and build and got no errors so the basic script is fine. SO perhaps somehting with you PC? There IS a lot of output, especially now conan is used but that's all normal "Noise". In addition to telling us what the errors are...

  • What version of Windows?
  • try the --cleanall command line option

Thanks for your feedback.

I use Windows 10 Pro (19045.3448).

I tried --cleanall a few times.

I will try build once again and I will try post the erros in the end of the proccess.

@SteveALee
Copy link
Author

Best of luck - do try grabbing a fresh copy of the script - just in case. I should put a version number at the top

@mateusfig
Copy link

mateusfig commented Oct 10, 2023

@SteveALee

I just tried once again with no success, using 2.0.1 scriptt version.

I appended the full output from cmd: https://pastebin.com/z69hRC8x

@SteveALee
Copy link
Author

@mateusfig @Giermann O wow,

so it seems to be barfing when trying to link to create a libsndfile conan component

That in turn maybe caused by this:

C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(249,5): warning MSB8065: Custom build for item "C:\Users\mmachado.conan\data\libsndfile\1.0.31__\build\899d2c53f1b9e4a7deb461e3cf1716f2d4fd697d\build\CMakeFiles\bf18e4cabeda36cd82ee3e51ae56b6cc\sndfile.def.rule" succeeded, but specified output "c:\users\mmachado.conan\data\libsndfile\1.0.31__\build\899d2c53f1b9e4a7deb461e3cf1716f2d4fd697d\build\src\sndfile.def" has not been created. This may cause incremental build to work incorrectly. [C:\Users\mmachado.conan\data\libsndfile\1.0.31__\build\899d2c53f1b9e4a7deb461e3cf1716f2d4fd697d\build\sndfile.vcxproj]

There were a LOT of warnings for that file which to me is a code smell but might have been expected.

I noticed some output text "Versão do MSBuild 17.7.2+d6990bcfa para .NET Framework" and previously a French native had problems which caused us to mention in the Gist instructions that English language packs might be required for both Windows and Visual Studio. The errors don't indicate language filename problems, but perhaps something to do with incremental build (why?)

Otherwise I'll have to pass over the @Giermann

When I have time I'll compare to me logs

@mateusfig
Copy link

@SteveALee ,

Loads of errors...

My native language is portuguese. My Visual Studio has english language package, but my Windows 10 doesn't. I will try installing english language pack on Windows 10.

@mateusfig
Copy link

mateusfig commented Oct 10, 2023

That's the CMakeError.log content:

https://pastebin.com/CDFDwjev

@SteveALee
Copy link
Author

@mateusfig is that after installing the Windows EN language pack? It seems it cannot locate the [we function in MSVC (the C compiler included in Visual Studio)

As we have no idea what kind of mess Microsoft might have made of language dependencies (if any) I I would uninstall/reinstall everything and be sure to run --cleanall. Sorry for this pain.

@Giermann
Copy link

@mateusfig
First of all, markdown language seems not to be the best choice to paste large text files. Maybe you should better use another service, for example pastebin.com and only copy the link to the files here.
If you are able to do that, it would be much easier to follow other comments if you paste your files there and then edit your comments - thank you very much!

But now to your issue: I just started a fresh run of the provided script on a (nearly) clean install of Windows (German) and the build succeeded without errors.
Then I compared the output and also identified the already mentioned warning "MSB8065" to be the main difference. For some reason, it is not creating the "sndfile.def" in libsndfile which finally leads to error "LNK1104".

A Google search returned a similiar issue (reported at StackOverflow) when the manually set date of a computer was before the creation of the source files. So I did some tricks to verify that, but was only able to verify it with a date after 12th of September, because git refuses to connect to sites with invalid SSL certificates.
But even this completed successfully (all runs with 121 warnings).
So, I don't know how to continue from here...

@SteveALee
Copy link
Author

SteveALee commented Oct 11, 2023

@Giermann Great work. Thanks for confirming it can work! I agree with your error detection - that was the first I saw.

As far as I recall git doesn't preserve file timestamps on clone/fetch (a right pain). So as long as a --cleanall or otherwise deleting the source was was done , forcing the files to be re fetched they'd have to be dated before current clock time - unless there is a really weird clock thing happening. Perhaps if localisation of time format is different between Windows GUI and command line - clutching at a straw there. I'm also stuck I'm afraid.

@mateusfig
Copy link

@mateusfig is that after installing the Windows EN language pack? It seems it cannot locate the [we function in MSVC (the C compiler included in Visual Studio)

As we have no idea what kind of mess Microsoft might have made of language dependencies (if any) I I would uninstall/reinstall everything and be sure to run --cleanall. Sorry for this pain.

I don't have installed EN language pack still. I will try it. I guess also this is the problem.

@mateusfig
Copy link

@mateusfig First of all, markdown language seems not to be the best choice to paste large text files. Maybe you should better use another service, for example pastebin.com and only copy the link to the files here. If you are able to do that, it would be much easier to follow other comments if you paste your files there and then edit your comments - thank you very much!

But now to your issue: I just started a fresh run of the provided script on a (nearly) clean install of Windows (German) and the build succeeded without errors. Then I compared the output and also identified the already mentioned warning "MSB8065" to be the main difference. For some reason, it is not creating the "sndfile.def" in libsndfile which finally leads to error "LNK1104".

A Google search returned a similiar issue (reported at StackOverflow) when the manually set date of a computer was before the creation of the source files. So I did some tricks to verify that, but was only able to verify it with a date after 12th of September, because git refuses to connect to sites with invalid SSL certificates. But even this completed successfully (all runs with 121 warnings). So, I don't know how to continue from here...

I'm sorry for my long text post. I just corrected this with pastbin.com

My issue is kind of weird. I will try the build on another computer (no EN language package also) and see what I 'll get.

@mateusfig
Copy link

@mateusfig is that after installing the Windows EN language pack? It seems it cannot locate the [we function in MSVC (the C compiler included in Visual Studio)
As we have no idea what kind of mess Microsoft might have made of language dependencies (if any) I I would uninstall/reinstall everything and be sure to run --cleanall. Sorry for this pain.

I don't have installed EN language pack still. I will try it. I guess also this is the problem.

I installed EN language pack and got same issue.

@Giermann
Copy link

Did you already try on another computer?
Can you also try to change line 137 in the script and modify "-Daudacity_has_asio_support=On" to "-Daudacity_has_asio_support=Off"?
I'm pretty sure, the problem is related to the build in general, not ASIO specific.

If this also fails, it would be time to open an issue to get support from the Audacity team:
https://github.com/audacity/audacity/issues

@Giermann
Copy link

Giermann commented Oct 13, 2023

Another idea: the issue leading to MSB8065 seems to be compiler dependent.
You could try to use another version of Visual Studio, i.e. 2019 instead of 2022.

To do so, uninstall all components (Python, cmake, Visual Studio and its installer), reboot and try again with a fork of Steves script, which I modified to choose the VS version:
https://gist.github.com/Giermann/c3f88ee2a147f9a688a2ca76e1334a54
Set VISUALSTUDIO_REL in line 34 to either 2019 or 2017 and then start from scratch with "--install" and so on...

@SteveALee
Copy link
Author

SteveALee commented Nov 4, 2023

I updated to Audacity 3.4.0 and switched to using the "cmake" that comes with Visual Studio. This means the cmake-gui option is no longer available.

I also cleaned up the flow so the --install option no longer required a new cmd window to be opened .

@SteveALee
Copy link
Author

Due to the number of issues with Audacity 3.4.0 this builds 3.3.3. If you want 3.4 then use "build-audacity.cmd -- install -v3.4"

Copy link

ghost commented Nov 10, 2023

All I get is "Error: Cannot create Audacity buildfiles" over and over cmake just gives a conan error when I try to build in there. I have been at this all day somehow I feel Audacity is just not worth my time.

@SteveALee
Copy link
Author

SteveALee commented Nov 11, 2023

@ZardozXerxes So sorry to hear your frustration. Tech build can so often be like that, there are so many variables to get lined up. Can you use the release Audacity without ASIO while you try to figure this out?

I've just tried again and all is well with the script. So there's something not quite right with your setup. We'd need more info to help.

Are you building 3.3.3 (the default) or -3.4.1 (needs -v3.4 option)? 3.3.3 is still the most reliable.

Please ensure you have followed the instructions EXACTLY. Here are some key points

  • Do you definitely have the latest script version 2.2.2? Re download to be sure.
  • Are you an administrator on your WIndows 10 or 11 64 bit (ie not a organisational PC)?
  • Make sure you are in a folder C:\projects in the cmd window
  • If your PC is not English make sure you have EN language packs installed for Windows and VS
  • Ensure you ticked the specified options when installing Visual Studio and Python (you probably did)
  • You could try the --cleanall and then --cleaninstall options (seperately) to delete any files lying around

Best of luck!

@SteveALee
Copy link
Author

@ZardozXerxes I did find a small bug but only if not using the specified --install option. Please try new script version 2.2.3

Copy link

ghost commented Nov 11, 2023

I already have Audacity but I need to record from my UA Apollo Twin X line in and that can only be done via ASIO.
Yes I had version 2.2.2, I just ran the scrip I did not change the version so I presume it was 3.3.3, yes I am admin, yes I am in the specified folder, I am in English, I had already specified the options from trying and failing to build it myself using Cmake, I tried the --cleanall a few times but not the --cleaninstall as I was just following the instructions as written, that said I did clear the entire project folder a few times. I will try the new script. Unrelated but I think this might be a typo "follow the prompts, pressing a ket to start each tool's installer in turn".

Copy link

ghost commented Nov 11, 2023

I tried the new script many times and got the same error, I thought it might be a conan version error or conflict so I checked if it was already installed and it was not, so I tried installing it first and then with it uninstalled. Here is the error in full.

conan install: error: unrecognized arguments: --install-folder C:/projects/audacity-asio\conan-install-release
ERROR: Exiting with code: 2
Restoring global Conan config...
Traceback (most recent call last):
File "C:\projects\audacity\conan\conan_runner.py", line 339, in
subprocess.check_call(conan_options)
File "C:\Users****\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 413, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['conan.exe', 'install', 'C:\projects\audacity\conan', '--build=missing', '--install-folder', 'C:/projects/audacity-asio\conan-install-release', '--output-folder', 'C:/projects/audacity-asio', '--remote', 'audacity-binaries', '--profile:build', 'C:/projects/audacity-asio\profile-build.profile', '--profile:host', 'C:/projects/audacity-asio\profile-host-release.profile']' returned non-zero exit status 2.
CMake Error at cmake-proxies/cmake-modules/AudacityDependencies.cmake:202 (message):
Conan failed to install dependencies (1) C:/Users/Sam
Cartman/AppData/Local/Programs/Python/Python312/python.exe
Call Stack (most recent call first):
CMakeLists.txt:572 (include)

-- Configuring incomplete, errors occurred!
Error: Cannot create Audacity buildfiles

I found a program installed called something like conan version manager I think it was installed by Visual studio, I uninstalled it and got further and now have another error.

pkgconf/2.0.3: pkgconf/2.0.3: ERROR: Package '2d91722813283545a5bec8be869b6396b7c40537' build failed

pkgconf/2.0.3: WARN: Build folder C:\Users*.conan\data\pkgconf\2.0.3__\build\2d91722813283545a5bec8be869b6396b7c40537\build-relwithdebinfo
ERROR: pkgconf/2.0.3: Error in build() method, line 92
meson.configure()
ConanException: Error 9009 while executing meson setup --native-file "C:\Users*
.conan\data\pkgconf\2.0.3__\build\2d91722813283545a5bec8be869b6396b7c40537\build-relwithdebinfo\conan\conan_meson_native.ini" "C:\Users*.conan\data\pkgconf\2.0.3__\build\2d91722813283545a5bec8be869b6396b7c40537\build-relwithdebinfo" "C:\Users*.conan\data\pkgconf\2.0.3__\build\2d91722813283545a5bec8be869b6396b7c40537\src" -Dprefix="C:\Users*.conan\data\pkgconf\2.0.3__\package\2d91722813283545a5bec8be869b6396b7c40537"
Restoring global Conan config...
Traceback (most recent call last):
File "C:\projects\audacity\conan\conan_runner.py", line 339, in
subprocess.check_call(conan_options)
File "C:\Users*
\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 413, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['conan.exe', 'install', 'C:\projects\audacity\conan', '--build=missing', '--install-folder', 'C:/projects/audacity-asio\conan-install-release', '--output-folder', 'C:/projects/audacity-asio', '--remote', 'audacity-binaries', '--profile:build', 'C:/projects/audacity-asio\profile-build.profile', '--profile:host', 'C:/projects/audacity-asio\profile-host-release.profile']' returned non-zero exit status 1.
CMake Error at cmake-proxies/cmake-modules/AudacityDependencies.cmake:202 (message):
Conan failed to install dependencies (1) C:/Users/****/AppData/Local/Programs/Python/Python312/python.exe
Call Stack (most recent call first):
CMakeLists.txt:572 (include)

-- Configuring incomplete, errors occurred!
Error: Cannot create Audacity buildfiles

@SteveALee
Copy link
Author

SteveALee commented Nov 11, 2023

@ZardozXerxes Oh dear.

I just released script 2.2.4 so you should try that (though earlier should have worked) As there is so much I do not know about your set up best you do a clean build from the top.

I did spot you have python 3.12 and I got errors building due to conan dependency problems. The script installs python 3.11 Use that!

  • Uninstall Visual Studio and Python and their installers - 4 programs
  • run "build-audacity.cmd --cleanall"
  • run "build-audacity.cmd" or "build-audacity.cmd -v3.4.1" The --install option is now the default

If that doesn work I'm at a loss

@SteveALee
Copy link
Author

SteveALee commented Nov 11, 2023

[Update] The --install option is now the default as that is most likely what most people will want. The --build option will build with out installing build tools first.

Copy link

ghost commented Nov 12, 2023

@SteveALee Yes I thought of that too and uninstalled all versions of python but the result was the same. 2.24 is not working, the same as the last. The only things installed now are Git For Windows and Visual Studio before I run the script. This is the first thing I have ever tried to build from git hub (and probably the last after this) so I have no idea why it isn't working.

@SteveALee
Copy link
Author

@ZardozXerxes

2.24
What is that? The script will build 3.3.3 or 4.2.1. The dependencies are way too complex to support more

The only things installed now are Git For Windows and Visual Studio before I run the script
Why is VS installed. I suggested you uninstalled it first. I know it's slow but otherwise you are not in a state I can support. What VS pre installed before you tried to build? If s owhat version? i try to be clear in the instructions that if you already have a dev env setup then they may well be problems due to tool dependencies.

Oh you should check no CMAKE is installed.

You can't really blame github -this is gist (lol) though yes it does fetch the source from git. That's incredibly common. The problem is most likely something to do with your specific PC config being out side the tested bounds. It happens sadly. So do you build other software? Again that indicates you might have a dev env on your PC that might clash.

@bezik46
Copy link

bezik46 commented Nov 13, 2023

@ZardozXerxes

Stop complaining, spring up plain Win 1x VM in whatever (Hyper-V, Virtualbox, VMware player etc) and run the script. The result will be surprising, it will just work

after you can ditch the VM and get back to your setup

@SteveALee
Copy link
Author

SteveALee commented Nov 13, 2023

@scerazy I quite forgot that option! Thanks. I see MS have just updated the VMs. I'll make it stand out more in the notes.

@SteveALee
Copy link
Author

Audacity 3.4.2 tested. use -v34.2 option - see notes

@lammersma
Copy link

Hi @SteveALee , thanks for this amazing script.
I have used the Sandbox in Windows 11. Maybe a bit slower, the whole process took almost an hour, but worked great.
I had some issues with the result. It kept crashing. First it complained about missing avformat dll's. I installed FFMpeg to solve that issue. The second was the language. Audacity used 'Dutch' as language. After switching it to English, I was able to record all 15 tracks of the Rodecaster Duo.
BTW, I used the version of a few days ago. I will try to build the new script as well to get Audacity 3.4.2

Thanks again for the amazing script! And I just bought you a Ko-fi :)

@SteveALee
Copy link
Author

@lammersma wow, I completely forgot about sandbox! I tried once when it launched and found it a bit buggy. Thanks for the tip. That is rather slow, but VirtulBox is not fast (VMware player is useless if using Hyper-V, eg for WSL).

I think there are plenty of crashing bugs left in 3.4.x :D but 3.4.2 does seem better. I'll leave the script defaulting to 3.3.3 for a bit longer.

The Language thing is weird. Maybe the sandbox is not quite localised correctly. Good to know you fixed it and it is actually useful!! Even better to know you brought me a ko-fi!!

Copy link

ghost commented Nov 17, 2023

@scerazy

I came here for help not trolling and disrespect, nothing I have said is complaining I am just trying to get it to work.
Creating a VM is not a solution, this should work without a clean version of windows or its not much use to anybody.

@Sky3RN
Copy link

Sky3RN commented Nov 17, 2023

@SteveALee

I bumped the Audacity version to 3.3.3 - https://github.com/audacity/audacity/releases/tag/Audacity-3.3.3

Maybe I'm not sure what does "bumped" mean, but it looks like a real Audacity without ASIO. As I told you before Audacity works fine, it's the version compiled with ASIO who doesn't work. So yeah, the 3.3.3 works, but 3.3.3 with ASIO doesn't work. Same for the 3.3.2. I don't know if you see what I mean ?

Perhaps having all hardware connected at once is confusing audacity. But you say even with just one. Or all the drivers?

I tried with all hardware connected at the same time, and only with one connected. Something's blocking and I can't find what and why..

No I don;t speak French - looks good though. My wife is learning :)

👍👍

did you try an ASIO DAW or some such to confirm the problem is with Audacity?

Yep. As far as it's my job, I'm using everyday Mixcraft, sometimes ProTools or Cakewalk or Studio One. Never had any issues with them.

To resume : Audacity works fine but doesn't record in 32 bits float, that's why I'm trying to compile it with ASIO, and when it's compiled it doesn't open and get stuck on the splash screen. Sometimes it asks for the ASIO driver but still gets stuck, and most of the other times I don't have the popup for ASIO selection. I tried to compile and recompile again and again and again, I don't know how to force this popup to be shown ! It's seem to be a random thing.

Hey guys, it still doesn't work with me. 🙄
I've tried to turn my Windows in English only, installed EN lang-packages for VS, etc.. Done everything's written on this README part, also tried to download ASIO SDK as in the video, etc..
Nothing seems to work at all, I still get stuck on the splash screen of Audacity. Tried on 2 computers. Same result. Even with the new 3.4.2 version.
How-the-hell did you all make it work ?!

Maybe.. Can anyone send me his compiled and working Audacity-ASIO version ? To see if it works fine with me ?

Copy link

ghost commented Nov 17, 2023

@SteveALee
"You can't really blame github -this is gist (lol)" - I am not blaming anything I just said that this will be the last time I try to build anything from Github, also I a am not just referencing this script page as I mentioned before I came here I was trying to build it on my own directly from github and that wasn't working thats why I ended up here.
I already said "The only things installed now are Git For Windows and Visual Studio" so no Cmake is not installed.

@SteveALee
Copy link
Author

@scerazy @Sky3RN @ghost I'm sorry you are all having problems. Sadly there is such a incredibly wide range of possible PC configs that some will just fail. I have tested on the few I have access to. This all takes time and I provide this as a voluntary service for the Audacity community.

If you do not want to run a VM as a hopefully clean working environment then can you try another PC? You can just copy the built files. What you can't do is give to other people under steinbergs licence conditions. Someone just mentioned success building with the windows Sandbox, a kind of simple built in VM.

If it build but does not run then I suggest talking to the project devs. FYI Audacity on my main PC takes ages to start, the splash dissappears but it does eventually start up.

I wish you luck.

@SteveALee
Copy link
Author

@scerazy @Sky3RN @ghost do make sure you grab the latest script and use the --cleanall. Also uninstall VS and python for the best chance of it working.

@Sky3RN
Copy link

Sky3RN commented Nov 17, 2023

If you do not want to run a VM as a hopefully clean working environment then can you try another PC? You can just copy the built files. What you can't do is give to other people under steinbergs licence conditions. Someone just mentioned success building with the windows Sandbox, a kind of simple built in VM.

My goal is to make it work on a real Windows machine, not a VM. I need it to work for a real time usage, and most of all, not for me but for all the people who are trying to record in 32 bits float as I mentioned before. But this is a struggle.. Argh.
I don't know what Sandbox is and if it's too hard to make it work it's not worth it. I mean, I'm a sound engineer making videos on YouTube to explain why people should buy a 32 bits float soundcard and it works fine with any DAW but not with Audacity, and noobs people who are watching my videos use Audacity. 😅 If it wasn't for them, I would have never used Audacity. I hate this Audashitty. 😃
In that way, people won't use VMs or Sandbox or something else. They need it to work on their own machine. They don't even know how to access an URL without using Google. 🙄

If it build but does not run then I suggest talking to the project devs. FYI Audacity on my main PC takes ages to start, the splash dissappears but it does eventually start up.

I already tried to tell them but they are closed-minded like « The problem doesn't come from Audacity » blah blah blah.

@scerazy @Sky3RN @ghost do make sure you grab the latest script and use the --cleanall. Also uninstall VS and python for the best chance of it working.

I already tried this a bunch of time !

@haberl333
Copy link

After compiling Audacity with ASIO successfully for nearly one year by using this great build-tool I got strange results in the last week: The build process (build-audacity.cmd version 2.2.6) is running in my VM (Win 10) successfully, but the started Audacity version 3.4.2 is missing the "Libraries" command in Edit->Preferences. Normally it is listed between Import/Export and Directories. Therefore I can't use ffmpeg in Audacity any more and can only open .aup3 projects, no audio import or export. Looking in Help->About Audacity->Build Information it says ffmpeg is enabled. I also tried to install FFmpeg for Windows in my virtual machine and rebuild it, but without success. This problem started with version 3.4.1. I would be greatful for any advice.

@SteveALee
Copy link
Author

SteveALee commented Nov 19, 2023

@haberl333 I have just been informed there is a change to the build process to build everything but the build docs were not updated. You're the second person to have ffmpeg problems. My basic smoke test passed though.

I'll look at this ASAP.

@haberl333
Copy link

Thanks for this quick answer. I just found a solution/workaround. Up till Version 3.4.0 alpha it was sufficient, to copy all files from release directory in my VM to any directory in my main machine, add subdir Portable Settings to get a new portable version (I cannot bring myself to delete old running versions). And that is the problem with the latest builds like you mentioned. To workaround this I installed an official Audacity without ASIO (exactly same version!) and then copied all the self builded files on it, and voila I found Libraries command again. Moreover I copied all the files of the official install directory in c:\program files\audacity... back to my personal local directory with Portable Settings subdir included and also this version now works well...

Nevertheless many thanks for your build-command file, and I hope you will find time for future updates .

BTW: I also had problems in the beginning with version 3.4.0. And I solved it, by cleaning my VM from my Visual Studio Community version included C# support.

@SteveALee
Copy link
Author

Hmm thanks. It was always possible to copy the built version files without officially making in any sort of portable app. Seems I need to dig. Progress hey!?

@SteveALee
Copy link
Author

SteveALee commented Nov 19, 2023

Yeah, I suggested removing provided VS in windows dev VM as is an unknown.

@SteveALee
Copy link
Author

Updated script to build all components including plugins for FFmpeg etc. Also creates the "Portable Settings" folder for preferences.

Thanks @haberl333 and Ed Witles for helping to identify and fix the issue.

@SteveALee
Copy link
Author

[Update] Version: 2.4.0 of script now installs Git for Windows. Also better at updating path on install.

@rhcaldwell
Copy link

Truly a labor of love, thanks for doing it. I’m going to give it a shot.

@SteveALee
Copy link
Author

@rhcaldwell definitely made with love and quite a bit of labour given windows cmd script! Lol. It usually just works. Good luck.

@GrumpyOldDrummer
Copy link

Hi Steve, I appreciate all the work you have done to generate the script. Thank You. You've more than earned my Kofi. Unfortunately I'm having some problems getting the script v 2.4.0 to work. I don't have the skills to fix it and I'm hoping you can give me some pointers please.
I'm running the script in Sandbox on a Win 11 laptop and aiming to build Audacity v 3.4.2 with ASIO. The first problem I hit was when it got to the build stage it halted on error "Python does not appear to be installed...". I had definitely ticked the 'Add python.exe to path' box and left the other installation options at the defaults. When I checked I found that python.exe, gw4.exe and vs.exe had all been installed in c:\projects\bin. So from an elevated cmd prompt I added that directory to the path and ran the script with "--build". It ran but produced over 100 warnings and over 330 errors and then reported 'unable to build Audacity. I repeated the process a few times to be sure I'd followed the instructions correctly but with the same results. I'd appreciate any pointers.

Then I tried to set the python install directory to C:\programs when the install window came up.. The installer still put it in C:\bin.

I'm guessing this is a Sandbox problem that the script can't fix and I need to try another VM?

Regards
Alan

@SteveALee
Copy link
Author

SteveALee commented Feb 15, 2024

@GrumpyOldDrummer (love the name) oh dear. I've not tried the sandbox for a while so will test again. The script might not need python to be on the path now - it uses relative paths - or it should. But you made a good call in trying to fix. I'll try on a really clean PC to check. Sorry for the problems.

@SteveALee
Copy link
Author

@GrumpyOldDrummer oh shoot I don't have windows pro around anymore as didn't need the extra features to justify extra cost. I have an old windows 10 PC I can try.

@SteveALee
Copy link
Author

@GrumpyOldDrummer OK I made small change to compensate for different Python installer behaviour in a Sandbox. Download the new script, uninstall Python and try a full install again (you can cancel the git and VS installs).

@GrumpyOldDrummer
Copy link

GrumpyOldDrummer commented Feb 15, 2024 via email

@GrumpyOldDrummer
Copy link

It worked! Thanks Steve. When I first ran it I got several hundred of out-of-memory errors. I understand the sandbox memory defaults to 4GB so I increased that arbitrarily to 10GB by creating a .wsb file and then it worked.

@SteveALee
Copy link
Author

@GrumpyOldDrummer yay!

It just worked on my clean install Windows 11 Pro. But very slow and terminal font changed for the worse half way through.

Out of interest what will you be using ASIO with?

@GrumpyOldDrummer
Copy link

@SteveALee
The build ran cleanly on my laptop after your tweaks and the memory allocation increase. I will be using it with a Behringer UMC202HD on my laptop and with a RME UFX+ on my studio setup. I just tested it with the RME and it works perfectly. I normally run Cubase there but I've been using Audacity macros to process some old band cassette recordings from the 1980's.
Thanks again Steve. Top Man!

@SteveALee
Copy link
Author

@GrumpyOldDrummer nice, Behringer kit seems a common use case. The Audacity multi channel experience needs some work but latency will be better than the ASIO 4 All hack that's often proposed.

@SteveALee
Copy link
Author

Now builds 3.4.2 by default

@GrumpyOldDrummer
Copy link

@SteveALee
You are right that multi-channel record needs some work. I spoke too soon about it working perfectly with the RME. I cannot find a way to display and record on selected channels only. i.e. If I want to record channels 11 and 12 only I have to select 12 inputs channels. It puts all 12 on the screen and records on 11 and 12. If I hide the unused channels it doesn't record on 11 and 12. Sigh... Playback is fine. All is fine with the 2 channel Behringer box.

@SteveALee
Copy link
Author

Yeah, it sucks big time. One day if I get more time!.... In my notes in the gist I mention a little app that will route channels. It might help.

@SteveALee
Copy link
Author

@SimbaNL did you install the c++ as instructed for visual studio? Otherwise see the debug section above

@SteveALee
Copy link
Author

SteveALee commented Feb 22, 2024

@GrumpyOldDrummer just discovered VB Audio Matrix which might provide a partial workaround for Audacity's lack of multitrack usability,:

https://youtu.be/xKUrmkPB4iw?si=umEPxxFw1arg7kUa

I think it will let me use both of my interfaces without lots of config changes.

@GrumpyOldDrummer
Copy link

GrumpyOldDrummer commented Feb 22, 2024 via email

@SteveALee
Copy link
Author

SteveALee commented Mar 13, 2024

Now also builds 3.5.0-beta with audio.com support
Switched to RelWithDebInfo config as per Audacity releases

@Rhiannon81
Copy link

Rhiannon81 commented Apr 5, 2024

Hi, thanks for the great script. I'd like to suggest a few fixes and improvements.

First of all, installing gettext and iconv is required to build Audacity if you want to use it in another language, otherwise the strings in the UI will have encoding issues, and for some reason this will cause Audacity to crash when trying to record.
Weird that the build doesn't fail or give any warnings, but still.

I downloaded it from here: https://github.com/vslavik/gettext-tools-windows
Just make sure the contents of /bin are somewhere in your %PATH%.

A bit of a tangent here: about using Visual Studio in English, I remember it was due to a dependency that read the console to determine if the build was successful. Except it used a regex on the human readable string instead of looking at the error code. So if it was not English, it considered the build to have failed. I don't remember what this dependency was, I just remember that - quite a while ago - after a long search I finally found a bug report from years ago by an Italian user that explained what I just said, and the answer from the developers was basically WONTFIX. If you know what this dependency was and if it is still present in Audacity, I suppose you could mention it in the docs.

I would also like to suggest adding the ability to build the master branch.

Add this after line 54:
if [%AUDACITY_REL%] == [master] set CMAKE_OPTS=%CMAKE_OPTS% -Daudacity_has_audiocom_upload=On -Daudacity_has_networking=On -Daudacity_has_url_schemes_support=On

And change the git clone command like this

if not [%AUDACITY_REL%] == [master] git clone -b Audacity-%AUDACITY_REL% --recurse-submodules https://github.com/audacity/audacity/ %AUDACITY%
if [%AUDACITY_REL%] == [master] git clone -b %AUDACITY_REL% --recurse-submodules https://github.com/audacity/audacity/ %AUDACITY%

And one last thing, add the ability to build the installer. This will add Inno Setup 6 to the list of required software to be installed before building.
I just build the installer by default without any further switches, you may want to do it differently.
These are the commands:

:build
cd %AUDACITY_BUILD%
set msbuild="%VSDIR%\MSBuild\Current\Bin\MsBuild.exe"
%msbuild% ALL_BUILD.vcxproj -p:configuration=%MAKE_CONFIG%
if ERRORLEVEL 1 echo Error: cannot build Audacity & goto exit
%msbuild% PACKAGE.vcxproj -p:configuration=%MAKE_CONFIG% -p:Platform="x64"
if ERRORLEVEL 1 echo Error: cannot build Audacity & goto exit
%msbuild% innosetup.vcxproj -p:configuration=%MAKE_CONFIG% -p:Platform="x64"
if ERRORLEVEL 1 echo Error: cannot build Audacity & goto exit

The installer will be in %AUDACITY_BUILD%\innosetup\Output

Thanks again for this script, you saved me a lot of time.

Edited to add: I added the whole C:\projects folder to the exclusion list in Windows Defender, otherwise the build would sometimes fail complaining that %AUDACITY_BUILD%\innosetup\audacity.iss was inaccessible because it was being used by another process.
Further edited for grammar and formatting.

@SteveALee
Copy link
Author

@ Rhiannon81 thank you so much for your compliments and great contributions. Here's some very guick comments - I'll think more deeply too

  • gettext and iconv - I agree it is very weird if these are an optional dependency. I must admit I didn't think about internationalisation at all in any way (shame on me) and assumed the build just took it all in to account. This just uses the developer build instructions and they make no mention of internationalisation, perhaps as devs are expected to use English (hmmm). I'll raise this with the devs at some point in case there are more issues than you noticed.

Any ideas how I would test to check adding those deps worked? Does it require a language version of WIndows or a Lang pack?

  • master branch - as this is designed for users and so release builds only that never occurred as something that would be useful. I guess devs can easily hack the script - I do often ;) What is your use case here? I might add anyway. The problem is when the build chain changes the script gets much more complex, not just checking out the right branch. I'd rather just ensure latest few releases are buildable to be honest

  • Installer - interesting idea and I can see some might find it useful or preferable due to familiarity. Especially if wanting to deploy to another device (or VM) or multiple devices (unlikely). Much as I love Inno (I used it many year ago for a Powerpoint TTS app ), for local use only just using or copying the files like a portable app is fairly straight forward. As is s creating a shortcut (just right click) and works as there are no install time registry setup requirements. I'll probably add this soon as it does not harm (other than more code to maintain - lol).

  • Defender problems - Will definitely add that as a suggestion as I think I just turned it off for \Projects anyway for speed many moon ago. I never saw that error you had. Now I tend to just use Sandbox - though is quite slow.

Thanks again for these great suggestions!

@Rhiannon81
Copy link

Hi again.

If I remember correctly, the requirement for gettext and iconv was introduced somewhere during the alpha/beta development of version 3.3.0, in September 2022 I think. One day, building from master branch just started showing the symptoms I explained, and it took me quite a long time to understand what was wrong.

As for how to test for this kind of problem, unfortunately I have no idea.

I am using Visual Studio in English (I uninstalled all other language packs) because of my experience with that old dependency, but my Windows is not in English.

I actually have no particuar reason to build from master branch, I'm doing it just because. But yeah, I understand that all the problems I just talked about are very good reasons not to add the ability to build from master in your script.

And for the installer, again, it's just the convenience of copying just one file and then clicking install-next-finish, since I'm building in a VM.

@SteveALee
Copy link
Author

@Rhiannon81 can you at least give an example of how to get bad text without the extra dependencies. It sounds like I might need a non EN WIndows SKU though :( Thanks

To build master you could just "git clone" yourself then use the --noget script option. A bit fiddly I know.

@Rhiannon81
Copy link