summaryrefslogtreecommitdiff
path: root/portaudio/src/hostapi/asio/ASIO-README.txt
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2022-08-25 14:54:53 -0500
committersanine <sanine.not@pm.me>2022-08-25 14:54:53 -0500
commit37c97e345d12f95dde44e1d1a4c2f2aadd4615bc (patch)
treee1bb25bc855883062bdd7847ff2c04290f71c840 /portaudio/src/hostapi/asio/ASIO-README.txt
parent5634c7b04da619669f2f29f6798c03982be05180 (diff)
add initial structure
Diffstat (limited to 'portaudio/src/hostapi/asio/ASIO-README.txt')
-rw-r--r--portaudio/src/hostapi/asio/ASIO-README.txt147
1 files changed, 147 insertions, 0 deletions
diff --git a/portaudio/src/hostapi/asio/ASIO-README.txt b/portaudio/src/hostapi/asio/ASIO-README.txt
new file mode 100644
index 0000000..bc86caa
--- /dev/null
+++ b/portaudio/src/hostapi/asio/ASIO-README.txt
@@ -0,0 +1,147 @@
+ASIO-README.txt
+
+This document contains information to help you compile PortAudio with
+ASIO support. If you find any omissions or errors in this document
+please notify us on the PortAudio mailing list.
+
+NOTE: The Macintosh sections of this document are provided for historical
+reference. They refer to pre-OS X Macintosh. PortAudio no longer
+supports pre-OS X Macintosh. Steinberg does not support ASIO on Mac OS X.
+
+
+Building PortAudio with ASIO support
+------------------------------------
+
+To build PortAudio with ASIO support you need to compile and link with
+pa_asio.c, and files from the ASIO SDK (see below), along with the common
+PortAudio files from src/common/ and platform specific files from
+src/os/win/ (for Win32).
+
+If you are compiling with a non-Microsoft compiler on Windows, also
+compile and link with iasiothiscallresolver.cpp (see below for
+an explanation).
+
+For some platforms (MingW, Cygwin/MingW), you may simply
+be able to type:
+
+./configure --with-host_os=mingw --with-winapi=asio [--with-asiodir=/usr/local/asiosdk2]
+make
+
+and life will be good. Make sure you update the above with the correct local
+path to the ASIO SDK.
+
+
+For Microsoft Visual C++ there is an build tutorial here:
+http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC
+
+
+
+Obtaining the ASIO SDK
+----------------------
+
+In order to build PortAudio with ASIO support, you need to download
+the ASIO SDK (version 2.0 or later) from Steinberg. Steinberg makes the ASIO
+SDK available to anyone free of charge, however they do not permit its
+source code to be distributed.
+
+NOTE: In some cases the ASIO SDK may require patching, see below
+for further details.
+
+http://www.steinberg.net/en/company/developer.html
+
+If the above link is broken search Google for:
+"download steinberg ASIO SDK"
+
+
+
+Building the ASIO SDK on Windows
+--------------------------------
+
+To build the ASIO SDK on Windows you need to compile and link with the
+following files from the ASIO SDK:
+
+asio_sdk\common\asio.cpp
+asio_sdk\host\asiodrivers.cpp
+asio_sdk\host\pc\asiolist.cpp
+
+You may also need to adjust your include paths to support inclusion of
+header files from the above directories.
+
+The ASIO SDK depends on the following COM API functions:
+CoInitialize, CoUninitialize, CoCreateInstance, CLSIDFromString
+For compilation with MinGW you will need to link with -lole32, for
+Borland compilers link with Import32.lib.
+
+
+
+Non-Microsoft (MSVC) Compilers on Windows including Borland and GCC
+-------------------------------------------------------------------
+
+Steinberg did not specify a calling convention in the IASIO interface
+definition. This causes the Microsoft compiler to use the proprietary
+thiscall convention which is not compatible with other compilers, such
+as compilers from Borland (BCC and C++Builder) and GNU (gcc).
+Steinberg's ASIO SDK will compile but crash on initialization if
+compiled with a non-Microsoft compiler on Windows.
+
+PortAudio solves this problem using the iasiothiscallresolver library
+which is included in the distribution. When building ASIO support for
+non-Microsoft compilers, be sure to compile and link with
+iasiothiscallresolver.cpp. Note that iasiothiscallresolver includes
+conditional directives which cause it to have no effect if it is
+compiled with a Microsoft compiler, or on the Macintosh.
+
+If you use configure and make (see above), this should be handled
+automatically for you.
+
+For further information about the IASIO thiscall problem see this page:
+http://www.rossbencina.com/code/iasio-thiscall-resolver
+
+
+
+Building the ASIO SDK on (Pre-OS X) Macintosh
+---------------------------------------------
+
+To build the ASIO SDK on Macintosh you need to compile and link with the
+following files from the ASIO SDK:
+
+host/asiodrivers.cpp
+host/mac/asioshlib.cpp
+host/mac/codefragements.cpp
+
+You may also need to adjust your include paths to support inclusion of
+header files from the above directories.
+
+
+
+(Pre-OS X) Macintosh ASIO SDK Bug Patch
+---------------------------------------
+
+There is a bug in the ASIO SDK that causes the Macintosh version to
+often fail during initialization. Below is a patch that you can apply.
+
+In codefragments.cpp replace getFrontProcessDirectory function with
+the following one (GetFrontProcess replaced by GetCurrentProcess).
+
+
+bool CodeFragments::getFrontProcessDirectory(void *specs)
+{
+ FSSpec *fss = (FSSpec *)specs;
+ ProcessInfoRec pif;
+ ProcessSerialNumber psn;
+
+ memset(&psn,0,(long)sizeof(ProcessSerialNumber));
+ // if(GetFrontProcess(&psn) == noErr) // wrong !!!
+ if(GetCurrentProcess(&psn) == noErr) // correct !!!
+ {
+ pif.processName = 0;
+ pif.processAppSpec = fss;
+ pif.processInfoLength = sizeof(ProcessInfoRec);
+ if(GetProcessInformation(&psn, &pif) == noErr)
+ return true;
+ }
+ return false;
+}
+
+
+###