27 #define PLUGIN_API_BASE IPlugVST2
31 #define PLUGIN_API_BASE IPlugAU
32 #define API_EXT "audiounit"
35 #define PLUGIN_API_BASE IPlugAUv3
38 #define API_EXT2 ".AUv3"
41 #define PLUGIN_API_BASE IPlugAAX
46 #define PLUGIN_API_BASE IPlugAPP
50 #define PLUGIN_API_BASE IPlugWAM
53 #define PLUGIN_API_BASE IPlugWeb
57 #define PLUGIN_API_BASE IPlugVST3
58 #define API_EXT "vst3"
59#elif defined VST3C_API
62 #define PLUGIN_API_BASE IPlugVST3Controller
63 #undef PLUG_CLASS_NAME
64 #define PLUG_CLASS_NAME VST3Controller
65 #define API_EXT "vst3"
66#elif defined VST3P_API
69 #define PLUGIN_API_BASE IPlugVST3Processor
70 #define API_EXT "vst3"
73 #define PLUGIN_API_BASE IPlugCLAP
74 #define API_EXT "clap"
76 #error "No API defined!"
80using Plugin = PLUGIN_API_BASE;
84 #define EXPORT __declspec(dllexport)
86 #define APP_GROUP_ID ""
88 #define BUNDLE_ID BUNDLE_DOMAIN "." BUNDLE_MFR "." API_EXT "." BUNDLE_NAME API_EXT2
89 #if !defined APP_GROUP_ID
90 #define APP_GROUP_ID "group." BUNDLE_DOMAIN "." BUNDLE_MFR "." BUNDLE_NAME
92 #define EXPORT __attribute__ ((visibility("default")))
94 #define BUNDLE_ID BUNDLE_DOMAIN "." BUNDLE_MFR "." BUNDLE_NAME API_EXT2
95 #if !defined APP_GROUP_ID
96 #define APP_GROUP_ID "group." BUNDLE_DOMAIN "." BUNDLE_MFR "." BUNDLE_NAME
98 #define EXPORT __attribute__ ((visibility("default")))
103 #define APP_GROUP_ID ""
105 #error "No OS defined!"
108#if !defined NO_IGRAPHICS && !defined VST3P_API
112#define STRINGISE_IMPL(x) #x
113#define STRINGISE(x) STRINGISE_IMPL(x)
117# define FILE_LINE_LINK __FILE__ "(" STRINGISE(__LINE__) ") : "
118# define WARN(exp) (FILE_LINE_LINK "WARNING: " exp)
120# define WARN(exp) ("WARNING: " exp)
124 #error You need to define PLUG_NAME in config.h - The name of your plug-in, with no spaces
128 #error You need to define PLUG_MFR in config.h - The manufacturer name
132 #error You need to define PLUG_TYPE in config.h. 0 = Effect, 1 = Instrument, 2 = MIDI Effect
135#ifndef PLUG_VERSION_HEX
136 #error You need to define PLUG_VERSION_HEX in config.h - The hexadecimal version number in the form 0xVVVVRRMM: V = version, R = revision, M = minor revision.
139#ifndef PLUG_UNIQUE_ID
140 #error You need to define PLUG_UNIQUE_ID in config.h - The unique four char ID for your plug-in, e.g. 'IPeF'
144 #error You need to define PLUG_MFR_ID in config.h - The unique four char ID for your manufacturer, e.g. 'Acme'
147#ifndef PLUG_CLASS_NAME
148 #error PLUG_CLASS_NAME not defined - this is the name of your main iPlug plug-in class (no spaces allowed)
152 #error BUNDLE_NAME not defined - this is the product name part of the plug-in's bundle ID (used on macOS and iOS)
156 #error BUNDLE_MFR not defined - this is the manufacturer name part of the plug-in's bundle ID (used on macOS and iOS)
160 #error BUNDLE_DOMAIN not defined - this is the domain name part of the plug-in's bundle ID (used on macOS and iOS)
163#ifndef PLUG_CHANNEL_IO
164 #error PLUG_CHANNEL_IO not defined - you need to specify the input and output configurations of the plug-in e.g. "2-2"
168 #define PLUG_LATENCY 0
171#ifndef PLUG_DOES_MIDI_IN
172 #pragma message WARN("PLUG_DOES_MIDI_IN not defined, setting to 0")
173 #define PLUG_DOES_MIDI_IN 0
176#ifndef PLUG_DOES_MIDI_OUT
177 #pragma message WARN("PLUG_DOES_MIDI_OUT not defined, setting to 0")
178 #define PLUG_DOES_MIDI_OUT 0
182 #pragma message WARN("PLUG_DOES_MPE not defined, setting to 0")
183 #define PLUG_DOES_MPE 0
186#ifndef PLUG_DOES_STATE_CHUNKS
187 #pragma message WARN("PLUG_DOES_STATE_CHUNKS not defined, setting to 0")
188 #define PLUG_DOES_STATE_CHUNKS 0
192 #pragma message WARN("PLUG_HAS_UI not defined, setting to 0")
193 #define PLUG_HAS_UI 0
197 #pragma message WARN("PLUG_WIDTH not defined, setting to 500px")
198 #define PLUG_WIDTH 500
202 #pragma message WARN("PLUG_HEIGHT not defined, setting to 500px")
203 #define PLUG_HEIGHT 500
206#ifndef PLUG_MIN_WIDTH
207 #define PLUG_MIN_WIDTH (PLUG_WIDTH / 3)
210#ifndef PLUG_MIN_HEIGHT
211 #define PLUG_MIN_HEIGHT (PLUG_HEIGHT / 3)
214#ifndef PLUG_MAX_WIDTH
215 #define PLUG_MAX_WIDTH (PLUG_WIDTH * 3)
218#ifndef PLUG_MAX_HEIGHT
219 #define PLUG_MAX_HEIGHT (PLUG_HEIGHT * 3)
223 #pragma message WARN("PLUG_FPS not defined, setting to 60")
227#ifndef PLUG_SHARED_RESOURCES
228 #pragma message WARN("PLUG_SHARED_RESOURCES not defined, setting to 0")
229 #define PLUG_SHARED_RESOURCES 0
231 #ifndef SHARED_RESOURCES_SUBPATH
232 #pragma message WARN("SHARED_RESOURCES_SUBPATH not defined, setting to PLUG_NAME")
233 #define SHARED_RESOURCES_SUBPATH PLUG_NAME
238 #ifndef PLUG_VERSION_STR
239 #error You need to define PLUG_VERSION_STR in config.h - A string to identify the version number
243 #pragma message WARN("PLUG_URL_STR not defined, setting to empty string")
244 #define PLUG_URL_STR ""
247 #ifndef PLUG_EMAIL_STR
248 #pragma message WARN("PLUG_EMAIL_STR not defined, setting to empty string")
249 #define PLUG_EMAIL_STR ""
252 #ifndef PLUG_COPYRIGHT_STR
253 #pragma message WARN("PLUG_COPYRIGHT_STR not defined, setting to empty string")
254 #define PLUG_COPYRIGHT_STR ""
257 #ifndef VST3_SUBCATEGORY
258 #pragma message WARN("VST3_SUBCATEGORY not defined, setting to other")
259 #define VST3_SUBCATEGORY "Other"
265 #error AUV2_ENTRY not defined - the name of the entry point for a component manager AUv2 plug-in, without quotes
267 #ifndef AUV2_ENTRY_STR
268 #error AUV2_ENTRY_STR not defined - the name of the entry point for a component manager AUv2 plug-in, with quotes
271 #error AUV2_FACTORY not defined - the name of the entry point for a AUPlugIn AUv2 plug-in, without quotes
274 #ifndef AUV2_VIEW_CLASS
275 #error AUV2_VIEW_CLASS not defined - the name of the Objective-C class for the AUv2 plug-in's view, without quotes
277 #ifndef AUV2_VIEW_CLASS_STR
278 #error AUV2_VIEW_CLASS_STR not defined - the name of the Objective-C class for the AUv2 plug-in's view, with quotes
285 #error AAX_TYPE_IDS not defined - list of comma separated four char IDs, that correspond to the different possible channel layouts of your plug-in, e.g. 'EFN1', 'EFN2'
288 #ifndef AAX_PLUG_MFR_STR
289 #error AAX_PLUG_MFR_STR not defined - The manufacturer name as it will appear in Pro tools preset manager
292 #ifndef AAX_PLUG_NAME_STR
293 #error AAX_PLUG_NAME_STR not defined - The plug-in name string, which may include shorten names separated with newline characters, e.g. "IPlugEffect\nIPEF"
296 #ifndef AAX_PLUG_CATEGORY_STR
297 #error AAX_PLUG_CATEGORY_STR not defined - String defining the category for your plug-in, e.g. "Effect"
300 #if AAX_DOES_AUDIOSUITE
301 #ifndef AAX_TYPE_IDS_AUDIOSUITE
302 #error AAX_TYPE_IDS_AUDIOSUITE not defined - list of comma separated four char IDs, that correspond to the different possible channel layouts of your plug-in when running off-line in audio suite mode, e.g. 'EFA1', 'EFA2'
IGraphics header include Include this file in the main header if using IGraphics outside a plugin con...