/*
  ==============================================================================

   This file is part of the JUCE library - "Jules' Utility Class Extensions"
   Copyright 2004-7 by Raw Material Software ltd.

  ------------------------------------------------------------------------------

   JUCE can be redistributed and/or modified under the terms of the
   GNU General Public License, as published by the Free Software Foundation;
   either version 2 of the License, or (at your option) any later version.

   JUCE is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with JUCE; if not, visit www.gnu.org/licenses or write to the
   Free Software Foundation, Inc., 59 Temple Place, Suite 330,
   Boston, MA 02111-1307 USA

  ------------------------------------------------------------------------------

   If you'd like to release a closed-source product which uses JUCE, commercial
   licenses are also available: visit www.rawmaterialsoftware.com/juce for
   more information.

  ==============================================================================
*/

#ifndef __JUCE_PLUGIN_CHARACTERISTICS_H__
#define __JUCE_PLUGIN_CHARACTERISTICS_H__

//==============================================================================
/*  All of the following settings need to be defined for your plugin.

    Go through each of these definitions and check that it's correctly
    set-up before trying to do a build.
*/

//==============================================================================
/*                              Generic settings                              */

/** The name of your plugin. (Try to keep this as short as possible)
*/
#define JucePlugin_Name                     "dRowAudio Reverb"

/** A longer decription of your plugin.
*/
#define JucePlugin_Desc                     "A Reverb Plugin"

/** The name of your company. (Try to keep this as short as possible)
*/
#define JucePlugin_Manufacturer             "dRowAudio"

/** A four-character code for your company.
    Use single quotes - this isn't a string!
*/
#define JucePlugin_ManufacturerCode         'dRow'

/** A unique four-character code for your plugin.
    Use single quotes - this isn't a string!

    Note that for AU compatibility, this must contain at least one
    upper-case letter.
*/
#define JucePlugin_PluginCode               'Rvrb'								// needs changing

//==============================================================================
/** The maximum number of channels of audio input that the plugin can handle.

    The actual number of channels supplied may be less than this, depending on the host.
    For VSTs, you specify a maximum number of channels, for AUs and RTAS a set
    of channel configurations is specified in JucePlugin_PreferredChannelConfigurations
    and the host will choose one of these, but you should still set the max number of
    channels correctly.

    As soon as a plugin's prepareToPlay() method is called, you can find out the actual
    number of channels that will be used with the AudioProcessor::getNumInputChannels()
    method.
*/
#define JucePlugin_MaxNumInputChannels              2

/** The maximum number of channels of audio output that the plugin can handle.

    The actual number of channels supplied may be less than this, depending on the host.
    For VSTs, you specify a maximum number of channels, for AUs and RTAS a set
    of channel configurations is specified in JucePlugin_PreferredChannelConfigurations
    and the host will choose one of these, but you should still set the max number of
    channels correctly.

    As soon as a plugin's prepareToPlay() method is called, you can find out the actual
    number of channels that will be used with the AudioProcessor::getNumOutputChannels()
    method.
*/
#define JucePlugin_MaxNumOutputChannels             2

/** This allows the plugin to specify the configurations of input/output channels that
    they can support.

    AU and RTAS hosts will use this information, although VSTs only have a concept of
    a maximum number of channels.

    The list is a set of pairs of values in the form { numInputs, numOutputs }, and each
    pair indicates a valid configuration that the plugin can handle.

    So for example, {1, 1}, {2, 2} means that the plugin can be used in just two
    configurations: either with 1 input and 1 output, or with 2 inputs and 2 outputs. If
    you used this in Pro-Tools, the plugin could be placed on a mono or stereo track.
    If the list was just {1, 1}, then Pro-Tools would only allow it to be used as a mono
    plugin.

    As soon as a plugin's prepareToPlay() method is called, you can find out the actual
    number of channels that the host has connected to the plugin by using the
    AudioProcessor::getNumOutputChannels() and AudioFilterBase::getNumInputChannels()
    methods.
*/
#define JucePlugin_PreferredChannelConfigurations   { 2, 2 }

//==============================================================================
/** Set this value to 1 if your plugin is a synth, or 0 if it isn't.
*/
#define JucePlugin_IsSynth                          0

/** Set this to 1 if your plugin needs to receive midi messages, or 0 if
    it doesn't.
*/
#define JucePlugin_WantsMidiInput                   1

/** Set this to 1 if your plugin wants to output midi messages, or 0 if
    it doesn't.
*/
#define JucePlugin_ProducesMidiOutput               1

/** If this is 1, it means that when the plugins input buffers are
    silent, it's output will be too.

    Some hosts may use this to avoid calling the plugin when no audio
    would be produced.
*/
#define JucePlugin_SilenceInProducesSilenceOut      0

/** If set to 1, this hints that the host should ignore any keys that are pressed
    when the plugin has keyboard focus. If 0, then the host should still execute
    any shortcut keys that are pressed, even if the plugin does have focus.

    Various hosts/platforms may deal with this differently, or ignore it.
*/
#define JucePlugin_EditorRequiresKeyboardFocus      1


//==============================================================================
/** A version number
*/
#define JucePlugin_VersionCode              0x00010000

#define JucePlugin_VersionString            "1.0"


//==============================================================================
/*                                VST settings                                */

/** For VSTs, if you're compiling against the V2.3 SDK, set this to zero. If
    you're using V2.4 or later, make sure it's set to 1.
*/
#define JUCE_USE_VSTSDK_2_4                 1

/** Defines a UID for your VST plugin.
    The default setting here is probably fine, unless you specifically need
    a custom value. It's passed to the setUniqueID() method of the plugin class.
*/
#define JucePlugin_VSTUniqueID              JucePlugin_PluginCode

/** Defines the type of plugin. For most pursposes, you don't need to change this
    setting.
*/
#if JucePlugin_IsSynth
  #define JucePlugin_VSTCategory            kPlugCategSynth
#else
  #define JucePlugin_VSTCategory            kPlugCategEffect
#endif

//==============================================================================
/*                              AudioUnit settings                            */

/** Defines the major type of plugin - see AUComponent.h for the available options.
    If it's an effect, you should use kAudioUnitType_Effect. For a synth, you'll
    need to use kAudioUnitType_MusicEffect or kAudioUnitType_MusicDevice.
*/
#if JucePlugin_IsSynth
  #define JucePlugin_AUMainType             kAudioUnitType_MusicDevice
#else
  #define JucePlugin_AUMainType             kAudioUnitType_Effect
#endif

/** A 4-character plugin ID code that should be unique.

    You can leave this using the generic value JucePlugin_PluginCode, or
    override it if necessary.

    Note that for AU, this must contain at least one upper-case letter.
*/
#define JucePlugin_AUSubType                JucePlugin_PluginCode

/** A prefix for the names of exported entry-point functions that the component exposes.

    It's very important that your plugin's .exp file contains two entries that correspond to
    this name. So for example if you set the prefix to "abc" then your exports
    file must contain:

    _abcEntry
    _abcViewEntry
*/
#define JucePlugin_AUExportPrefix           dRowAudio_Reverb

/** This is the same as JucePlugin_AUExportPrefix, but in quotes
    (needed for the resource compiler...)
*/
#define JucePlugin_AUExportPrefixQuoted     "dRowAudio_Reverb"

/** A 4-character manufacturer code - this is your company name.
    You can leave this using the generic value JucePlugin_ManufacturerCode, or
    override it if necessary.
*/
#define JucePlugin_AUManufacturerCode       JucePlugin_ManufacturerCode

/** If you define this value to be the same as the CFBundleIdentifier in your
    plugin's plist, it allows the plugin to work out its own path, which is
    needed if you want to use File::getSpecialLocation (currentExecutableFile)
*/
#define JucePlugin_CFBundleIdentifier       "dRowAudio: Reverb"

/** In an AU, some hosts take the name of Cocoa class that creates the UI and
 actually show it to the user in a list (why??)... Anyway, this macro lets you
 provide a sensible name for that class to make it clear what plugin it refers to.
 Obviously this has to be a valid obj-C class name.

 Just to make things a little more complicated, this name must also be unique to this
 precise version of your software. Otherwise, if the host loads two plugins that use the
 same class name, the obj-C linker will almost certainly connect the wrong modules together
 and cause total meltdown.
 */
#define JucePlugin_AUCocoaViewClassName     dRowAudio_Reverb_V1
//==============================================================================
/*                                RTAS settings                               */

/** How to categorise this plugin.

    For a synth you probably want to set this to ePlugInCategory_SWGenerators.
    For an effect, you could choose one of:
      ePlugInCategory_None, ePlugInCategory_EQ, ePlugInCategory_Dynamics,
      ePlugInCategory_PitchShift, ePlugInCategory_Reverb, ePlugInCategory_Delay,
      ePlugInCategory_Modulation, ePlugInCategory_Harmonic, ePlugInCategory_NoiseReduction,
      ePlugInCategory_Dither, ePlugInCategory_SoundField

    (All values are listed in FicPluginEnums.h)
*/
#if JucePlugin_IsSynth
  #define JucePlugin_RTASCategory           ePlugInCategory_SWGenerators
#else
  #define JucePlugin_RTASCategory           ePlugInCategory_None
#endif

/** A 4-character manufacturer code - this is your company name.
    You can leave this using the generic value JucePlugin_ManufacturerCode, or
    override it if necessary.
*/
#define JucePlugin_RTASManufacturerCode     JucePlugin_ManufacturerCode

/** A 4-character plugin ID code that should be unique.
    You can leave this using the generic value JucePlugin_PluginCode, or
    override it if necessary.
*/
#define JucePlugin_RTASProductId            JucePlugin_PluginCode

/** You need to set this path to point to the location of the Digidesign WinBag
    directory on your machine. (Only needed for Windows builds). Make sure you
    don't put a slash on the end.
*/
#define JucePlugin_WinBag_path              "C:\\essentials\\PT_73_SDK\\WinBag"

#define JucePlugin_IsMidiEffect         0

#define JucePlugin_LV2URI               "http://www.drowaudio.co.uk/audio/audio_plugins/reverb"
#define JucePlugin_LV2Category          "ReverbPlugin"
#define JucePlugin_WantsLV2Latency      0
#define JucePlugin_WantsLV2Presets      0
#define JucePlugin_WantsLV2State        0
#define JucePlugin_WantsLV2TimePos      0


//==============================================================================

#endif
