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
54#elif defined WASM_DSP_API
55 #include "IPlugWasmDSP.h"
56 #define PLUGIN_API_BASE IPlugWasmDSP
57#elif defined WASM_UI_API
58 #include "IPlugWasmUI.h"
59 #define PLUGIN_API_BASE IPlugWasmUI
63 #define PLUGIN_API_BASE IPlugVST3
64 #define API_EXT "vst3"
65#elif defined VST3C_API
68 #define PLUGIN_API_BASE IPlugVST3Controller
69 #undef PLUG_CLASS_NAME
70 #define PLUG_CLASS_NAME VST3Controller
71 #define API_EXT "vst3"
72#elif defined VST3P_API
75 #define PLUGIN_API_BASE IPlugVST3Processor
76 #define API_EXT "vst3"
79 #define PLUGIN_API_BASE IPlugCLAP
80 #define API_EXT "clap"
82 #error "No API defined!"
86using Plugin = PLUGIN_API_BASE;
90 #define EXPORT __declspec(dllexport)
92 #define APP_GROUP_ID ""
94 #define BUNDLE_ID BUNDLE_DOMAIN "." BUNDLE_MFR "." API_EXT "." 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")))
100 #define BUNDLE_ID BUNDLE_DOMAIN "." BUNDLE_MFR "." BUNDLE_NAME API_EXT2
101 #if !defined APP_GROUP_ID
102 #define APP_GROUP_ID "group." BUNDLE_DOMAIN "." BUNDLE_MFR "." BUNDLE_NAME
104 #define EXPORT __attribute__ ((visibility("default")))
105#elif defined OS_LINUX
109 #define APP_GROUP_ID ""
111 #error "No OS defined!"
114#if !defined NO_IGRAPHICS && !defined VST3P_API
118#define STRINGISE_IMPL(x) #x
119#define STRINGISE(x) STRINGISE_IMPL(x)
123# define FILE_LINE_LINK __FILE__ "(" STRINGISE(__LINE__) ") : "
124# define WARN(exp) (FILE_LINE_LINK "WARNING: " exp)
126# define WARN(exp) ("WARNING: " exp)
130 #error You need to define PLUG_NAME in config.h - The name of your plug-in, with no spaces
134 #error You need to define PLUG_MFR in config.h - The manufacturer name
138 #error You need to define PLUG_TYPE in config.h. 0 = Effect, 1 = Instrument, 2 = MIDI Effect
141#ifndef PLUG_VERSION_HEX
142 #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.
145#ifndef PLUG_UNIQUE_ID
146 #error You need to define PLUG_UNIQUE_ID in config.h - The unique four char ID for your plug-in, e.g. 'IPeF'
150 #error You need to define PLUG_MFR_ID in config.h - The unique four char ID for your manufacturer, e.g. 'Acme'
153#ifndef PLUG_CLASS_NAME
154 #error PLUG_CLASS_NAME not defined - this is the name of your main iPlug plug-in class (no spaces allowed)
158 #error BUNDLE_NAME not defined - this is the product name part of the plug-in's bundle ID (used on macOS and iOS)
162 #error BUNDLE_MFR not defined - this is the manufacturer name part of the plug-in's bundle ID (used on macOS and iOS)
166 #error BUNDLE_DOMAIN not defined - this is the domain name part of the plug-in's bundle ID (used on macOS and iOS)
169#ifndef PLUG_CHANNEL_IO
170 #error PLUG_CHANNEL_IO not defined - you need to specify the input and output configurations of the plug-in e.g. "2-2"
174 #define PLUG_LATENCY 0
177#ifndef PLUG_DOES_MIDI_IN
178 #pragma message WARN("PLUG_DOES_MIDI_IN not defined, setting to 0")
179 #define PLUG_DOES_MIDI_IN 0
182#ifndef PLUG_DOES_MIDI_OUT
183 #pragma message WARN("PLUG_DOES_MIDI_OUT not defined, setting to 0")
184 #define PLUG_DOES_MIDI_OUT 0
188 #pragma message WARN("PLUG_DOES_MPE not defined, setting to 0")
189 #define PLUG_DOES_MPE 0
192#ifndef PLUG_DOES_STATE_CHUNKS
193 #pragma message WARN("PLUG_DOES_STATE_CHUNKS not defined, setting to 0")
194 #define PLUG_DOES_STATE_CHUNKS 0
198 #pragma message WARN("PLUG_HAS_UI not defined, setting to 0")
199 #define PLUG_HAS_UI 0
203 #pragma message WARN("PLUG_WIDTH not defined, setting to 500px")
204 #define PLUG_WIDTH 500
208 #pragma message WARN("PLUG_HEIGHT not defined, setting to 500px")
209 #define PLUG_HEIGHT 500
212#ifndef PLUG_MIN_WIDTH
213 #define PLUG_MIN_WIDTH (PLUG_WIDTH / 3)
216#ifndef PLUG_MIN_HEIGHT
217 #define PLUG_MIN_HEIGHT (PLUG_HEIGHT / 3)
220#ifndef PLUG_MAX_WIDTH
221 #define PLUG_MAX_WIDTH (PLUG_WIDTH * 3)
224#ifndef PLUG_MAX_HEIGHT
225 #define PLUG_MAX_HEIGHT (PLUG_HEIGHT * 3)
229 #pragma message WARN("PLUG_FPS not defined, setting to 60")
233#ifndef PLUG_SHARED_RESOURCES
234 #pragma message WARN("PLUG_SHARED_RESOURCES not defined, setting to 0")
235 #define PLUG_SHARED_RESOURCES 0
237 #ifndef SHARED_RESOURCES_SUBPATH
238 #pragma message WARN("SHARED_RESOURCES_SUBPATH not defined, setting to PLUG_NAME")
239 #define SHARED_RESOURCES_SUBPATH PLUG_NAME
244 #ifndef PLUG_VERSION_STR
245 #error You need to define PLUG_VERSION_STR in config.h - A string to identify the version number
249 #pragma message WARN("PLUG_URL_STR not defined, setting to empty string")
250 #define PLUG_URL_STR ""
253 #ifndef PLUG_EMAIL_STR
254 #pragma message WARN("PLUG_EMAIL_STR not defined, setting to empty string")
255 #define PLUG_EMAIL_STR ""
258 #ifndef PLUG_COPYRIGHT_STR
259 #pragma message WARN("PLUG_COPYRIGHT_STR not defined, setting to empty string")
260 #define PLUG_COPYRIGHT_STR ""
263 #ifndef VST3_SUBCATEGORY
264 #pragma message WARN("VST3_SUBCATEGORY not defined, setting to other")
265 #define VST3_SUBCATEGORY "Other"
271 #error AUV2_ENTRY not defined - the name of the entry point for a component manager AUv2 plug-in, without quotes
273 #ifndef AUV2_ENTRY_STR
274 #error AUV2_ENTRY_STR not defined - the name of the entry point for a component manager AUv2 plug-in, with quotes
277 #error AUV2_FACTORY not defined - the name of the entry point for a AUPlugIn AUv2 plug-in, without quotes
280 #ifndef AUV2_VIEW_CLASS
281 #error AUV2_VIEW_CLASS not defined - the name of the Objective-C class for the AUv2 plug-in's view, without quotes
283 #ifndef AUV2_VIEW_CLASS_STR
284 #error AUV2_VIEW_CLASS_STR not defined - the name of the Objective-C class for the AUv2 plug-in's view, with quotes
291 #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'
294 #ifndef AAX_PLUG_MFR_STR
295 #error AAX_PLUG_MFR_STR not defined - The manufacturer name as it will appear in Pro tools preset manager
298 #ifndef AAX_PLUG_NAME_STR
299 #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"
302 #ifndef AAX_PLUG_CATEGORY_STR
303 #error AAX_PLUG_CATEGORY_STR not defined - String defining the category for your plug-in, e.g. "Effect"
306 #if AAX_DOES_AUDIOSUITE
307 #ifndef AAX_TYPE_IDS_AUDIOSUITE
308 #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...