Include instructions for users to build a personal use portaudio DLL with ASIO support

This commit is contained in:
Bill Somerville 2021-06-27 18:29:38 +01:00
parent 37bbcbc7cf
commit 5a09ce3aed
No known key found for this signature in database
GPG Key ID: D864B06D1E81618F

View File

@ -0,0 +1,76 @@
Building the MS Windows portaudio DLL with ASIO Support
=======================================================
Some MAP65 users may not be able to use WDM/KS hosted audio devices
due to sharing issues with other applications, to circumvent this they
can build a version of the portaudio DLL with ASIO support. We cannot
provide a portaudio DLL with ASIO support as the Steinberg ASIO SDK
license prevents redistribution of drivers or hosting applications
without a commercial license agreement, nor is the Steinberg ASIO SDK
license compatible with the GPL v3 license that MAP65 is released
under. Users may build a portaudio DLL themselves, strictly for
personal use, under the terms of the Steinberg ASIO license.
Building portaudio on MS Windows is done most easily using the MinGW
(GNU) tool-chain which can be installed on MS Windows using the MSYS2
unix like environment which in turn includes a package manager
(pacman) that allows simple installation of necessary prerequisite
packages like the MinGW 64-bit tool-chain. To install MSYS2 download
the latest 64-bit installer from the MSYS2 project web site. This page
contains links to the installer download and detailed instructions to
install and bring up-to-date the base MSYS2 packages.
https://www.msys2.org/wiki/MSYS2-installation/
Take particular care to restart the MSYS2 shell window when directed
to.
Once MSYS2 is installed you will find a start menu entry labelled
"MSYS2 MinGW 64-bit", use that to start a fresh MSYS2 shell window for
the rest of these instructions.
The first step is to install some prerequisite packages which contain
the tools needed to prepare and build the portaudio DLL. Execute the
following command to do that:
pacman -S make diffutils unzip mingw-w64-x86_64-gcc sed tar curl
Then make directories to put downloaded sources in and for building:
mkdir -p ~/src ~/build/portaudio
Fetch and unpack the Steinberg ASIO SDK (note the ASIO SDK license
document included, particularly that it strictly disallows
redistribution of the DLL we will be building here), and portaudio
sources:
curl -Lo ~/src/asiosdk.zip https://www.steinberg.net/asiosdk
(cd ~/src ; unzip asiosdk.zip)
curl -O --output-dir ~/src \
http://files.portaudio.com/archives/pa_stable_v190700_20210406.tgz
tar -C ~/src -xf ~/src/pa_stable_v190700_20210406.tgz
Patch and build the portaudio library:
sed -i -e 's/-luuid//g' ~/src/portaudio/configure
cd ~/build/portaudio
~/src/portaudio/configure --with-winapi=wmme,directx,wdmks,asio \
--with-asiodir=$HOME/src/asiosdk_2.3.3_2019-06-14 \
--disable-static --enable-shared
make -j
You can check the library build is working by running a test program
that was also built:
bin/pa_devs
which should list every audio device on your system by every host API,
if all is well that should include the audio devices on your system
with ASIO drivers.
Copy the new portaudio DLL to your WSJT-X/MAP65 installation directory:
cp lib/.libs/libportaudio-2.dll /c/WSJT/wsjtx/bin/
Note that if you upgrade WSJT-X you will need to copy this DLL again
since it will be overwritten by one with no ASIO support.