Add TAL-Reverb-II plugin to test
[juce-lv2.git] / tal-reverb-2-juce / src / JucePluginCharacteristics.h
bloba685daa0b271f52035071dc0eb80268ede9254dc
1 /*
2 ==============================================================================
4 This file is part of the JUCE library - "Jules' Utility Class Extensions"
5 Copyright 2004-9 by Raw Material Software Ltd.
7 ------------------------------------------------------------------------------
9 JUCE can be redistributed and/or modified under the terms of the GNU General
10 Public License (Version 2), as published by the Free Software Foundation.
11 A copy of the license is included in the JUCE distribution, or can be found
12 online at www.gnu.org/licenses.
14 JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
15 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
16 A PARTICULAR PURPOSE. See the GNU General Public License for more details.
18 ------------------------------------------------------------------------------
20 To release a closed-source product which uses JUCE, commercial licenses are
21 available: visit www.rawmaterialsoftware.com/juce for more information.
23 ==============================================================================
26 #ifndef __JUCE_PLUGIN_CHARACTERISTICS_H__
27 #define __JUCE_PLUGIN_CHARACTERISTICS_H__
30 //==============================================================================
31 /* All of the following settings need to be defined for your plugin.
33 Go through each of these definitions and check that it's correctly
34 set-up before trying to do a build.
38 //==============================================================================
39 /* Plugin Formats to build */
41 #ifndef JucePlugin_Build_Standalone
42 #define JUCE_ObjCExtraSuffix tal_reverb2
43 #endif
45 // If your project is building a standalone app to run your plugin, you should
46 // set the JucePlugin_Build_Standalone flag in the project's settings..
47 #ifndef JucePlugin_Build_Standalone
48 #define JucePlugin_Build_Standalone 0
49 #endif
51 #if ! JucePlugin_Build_Standalone
53 // You should turn on these flags to enable the different types of plugin..
54 #ifndef JucePlugin_Build_VST
55 #define JucePlugin_Build_VST 1
56 #endif
58 #ifndef JucePlugin_Build_RTAS
59 #define JucePlugin_Build_RTAS 0
60 #endif
62 #ifndef JucePlugin_Build_AU
63 #define JucePlugin_Build_AU 1
64 #endif
65 #endif
67 //==============================================================================
68 /* Generic settings */
70 /** The name of your plugin. (Try to keep this as short as possible)
72 #define JucePlugin_Name "TAL Reverb II Plugin"
74 /** A longer decription of your plugin.
76 #define JucePlugin_Desc "TAL-Reverb-II"
78 /** The name of your company. (Try to keep this as short as possible)
80 #define JucePlugin_Manufacturer "TAL-Togu Audio Line"
82 /** A four-character code for your company.
83 Use single quotes - this isn't a string!
85 #define JucePlugin_ManufacturerCode 'TOGU'
87 /** A unique four-character code for your plugin.
88 Use single quotes - this isn't a string!
90 Note that for AU compatibility, this must contain at least one
91 upper-case letter.
93 #define JucePlugin_PluginCode '58h8'
95 //==============================================================================
96 /** The maximum number of channels of audio input that the plugin can handle.
98 The actual number of channels supplied may be less than this, depending on the host.
99 For VSTs, you specify a maximum number of channels, for AUs and RTAS a set
100 of channel configurations is specified in JucePlugin_PreferredChannelConfigurations
101 and the host will choose one of these, but you should still set the max number of
102 channels correctly.
104 As soon as a plugin's prepareToPlay() method is called, you can find out the actual
105 number of channels that will be used with the AudioProcessor::getNumInputChannels()
106 method.
108 #define JucePlugin_MaxNumInputChannels 2
110 /** The maximum number of channels of audio output that the plugin can handle.
112 The actual number of channels supplied may be less than this, depending on the host.
113 For VSTs, you specify a maximum number of channels, for AUs and RTAS a set
114 of channel configurations is specified in JucePlugin_PreferredChannelConfigurations
115 and the host will choose one of these, but you should still set the max number of
116 channels correctly.
118 As soon as a plugin's prepareToPlay() method is called, you can find out the actual
119 number of channels that will be used with the AudioProcessor::getNumOutputChannels()
120 method.
122 #define JucePlugin_MaxNumOutputChannels 2
124 /** This allows the plugin to specify the configurations of input/output channels that
125 they can support.
127 AU and RTAS hosts will use this information, although VSTs only have a concept of
128 a maximum number of channels.
130 The list is a set of pairs of values in the form { numInputs, numOutputs }, and each
131 pair indicates a valid configuration that the plugin can handle.
133 So for example, {1, 1}, {2, 2} means that the plugin can be used in just two
134 configurations: either with 1 input and 1 output, or with 2 inputs and 2 outputs. If
135 you used this in Pro-Tools, the plugin could be placed on a mono or stereo track.
136 If the list was just {1, 1}, then Pro-Tools would only allow it to be used as a mono
137 plugin.
139 As soon as a plugin's prepareToPlay() method is called, you can find out the actual
140 number of channels that the host has connected to the plugin by using the
141 AudioProcessor::getNumOutputChannels() and AudioFilterBase::getNumInputChannels()
142 methods.
144 #define JucePlugin_PreferredChannelConfigurations { 1, 1 }, { 2, 2 }
146 //==============================================================================
147 /** Set this value to 1 if your plugin is a synth, or 0 if it isn't.
149 #define JucePlugin_IsSynth 0
151 /** Set this to 1 if your plugin needs to receive midi messages, or 0 if
152 it doesn't.
154 #define JucePlugin_WantsMidiInput 1
156 /** Set this to 1 if your plugin wants to output midi messages, or 0 if
157 it doesn't.
159 #define JucePlugin_ProducesMidiOutput 0
161 /** If this is 1, it means that when the plugins input buffers are
162 silent, it's output will be too.
164 Some hosts may use this to avoid calling the plugin when no audio
165 would be produced.
167 #define JucePlugin_SilenceInProducesSilenceOut 0
169 /** If your plugin has a tail, you can set the length here and this information
170 will be passed on to the host.
171 (Not all formats/hosts might actually use this, though)
173 #define JucePlugin_TailLengthSeconds 0
175 /** If set to 1, this hints that the host should ignore any keys that are pressed
176 when the plugin has keyboard focus. If 0, then the host should still execute
177 any shortcut keys that are pressed, even if the plugin does have focus.
179 Various hosts/platforms may deal with this differently, or ignore it.
181 #define JucePlugin_EditorRequiresKeyboardFocus 1
184 //==============================================================================
185 /** A version number
187 #define JucePlugin_VersionCode 0x00010100
189 #define JucePlugin_VersionString "1.0"
192 //==============================================================================
193 /* VST settings */
195 /** For VSTs, if you're compiling against the V2.3 SDK, set this to zero. If
196 you're using V2.4 or later, make sure it's set to 1.
198 #define JUCE_USE_VSTSDK_2_4 1
200 /** Defines a UID for your VST plugin.
201 The default setting here is probably fine, unless you specifically need
202 a custom value. It's passed to the setUniqueID() method of the plugin class.
204 #define JucePlugin_VSTUniqueID JucePlugin_PluginCode
206 /** Defines the type of plugin. For most pursposes, you don't need to change this
207 setting.
209 #if JucePlugin_IsSynth
210 #define JucePlugin_VSTCategory kPlugCategSynth
211 #else
212 #define JucePlugin_VSTCategory kPlugCategEffect
213 #endif
215 //==============================================================================
216 /* AudioUnit settings */
218 /** Defines the major type of plugin - see AUComponent.h for the available options.
219 If it's an effect, you should use kAudioUnitType_Effect. For a synth, you'll
220 need to use kAudioUnitType_MusicEffect or kAudioUnitType_MusicDevice.
222 #if JucePlugin_IsSynth
223 #define JucePlugin_AUMainType kAudioUnitType_MusicDevice
224 #else
225 #define JucePlugin_AUMainType kAudioUnitType_MusicEffect
226 #endif
228 /** A 4-character plugin ID code that should be unique.
230 You can leave this using the generic value JucePlugin_PluginCode, or
231 override it if necessary.
233 Note that for AU, this must contain at least one upper-case letter.
235 #define JucePlugin_AUSubType JucePlugin_PluginCode
237 /** A prefix for the names of exported entry-point functions that the component exposes.
239 It's very important that your plugin's .exp file contains two entries that correspond to
240 this name. So for example if you set the prefix to "abc" then your exports
241 file must contain:
243 _abcEntry
244 _abcViewEntry
246 #define JucePlugin_AUExportPrefix TalReverb2AU
248 /** This is the same as JucePlugin_AUExportPrefix, but in quotes
249 (needed for the resource compiler...)
251 #define JucePlugin_AUExportPrefixQuoted "TalReverb2AU"
253 /** A 4-character manufacturer code - this is your company name.
254 You can leave this using the generic value JucePlugin_ManufacturerCode, or
255 override it if necessary.
257 #define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode
259 /** If you define this value to be the same as the CFBundleIdentifier in your
260 plugin's plist, it allows the plugin to work out its own path, which is
261 needed if you want to use File::getSpecialLocation (currentExecutableFile)
263 #define JucePlugin_CFBundleIdentifier "ch.toguaudioline.talreverb2"
265 /** In an AU, some hosts take the name of Cocoa class that creates the UI and
266 actually show it to the user in a list (why??)... Anyway, this macro lets you
267 provide a sensible name for that class to make it clear what plugin it refers to.
268 Obviously this has to be a valid obj-C class name.
270 Just to make things a little more complicated, this name must also be unique to this
271 precise version of your software. Otherwise, if the host loads two plugins that use the
272 same class name, the obj-C linker will almost certainly connect the wrong modules together
273 and cause total meltdown.
275 #define JucePlugin_AUCocoaViewClassName TalReverb2_v09
277 //==============================================================================
278 /* RTAS settings */
280 /** How to categorise this plugin.
282 For a synth you probably want to set this to ePlugInCategory_SWGenerators.
283 For an effect, you could choose one of:
284 ePlugInCategory_None, ePlugInCategory_EQ, ePlugInCategory_Dynamics,
285 ePlugInCategory_PitchShift, ePlugInCategory_Reverb, ePlugInCategory_Delay,
286 ePlugInCategory_Modulation, ePlugInCategory_Harmonic, ePlugInCategory_NoiseReduction,
287 ePlugInCategory_Dither, ePlugInCategory_SoundField
289 (All values are listed in FicPluginEnums.h)
291 #if JucePlugin_IsSynth
292 #define JucePlugin_RTASCategory ePlugInCategory_SWGenerators
293 #else
294 #define JucePlugin_RTASCategory ePlugInCategory_None
295 #endif
297 /** A 4-character manufacturer code - this is your company name.
298 You can leave this using the generic value JucePlugin_ManufacturerCode, or
299 override it if necessary.
301 #define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode
303 /** A 4-character plugin ID code that should be unique.
304 You can leave this using the generic value JucePlugin_PluginCode, or
305 override it if necessary.
307 #define JucePlugin_RTASProductId JucePlugin_PluginCode
309 /** You need to set this path to point to the location of the Digidesign WinBag
310 directory on your machine. (Only needed for Windows builds). Make sure you
311 don't put a slash on the end.
313 #define JucePlugin_WinBag_path "C:\\essentials\\PT_73_SDK\\WinBag"
316 //==============================================================================
318 #endif