Make duplicate script compatible with Python 3
[wdl/wdl-ol.git] / IPlugExamples / Examples.rtf
blobf8370dc2f418398c1b33c06098f6c93e179ac66f
1 {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
2 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier-BoldOblique;\f2\fmodern\fcharset0 Courier;
3 \f3\fmodern\fcharset0 Courier-Bold;}
4 {\colortbl;\red255\green255\blue255;\red0\green81\blue14;}
5 {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid1\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
6 {\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
7 {\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid201\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}
8 {\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid301\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid4}
9 {\list\listtemplateid5\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid401\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid5}
10 {\list\listtemplateid6\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid501\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid6}
11 {\list\listtemplateid7\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid601\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid7}
12 {\list\listtemplateid8\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid701\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid8}
13 {\list\listtemplateid9\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid801\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid9}}
14 {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}}
15 \paperw11900\paperh16840\vieww25380\viewh19600\viewkind0
16 \deftab720
17 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
19 \f0\b\fs38 \cf0 WDL-OL IPlug Examples Instructions
20 \fs24 \
21 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
23 \b0 \cf0 www.olilarkin.co.uk\
24 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
25 \ls1\ilvl0\cf0 \
26 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
27 \ls1\ilvl0
28 \b\fs28 \cf0 Introduction
29 \b0\fs24 \
30 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
31 \cf0 \
32 This folder contains example/template projects to demonstrate how to use different features of my modified IPlug and WDL. They also serve as a testbed to make sure that the various aspects are working. Each folder contains scripts which automate the build process and package everything along with a pdf manual in an installer. The scripts also code sign binaries/installers and set icons where required.\
34 Projects are provided for Visual Studio 2013 and Xcode 6. You cannot downgrade the VS2013 projects to work with older versions. There are also codeblocks projects for building VST2 plugins on windows but these are not maintained and will probably require some edits in order to compile. \
36 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
38 \b \cf0 Requirements:
39 \b0 \
41 Some of these are optional, but without them the build-scripts will need to be edited, otherwise you'll get errors.\
43 Windows\
45 \b \
46 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
47 \ls2\ilvl0
48 \b0 \cf0 {\listtext     \'95    }Msysgit {\field{\*\fldinst{HYPERLINK "http://code.google.com/p/msysgit/"}}{\fldrslt http://code.google.com/p/msysgit/}}
49 \b \
50 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
51 \ls3\ilvl0
52 \b0 \cf0 {\listtext     \'95    }VS2013 Express C++ & Windows SDK 7.1 or VS2013 Professional\
53 {\listtext      \'95    }Python 2.x {\field{\*\fldinst{HYPERLINK "http://www.python.org/"}}{\fldrslt http://www.python.org/}}\
54 {\listtext      \'95    }Innosetup {\field{\*\fldinst{HYPERLINK "http://www.jrsoftware.org/isinfo.php"}}{\fldrslt http://www.jrsoftware.org/isinfo.php}}\
55 {\listtext      \'95    }7zip {\field{\*\fldinst{HYPERLINK "http://www.7-zip.org/"}}{\fldrslt http://www.7-zip.org/}} (if you want to zip instead of make an installer)\
56 {\listtext      \'95    }Pace tools and certificate for code signing AAX binaries\
57 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
58 \cf0 \
59 Mac
60 \b \
62 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
63 \ls4\ilvl0
64 \b0 \cf0 {\listtext     \'95    }Git-osx {\field{\*\fldinst{HYPERLINK "http://code.google.com/p/git-osx-installer/"}}{\fldrslt http://code.google.com/p/git-osx-installer/}}
65 \b \
66 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
67 \ls5\ilvl0
68 \b0 \cf0 {\listtext     \'95    }Xcode 6.x installed, including command-line tools (may also work on xcode3/4/5 but not tested)\
69 {\listtext      \'95    }Coreaudio SDK (now called the \'93Core Audio Utility Classes\'94) {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/mac/samplecode/CoreAudioUtilityClasses/History/History.html#//apple_ref/doc/uid/DTS40012328-RevisionHistory-DontLinkElementID_1"}}{\fldrslt https://developer.apple.com/library/mac/samplecode/CoreAudioUtilityClasses/History/History.html#//apple_ref/doc/uid/DTS40012328-RevisionHistory-DontLinkElementID_1}}\
70 {\listtext      \'95    }If using Xcode6, you may want to install the MacOSX10.5.sdk or MacOSX10.6.sdk in \cf2 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/ {\field{\*\fldinst{HYPERLINK "https://github.com/phracker/MacOSX-SDKs"}}{\fldrslt \cf0 https://github.com/phracker/MacOSX-SDKs}}\cf0 \
71 {\listtext      \'95    }Packages for building OSX installers {\field{\*\fldinst{HYPERLINK "http://s.sudre.free.fr/Software/Packages/about.html"}}{\fldrslt http://s.sudre.free.fr/Software/Packages/about.html}}\
72 {\listtext      \'95    }setfileicon utility {\field{\*\fldinst{HYPERLINK "http://maxao.free.fr/telechargements/setfileicon.gz"}}{\fldrslt http://maxao.free.fr/telechargements/setfileicon.gz}}\
73 {\listtext      \'95    }Mac Developer ID Certificates for code signing installers for 10.8>\
74 {\listtext      \'95    }Mac 3rd Party App Dev Certificates for code signing binaries and installers for the Mac App Store\
75 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
76 \ls6\ilvl0\cf0 {\listtext       \'95    }Pace tools and certificate for code signing AAX binaries\
77 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
78 \cf0 \
79 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
80 \ls7\ilvl0
81 \b\fs28 \cf0 About the examples:\
82 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\pardirnatural
84 \fs24 \cf0 \
85 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
86 \ls8\ilvl0
87 \b0 \cf0 {\listtext     \'95    }IPlugChunks - shows how to use chunks in a plugin. Chunks allow you to store arbitrary data in the plugin's state as apposed to just a value for each parameter.\
88 {\listtext      \'95    }IPlugControls -  demos the various IControl classes (example by Captain Caveman)\
89 {\listtext      \'95    }IPlugConvoEngine - demos WDL_ConvolutionEngine() - Cockos' fast convolution engine (example by Tale)\
90 {\listtext      \'95    }IPlugDistortion - demos Tale's bessel filter implementation for realtime oversampling (example by Tale)\
91 {\listtext      \'95    }IPlugEEL - demonstrates using Cockos' EEL library for run-time expression evaluation \
92 {\listtext      \'95    }IPlugEffect - The most basic IPlug plugin, a gain control similar to AGain in the VST2 SDK, however it has a GUI\
93 {\listtext      \'95    }IPlugGUIResize - has three buttons to choose different gui sizes at runtime\
94 {\listtext      \'95    }IPlugHostDetect - displays the host name and version (not very reliable at the moment)\
95 {\listtext      \'95    }IPlugMonoSynth - a basic monophonic IPlug synth, showing how to handle MIDI messages sample accurately. Also shows how to use Tale's IKeyboardControl.\
96 {\listtext      \'95    }IPlugMouseTest - demonstrates an XY pad IControl which is linked to two plugin parameters\
97 {\listtext      \'95    }IPlugMultiChannel  - demos a multi-channel IPlug plugin, and how to test if channels are connected\
98 {\listtext      \'95    }IPlugMultiTargets - a midi effect plugin that also demos compilation to IOS, getting tempo info, and pop up menus\
99 {\listtext      \'95    }IPlugOpenGL - using OpenGL in IPlug\
100 {\listtext      \'95    }IPlugPlush -  shows how to use Cockos' Plush to do basic 3D Graphics\
101 {\listtext      \'95    }IPlugPolySynth - a basic polyphonic IPlug synth\
102 {\listtext      \'95    }IPlugResampler - demonstrates using WDL_Resampler\
103 {\listtext      \'95    }IPlugSideChain - a plugin that shows how to setup a sidechain input, for VST3, AU and RTAS\
104 {\listtext      \'95    }IPlugText - demos different ways to draw text\
105 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
106 \cf0 \
107 The IPlugEffect project is the main starting project I use. If you are not interested in AAX, RTAS etc, I suggest you duplicate this and manually remove those targets to give you a new clean starting template with just your preferred formats in it.\
109 Rather than changing settings for individual targets/projects inside the Xcode Project/Visual Studio solutions, most customisations can be done in the xcconfig and property sheets.\
111 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
113 \b \cf0 Xcode6
114 \b0 \
116 If you wish to use Xcode6 (RECOMMENDED) (Xcode3 won't fully work on 10.7+), you will need to change the COMPILER and BASE_SDK build settings in 
117 \b common.xcconfig
118 \b0 . Don't let Xcode "validate project settings", which can cause problems.\
120     
121 \i COMPILER = com.apple.compilers.llvm.clang.1_0\
122     BASE_SDK = macosx10.5  (or 10.6)
123 \i0 \
125 If you want to compile RTAS, it is also necessary to update the PluginLibrary Xcode projects to use these compilers and sdks. RTAS probably won't compile against the 10.7+ SDK\
127 Apple have changed the default location of the CoreAudio SDK on Xcode4+. Download CoreAudioUtilityClasses.zip {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/mac/samplecode/CoreAudioUtilityClasses/Introduction/Intro.html"}}{\fldrslt https://developer.apple.com/library/mac/samplecode/CoreAudioUtilityClasses/Introduction/Intro.html}} and extract to the CA_SDK folder. Set CA_SDK in common.xcconfig to match\
129 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720\pardirnatural
130 \ls9\ilvl0
131 \b\fs28 \cf0 About the supported formats:
132 \b0\fs24 \
133 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
134 \cf0 \
135 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
137 \b \cf0 VST2
138 \b0 \
140 You need to two files from the Steinberg VST2.4 SDK to the folder VST_SDK, see VST_SDK/readme.txt\
142 - On OSX by default I build to the system VST2 folder
143 \b  /Library/Audio/Plug-Ins/VST/
144 \b0  - You will need to have write permissions to this folder. If you want to build to the user VST2 folder, you'll need to edit the 
145 \b common.xcconfig
146 \b0  file and also modify the installer scripts\
149 \b VST3\
150 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
152 \b0 \cf0 \
153 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
154 \cf0 Extract the Steinberg VST3.6.0 SDK to the folder 
155 \b VST3_SDK
156 \b0  but get ready to revert two of the files using git... \
158 - WDL-OL has slightly customised xcode and VS2010 projects for the VST3 base library. Make sure you didn't overwrite them when you extracted the VST3 SDK or if you did just revert the changes in git.\
160     
161 \i VST3_SDK\\base\\mac\\base.xcodeproj/*
162 \i0 \
163          
164 \i VST3_SDK\\base\\win\\base_vc10.vcxproj\
166 \i0 \
167 - On windows, make sure you have a folder 
168 \b C:\\Program Files\\Common Files\\VST3
169 \i\b0 , 
170 \i0 otherwise the copy files build stage will cause the build to fail\
172 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
173 \cf0 - On OSX by default I build to the system VST3 folder 
174 \b /Library/Audio/Plug-Ins/VST3/
175 \b0  - You will need to have write permissions to this folder. If you want to build to the user VST3 folder, you'll need to edit the 
176 \b common.xcconfig
177 \b0  file and also modify the installer scripts\
178 \pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720\li720\fi-720
179 \cf0 \
181 \b RTAS
182 \b0 \
183 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
184 \cf0 \
185 - Sign up to be a registered avid plugin developer. Once you have access to it, Extract 
186 \b PT_90_PlugInSDK.zip
187 \b0  into the 
188 \b PT9_SDK
189 \b0  folder. Run 
190 \b config_SDK_for_Mac.command 
191 \b0 to develop on mac. \
193 - On windows, the debug builds of the RTAS plugin link against the release versions of the Digidesign PluginLib and define 
194 \b NDEBUG
195 \b0 . Without this the binaries won't be accepted by ProTools. The Digidesign examples have the same problem.\
197 - Don't be tempted to change any optimisation settings in the AVID/Digidesign 
198 \b PlugInLib.vcproj
199 \b0  . If you enable optimisation, the plugin will crash - this is how it is in the release builds of the PTSDK examples too.\
201 - On windows, make sure you have a folder 
202 \b C:\\Program Files\\Digidesign\\ProTools_3PDev\\dae\\Plug-Ins
203 \b0 , otherwise the copy files build stage will cause the build to fail. On a 64bit operating system, that should be 
204 \b C:\\Program Files (x86)\\Digidesign\\ProTools_3PDev\\dae\\Plug-Ins\
207 \b0 - On OSX you will probably need to update the AVID/Digidesign xcconfig files and modify the 
208 \b SDKROOT 
209 \b0 variable to macosx10.5, since it is set to 10.4u by default\
211 - On OSX, any C source code that you include (i.e. file extension is .c) can cause errors due to the RTAS precompiled header file getting compiled as C rather than C++. You can avoid this problem by renaming you .c file to .cpp or including it in a static library, or making a mycsourcecode.cpp file that has #include "mycsourcecode.c"\
213 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
215 \b \cf0 AAX\
217 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
219 \b0 \cf0 - Extract 
220 \b AAX_SDK_2p1p1.zip
221 \b0  to the 
222 \b AAX_SDK
223 \b0  folder\
225 - If you want to compile against the 10.5 SDK on OSX (see 
226 \b common.xcconfig
227 \b0 ) , you must change the 
228 \b SDKROOT
229 \b0  setting in 
230 \b AAX_Library.xcodeproj
231 \b0  to macosx10.5\
233 - Also modify 
234 \b ExamplePlugIns/Common/Mac/CommonDebugSettings.xcconfig
235 \b0  and 
236 \b ExamplePlugIns/Common/Mac/CommonReleaseSettings.xcconfig
237 \b0 ...\
239 GCC_VERSION = com.apple.compilers.gcc.4_2\
240 SDKROOT = macosx10.5\
241 MACOSX_DEPLOYMENT_TARGET = 10.5\
242 ARCHS = x86_64 i386\
244 - In order to compile AAX binaries that run in the release build of ProTools, you will need to code-sign those binaries (see Avid docs)\
246 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
248 \b \cf0 Audio Unit
249 \b0 \
251 - When building AUs, bear in mind that some hosts keep a cache... see debugging notes below.\
252 - there is a special shell script 
253 \b validate_audiounit.command
254 \b0  that will run the 
255 \b auvaltool
256 \b0  command line app with the correct IDs for your plugin (see below) and can also set up the leaks test, which is useful for debugging. Type 
257 \b man auval 
258 \b0  or see {\field{\*\fldinst{HYPERLINK "http://developer.apple.com/library/mac/#technotes/tn2204/_index.html"}}{\fldrslt here }}for info.\
259 - By default I build to the system audiounits folder 
260 \b /Library/Audio/Plug-Ins/Components/
261 \b0  - You will need to have write permissions to this folder. If you want to build to the user audiounits folder, you'll need to edit the .xcconfig file and also modify the installer scripts\
264 \b Standalone
265 \b0 \
267 - Audio and Midi is provided via RTAudio and RTMidi by Gary Scavone. To build on windows you need to extract some files into 
268 \b ASIO_SDK
269 \b0 , see 
270 \b ASIO_SDK/readme.txt
271 \b0 \
274 \b IOS
275 \b0 \
277 - Make sure you have Xcode 3.2.6 and iOS SDK 4.3 or Xcode 4.x and iOS SDK 4.3, from apple. In order to actually put an app on a device, you need to sign up and pay for an IOS developer membership.\
278 - NOTE: IPlug on IOS doesn't use IGraphics or IControl etc\'85 you have to implement a new GUI using apple's UIKit, an example is provided which illustrates how to communicate with the normal IPlug code. If you're project is for multiple targets, you need to 
279 \b #ifndef OS_ IOS
280 \b0  around any code that uses IPlug's graphics facilities.\
281 - Please note that IOS support is not heavily tested\
284 \b Windows Issues\
286 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
288 \b0 \cf0 The template projects use static linking with the MSVC2013 runtime libraries (/MT). If you change that you may need to provide the MSVC redistributable in your installer, google for "Microsoft Visual C++ 2013 Redistributable Package"\
290 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
292 \b \cf0 OSX Issues
293 \b0 \
295 For OSX 10.8 GateKeeper you will need to code-sign your installer and the .app with a valid signature obtained from Apple (maybe eventually also the plugin binaries). For the app store you need to add entitlements in order to comply with the sandbox regulations. These things are done by the makedist-* build scripts.\
297 If compiling against the 10.7 SDK or higher carbon GUIs will be inefficient due to unnecessary redraws\
299 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
301 \b\fs28 \cf0 Duplicating Projects\
302 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
304 \fs24 \cf0 \
305 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
307 \b0 \cf0 The IPlugExamples folder contains a python script to duplicate an IPlug project. This allows you to very quickly create a new project based on one of the examples. It does a multiple file find and replace to substitute the new name of the project for the old name, and also to change the manufacturer name. Once you have done this you only need to change two more things by hand in resource.h to make your plugin unique.\
309 You can duplicate a project as follows with the following commands in the OSX terminal or on the windows command prompt. In this example i will copy the IPlugEffect project to a new project called MyNewPlugin\'85\
311 - open terminal or cmd.exe and navigate to the IPlugExamples folder\
312 - type \
313 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
315 \f1\i\b \cf0    duplicate.py [inputprojectname] [outputprojectname] [manufacturername]\
316 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
318 \f0\i0\b0 \cf0 \
319 e.g\
320 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
322 \f2 \cf0        
323 \f1\i\b duplicate.py IPlugEffect MyNewPlugin OliLarkin\
324 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
326 \f0\i0\b0 \cf0 \
327 you might need to do 
328 \f1\i\b ./duplicate.py
329 \f0\i0\b0  on OSX\
331 - open  
332 \f3\b MyNewPlugin/resource.h
333 \f0\b0  and change 
334 \f3\b PLUG_UNIQUE_ID
335 \f0\b0  and 
336 \f3\b PLUG_MFR_ID
337 \f0\b0 \
340 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
342 \b\fs28 \cf0 Debugging Setups\
343 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardeftab720
345 \fs26 \cf0 \
347 \b0 .xcscheme files are set up to use some common hosts for debugging the various formats in Xcode.
348 \b \
350 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720
352 \b0\fs24 \cf0 To debug an Audiounit using auval, remember to change the auval executable arguments to match plugin's type and IDs: 
353 \b aufx/aumf/aumu PLUG_UNIQUE_ID PLUG_MFR_ID
354 \b0 \
356 AU hosts cache information about the plugin I/O channels etc, so I have added a build script that deletes the caches after a build. If this becomes annoying (it will cause Logic to rescan plugins) you can disable it.\
358 There is also a 
359 \b validate_audiounit.command
360 \b0  shell script which will is a helper that runs auval with your plugins' unique IDs, and optionally performs the leaks test.\
362 The windows debug setups use {\field{\*\fldinst{HYPERLINK "http://www.hermannseib.com/english/savihost.htm"}}{\fldrslt SAVIHost}} for VST2 debugging, and VST3PluginTestHost for VST3 debugging (in Steinberg VST3.5 SDK)\
364 You should install VSTHost to 
365 \b C:\\Program Files\\VSTHost\\vsthost.exe
366 \b0  (on x64 you should install the 64bit version here)\
368 To debug RTAS you need to install the PT Dev build. By default my debugging setup expects it to be installed in 
369 \b /Applications/Avid/ProTools_3PDev
370 \b0  on mac and 
371 \b %ProgramFiles%\\ Avid\\ProTools_3PDev
372 \b0  on windows\
376 \b\fs28 Installers & one-click build scripts\
378 \fs24 \
380 \b0 The example projects contain shell scripts for both Windows (
381 \b makedist-win.bat
382 \b0 ) and OSX (
383 \b makedist-mac.command
384 \b0 ) that build everything, code-sign (where relevant) and package the products in an installer including license, readme.txt, changelog.txt and manual. On Windows the installer program "Innosetup" is used, on OSX "Packages". A python script 
385 \b update_version.py
386 \b0  is called to look at 
387 \b resource.h
388 \b0  and get the version from the 
389 \b PLUG_VER #define
390 \b0 . It then updates the 
391 \b info.plist
392 \b0  files and installer scripts with the version number (in the format major.minor.bugfix). If you aren't building some components, e.g. RTAS, the build scripts may need to be modified. Please alter the license and readme text and remove my name from them if you release a plugin publicly. On OSX the script can also code-sign the standalone app and builds a .pkg for the appstore (commented out).
393 \b \
395 \b0 \