Spaces:
Runtime error
Runtime error
| 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; | |
| } | |
| ### | |