gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

ASIO-README.txt (4807B)


      1 ASIO-README.txt
      2 
      3 This document contains information to help you compile PortAudio with 
      4 ASIO support. If you find any omissions or errors in this document 
      5 please notify us on the PortAudio mailing list.
      6 
      7 NOTE: The Macintosh sections of this document are provided for historical
      8 reference. They refer to pre-OS X Macintosh. PortAudio no longer
      9 supports pre-OS X Macintosh. Steinberg does not support ASIO on Mac OS X.
     10 
     11 
     12 Building PortAudio with ASIO support
     13 ------------------------------------
     14 
     15 To build PortAudio with ASIO support you need to compile and link with
     16 pa_asio.c, and files from the ASIO SDK (see below), along with the common 
     17 PortAudio files from src/common/ and platform specific files from 
     18 src/os/win/ (for Win32).
     19 
     20 If you are compiling with a non-Microsoft compiler on Windows, also 
     21 compile and link with iasiothiscallresolver.cpp (see below for 
     22 an explanation).
     23 
     24 For some platforms (MingW, Cygwin/MingW), you may simply
     25 be able to type:
     26 
     27 ./configure --with-host_os=mingw --with-winapi=asio [--with-asiodir=/usr/local/asiosdk2]
     28 make
     29 
     30 and life will be good. Make sure you update the above with the correct local
     31 path to the ASIO SDK.
     32 
     33 
     34 For Microsoft Visual C++ there is an build tutorial here:
     35 http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC
     36 
     37 
     38 
     39 Obtaining the ASIO SDK
     40 ----------------------
     41 
     42 In order to build PortAudio with ASIO support, you need to download 
     43 the ASIO SDK (version 2.0 or later) from Steinberg. Steinberg makes the ASIO 
     44 SDK available to anyone free of charge, however they do not permit its 
     45 source code to be distributed.
     46 
     47 NOTE: In some cases the ASIO SDK may require patching, see below 
     48 for further details.
     49 
     50 http://www.steinberg.net/en/company/developer.html
     51 
     52 If the above link is broken search Google for:
     53 "download steinberg ASIO SDK"
     54 
     55 
     56 
     57 Building the ASIO SDK on Windows
     58 --------------------------------
     59 
     60 To build the ASIO SDK on Windows you need to compile and link with the 
     61 following files from the ASIO SDK:
     62 
     63 asio_sdk\common\asio.cpp
     64 asio_sdk\host\asiodrivers.cpp
     65 asio_sdk\host\pc\asiolist.cpp
     66 
     67 You may also need to adjust your include paths to support inclusion of 
     68 header files from the above directories.
     69 
     70 The ASIO SDK depends on the following COM API functions: 
     71 CoInitialize, CoUninitialize, CoCreateInstance, CLSIDFromString
     72 For compilation with MinGW you will need to link with -lole32, for
     73 Borland compilers link with Import32.lib.
     74 
     75 
     76 
     77 Non-Microsoft (MSVC) Compilers on Windows including Borland and GCC
     78 -------------------------------------------------------------------
     79 
     80 Steinberg did not specify a calling convention in the IASIO interface 
     81 definition. This causes the Microsoft compiler to use the proprietary 
     82 thiscall convention which is not compatible with other compilers, such 
     83 as compilers from Borland (BCC and C++Builder) and GNU (gcc). 
     84 Steinberg's ASIO SDK will compile but crash on initialization if 
     85 compiled with a non-Microsoft compiler on Windows.
     86 
     87 PortAudio solves this problem using the iasiothiscallresolver library 
     88 which is included in the distribution. When building ASIO support for
     89 non-Microsoft compilers, be sure to compile and link with
     90 iasiothiscallresolver.cpp. Note that iasiothiscallresolver includes
     91 conditional directives which cause it to have no effect if it is
     92 compiled with a Microsoft compiler, or on the Macintosh.
     93 
     94 If you use configure and make (see above), this should be handled
     95 automatically for you.
     96 
     97 For further information about the IASIO thiscall problem see this page:
     98 http://www.rossbencina.com/code/iasio-thiscall-resolver
     99 
    100 
    101 
    102 Building the ASIO SDK on (Pre-OS X) Macintosh
    103 ---------------------------------------------
    104 
    105 To build the ASIO SDK on Macintosh you need to compile and link with the 
    106 following files from the ASIO SDK:
    107 
    108 host/asiodrivers.cpp 
    109 host/mac/asioshlib.cpp 
    110 host/mac/codefragements.cpp
    111 
    112 You may also need to adjust your include paths to support inclusion of 
    113 header files from the above directories.
    114 
    115 
    116 
    117 (Pre-OS X) Macintosh ASIO SDK Bug Patch
    118 ---------------------------------------
    119 
    120 There is a bug in the ASIO SDK that causes the Macintosh version to 
    121 often fail during initialization. Below is a patch that you can apply.
    122 
    123 In codefragments.cpp replace getFrontProcessDirectory function with 
    124 the following one (GetFrontProcess replaced by GetCurrentProcess).
    125 
    126 
    127 bool CodeFragments::getFrontProcessDirectory(void *specs)
    128 {
    129 	FSSpec *fss = (FSSpec *)specs;
    130 	ProcessInfoRec pif;
    131 	ProcessSerialNumber psn;
    132 
    133 	memset(&psn,0,(long)sizeof(ProcessSerialNumber));
    134 	//  if(GetFrontProcess(&psn) == noErr)  // wrong !!!
    135 	if(GetCurrentProcess(&psn) == noErr)  // correct !!!
    136 	{
    137 		pif.processName = 0;
    138 		pif.processAppSpec = fss;
    139 		pif.processInfoLength = sizeof(ProcessInfoRec);
    140 		if(GetProcessInformation(&psn, &pif) == noErr)
    141 				return true;
    142 	}
    143 	return false;
    144 }
    145 
    146 
    147 ###