summaryrefslogtreecommitdiff
path: root/vendor/vstsdk2.4/public.sdk
diff options
context:
space:
mode:
authorpepper <peppersclothescult@gmail.com>2015-01-10 21:37:24 -0800
committerpepper <peppersclothescult@gmail.com>2015-01-10 21:37:24 -0800
commit58f8437f4b8b741ddc8e7bcde21bf983cc618430 (patch)
treebfd0a9d601274fe56de15a4eaeb0998f9481419d /vendor/vstsdk2.4/public.sdk
parent36773a28ece1641a2d827a29869cdd4c38e87925 (diff)
added vstsdkHEADmaster
Diffstat (limited to 'vendor/vstsdk2.4/public.sdk')
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelay.cpp216
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelay.h93
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelaymain.cpp22
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmpbin0 -> 116154 bytes
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmpbin0 -> 2634 bytes
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmpbin0 -> 294 bytes
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/surrounddelay.rc10
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/sdeditor.cpp235
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/sdeditor.h51
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/surrounddelay.cpp172
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/surrounddelay.h54
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/win/adelay.vcproj400
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/win/surrounddelay.vcproj444
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/source/again.cpp139
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/source/again.h50
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/win/again.vcproj396
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/mac/minihost-Info.plist20
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/mac/vst2.4Info.plist28
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/source/minieditor.cpp203
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/source/minihost.cpp333
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/win/minihost.vcproj364
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.rc3
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.vstxml36
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/gmnames.h222
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.cpp392
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.h139
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynthproc.cpp178
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/win/vstxsynth.vcproj448
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj286
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/again.vcproj266
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/minihost.vcproj200
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/surrounddelay.vcproj412
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/vstxsynth.vcproj309
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/adelay.dsp155
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/again.dsp151
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/minihost.dsp114
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/samples.dsw89
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/surrounddelay.dsp199
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp167
-rw-r--r--vendor/vstsdk2.4/public.sdk/samples/vst2.x/win/vstplug.def3
-rw-r--r--vendor/vstsdk2.4/public.sdk/source/vst2.x/aeffeditor.h61
-rw-r--r--vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp703
-rw-r--r--vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h177
-rw-r--r--vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp1546
-rw-r--r--vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h252
-rw-r--r--vendor/vstsdk2.4/public.sdk/source/vst2.x/vstplugmain.cpp68
46 files changed, 9806 insertions, 0 deletions
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelay.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelay.cpp
new file mode 100644
index 0000000..3e16bad
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelay.cpp
@@ -0,0 +1,216 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : adelay.cpp
+// Created by : Steinberg Media Technologies
+// Description : Simple Delay plugin (Mono->Stereo)
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include <stdio.h>
+#include <string.h>
+
+#ifndef __adelay__
+#include "adelay.h"
+#endif
+
+//-----------------------------------------------------------------------------
+ADelayProgram::ADelayProgram ()
+{
+ // default Program Values
+ fDelay = 0.5;
+ fFeedBack = 0.5;
+ fOut = 0.75;
+
+ strcpy (name, "Init");
+}
+
+//-----------------------------------------------------------------------------
+ADelay::ADelay (audioMasterCallback audioMaster)
+ : AudioEffectX (audioMaster, kNumPrograms, kNumParams)
+{
+ // init
+ size = 44100;
+ cursor = 0;
+ delay = 0;
+ buffer = new float[size];
+
+ programs = new ADelayProgram[numPrograms];
+ fDelay = fFeedBack = fOut = 0;
+
+ if (programs)
+ setProgram (0);
+
+ setNumInputs (1); // mono input
+ setNumOutputs (2); // stereo output
+
+ setUniqueID ('ADly'); // this should be unique, use the Steinberg web page for plugin Id registration
+
+ resume (); // flush buffer
+}
+
+//------------------------------------------------------------------------
+ADelay::~ADelay ()
+{
+ if (buffer)
+ delete[] buffer;
+ if (programs)
+ delete[] programs;
+}
+
+//------------------------------------------------------------------------
+void ADelay::setProgram (VstInt32 program)
+{
+ ADelayProgram* ap = &programs[program];
+
+ curProgram = program;
+ setParameter (kDelay, ap->fDelay);
+ setParameter (kFeedBack, ap->fFeedBack);
+ setParameter (kOut, ap->fOut);
+}
+
+//------------------------------------------------------------------------
+void ADelay::setDelay (float fdelay)
+{
+ fDelay = fdelay;
+ programs[curProgram].fDelay = fdelay;
+ cursor = 0;
+ delay = (long)(fdelay * (float)(size - 1));
+}
+
+//------------------------------------------------------------------------
+void ADelay::setProgramName (char *name)
+{
+ strcpy (programs[curProgram].name, name);
+}
+
+//------------------------------------------------------------------------
+void ADelay::getProgramName (char *name)
+{
+ if (!strcmp (programs[curProgram].name, "Init"))
+ sprintf (name, "%s %d", programs[curProgram].name, curProgram + 1);
+ else
+ strcpy (name, programs[curProgram].name);
+}
+
+//-----------------------------------------------------------------------------------------
+bool ADelay::getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text)
+{
+ if (index < kNumPrograms)
+ {
+ strcpy (text, programs[index].name);
+ return true;
+ }
+ return false;
+}
+
+//------------------------------------------------------------------------
+void ADelay::resume ()
+{
+ memset (buffer, 0, size * sizeof (float));
+ AudioEffectX::resume ();
+}
+
+//------------------------------------------------------------------------
+void ADelay::setParameter (VstInt32 index, float value)
+{
+ ADelayProgram* ap = &programs[curProgram];
+
+ switch (index)
+ {
+ case kDelay : setDelay (value); break;
+ case kFeedBack : fFeedBack = ap->fFeedBack = value; break;
+ case kOut : fOut = ap->fOut = value; break;
+ }
+}
+
+//------------------------------------------------------------------------
+float ADelay::getParameter (VstInt32 index)
+{
+ float v = 0;
+
+ switch (index)
+ {
+ case kDelay : v = fDelay; break;
+ case kFeedBack : v = fFeedBack; break;
+ case kOut : v = fOut; break;
+ }
+ return v;
+}
+
+//------------------------------------------------------------------------
+void ADelay::getParameterName (VstInt32 index, char *label)
+{
+ switch (index)
+ {
+ case kDelay : strcpy (label, "Delay"); break;
+ case kFeedBack : strcpy (label, "FeedBack"); break;
+ case kOut : strcpy (label, "Volume"); break;
+ }
+}
+
+//------------------------------------------------------------------------
+void ADelay::getParameterDisplay (VstInt32 index, char *text)
+{
+ switch (index)
+ {
+ case kDelay : int2string (delay, text, kVstMaxParamStrLen); break;
+ case kFeedBack : float2string (fFeedBack, text, kVstMaxParamStrLen); break;
+ case kOut : dB2string (fOut, text, kVstMaxParamStrLen); break;
+ }
+}
+
+//------------------------------------------------------------------------
+void ADelay::getParameterLabel (VstInt32 index, char *label)
+{
+ switch (index)
+ {
+ case kDelay : strcpy (label, "samples"); break;
+ case kFeedBack : strcpy (label, "amount"); break;
+ case kOut : strcpy (label, "dB"); break;
+ }
+}
+
+//------------------------------------------------------------------------
+bool ADelay::getEffectName (char* name)
+{
+ strcpy (name, "Delay");
+ return true;
+}
+
+//------------------------------------------------------------------------
+bool ADelay::getProductString (char* text)
+{
+ strcpy (text, "Delay");
+ return true;
+}
+
+//------------------------------------------------------------------------
+bool ADelay::getVendorString (char* text)
+{
+ strcpy (text, "Steinberg Media Technologies");
+ return true;
+}
+
+//---------------------------------------------------------------------------
+void ADelay::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames)
+{
+ float* in = inputs[0];
+ float* out1 = outputs[0];
+ float* out2 = outputs[1];
+
+ while (--sampleFrames >= 0)
+ {
+ float x = *in++;
+ float y = buffer[cursor];
+ buffer[cursor++] = x + y * fFeedBack;
+ if (cursor >= delay)
+ cursor = 0;
+ *out1++ = y;
+ if (out2)
+ *out2++ = y;
+ }
+}
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelay.h b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelay.h
new file mode 100644
index 0000000..1b21c96
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelay.h
@@ -0,0 +1,93 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : adelay.h
+// Created by : Steinberg Media Technologies
+// Description : Simple Delay plugin (Mono->Stereo)
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __adelay__
+#define __adelay__
+
+#include "public.sdk/source/vst2.x/audioeffectx.h"
+
+enum
+{
+ // Global
+ kNumPrograms = 16,
+
+ // Parameters Tags
+ kDelay = 0,
+ kFeedBack,
+ kOut,
+
+ kNumParams
+};
+
+class ADelay;
+
+//------------------------------------------------------------------------
+class ADelayProgram
+{
+friend class ADelay;
+public:
+ ADelayProgram ();
+ ~ADelayProgram () {}
+
+private:
+ float fDelay;
+ float fFeedBack;
+ float fOut;
+ char name[24];
+};
+
+//------------------------------------------------------------------------
+class ADelay : public AudioEffectX
+{
+public:
+ ADelay (audioMasterCallback audioMaster);
+ ~ADelay ();
+
+ //---from AudioEffect-----------------------
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
+
+ virtual void setProgram (VstInt32 program);
+ virtual void setProgramName (char* name);
+ virtual void getProgramName (char* name);
+ virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text);
+
+ virtual void setParameter (VstInt32 index, float value);
+ virtual float getParameter (VstInt32 index);
+ virtual void getParameterLabel (VstInt32 index, char* label);
+ virtual void getParameterDisplay (VstInt32 index, char* text);
+ virtual void getParameterName (VstInt32 index, char* text);
+
+ virtual void resume ();
+
+ virtual bool getEffectName (char* name);
+ virtual bool getVendorString (char* text);
+ virtual bool getProductString (char* text);
+ virtual VstInt32 getVendorVersion () { return 1000; }
+
+ virtual VstPlugCategory getPlugCategory () { return kPlugCategEffect; }
+
+protected:
+ void setDelay (float delay);
+
+ ADelayProgram* programs;
+
+ float* buffer;
+ float fDelay;
+ float fFeedBack;
+ float fOut;
+
+ long delay;
+ long size;
+ long cursor;
+};
+
+#endif
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelaymain.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelaymain.cpp
new file mode 100644
index 0000000..ea9895e
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/adelaymain.cpp
@@ -0,0 +1,22 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : adelaymain.cpp
+// Created by : Steinberg Media Technologies
+// Description : Simple Delay plugin (Mono->Stereo)
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __adelay__
+#include "adelay.h"
+#endif
+
+//-------------------------------------------------------------------------------------------------------
+AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
+{
+ return new ADelay (audioMaster);
+}
+
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmp
new file mode 100644
index 0000000..1e3b523
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmp
Binary files differ
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmp
new file mode 100644
index 0000000..275e4aa
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmp
Binary files differ
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmp
new file mode 100644
index 0000000..e272640
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmp
Binary files differ
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/surrounddelay.rc b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/surrounddelay.rc
new file mode 100644
index 0000000..52ef47d
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/surrounddelay.rc
@@ -0,0 +1,10 @@
+#define APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+128 BITMAP DISCARDABLE "bmp00128.bmp"
+129 BITMAP DISCARDABLE "bmp00129.bmp"
+130 BITMAP DISCARDABLE "bmp00130.bmp"
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/sdeditor.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/sdeditor.cpp
new file mode 100644
index 0000000..ac5ebfc
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/sdeditor.cpp
@@ -0,0 +1,235 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:28 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : sdeditor.cpp
+// Created by : Steinberg Media Technologies
+// Description : Simple Surround Delay plugin with Editor using VSTGUI
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __sdeditor__
+#include "sdeditor.h"
+#endif
+
+#ifndef __adelay__
+#include "../adelay.h"
+#endif
+
+#include <stdio.h>
+
+//-----------------------------------------------------------------------------
+// resource id's
+enum {
+ // bitmaps
+ kBackgroundId = 128,
+ kFaderBodyId,
+ kFaderHandleId,
+
+ // positions
+ kFaderX = 18,
+ kFaderY = 10,
+
+ kFaderInc = 18,
+
+ kDisplayX = 10,
+ kDisplayY = 184,
+ kDisplayXWidth = 30,
+ kDisplayHeight = 14
+};
+
+//-----------------------------------------------------------------------------
+// prototype string convert float -> percent
+void percentStringConvert (float value, char* string);
+void percentStringConvert (float value, char* string)
+{
+ sprintf (string, "%d%%", (int)(100 * value + 0.5f));
+}
+
+
+//-----------------------------------------------------------------------------
+// SDEditor class implementation
+//-----------------------------------------------------------------------------
+SDEditor::SDEditor (AudioEffect *effect)
+ : AEffGUIEditor (effect)
+{
+ delayFader = 0;
+ feedbackFader = 0;
+ volumeFader = 0;
+ delayDisplay = 0;
+ feedbackDisplay = 0;
+ volumeDisplay = 0;
+
+ // load the background bitmap
+ // we don't need to load all bitmaps, this could be done when open is called
+ hBackground = new CBitmap (kBackgroundId);
+
+ // init the size of the plugin
+ rect.left = 0;
+ rect.top = 0;
+ rect.right = (short)hBackground->getWidth ();
+ rect.bottom = (short)hBackground->getHeight ();
+}
+
+//-----------------------------------------------------------------------------
+SDEditor::~SDEditor ()
+{
+ // free the background bitmap
+ if (hBackground)
+ hBackground->forget ();
+ hBackground = 0;
+}
+
+//-----------------------------------------------------------------------------
+bool SDEditor::open (void *ptr)
+{
+ // !!! always call this !!!
+ AEffGUIEditor::open (ptr);
+
+ //--load some bitmaps
+ CBitmap* hFaderBody = new CBitmap (kFaderBodyId);
+ CBitmap* hFaderHandle = new CBitmap (kFaderHandleId);
+
+ //--init background frame-----------------------------------------------
+ // We use a local CFrame object so that calls to setParameter won't call into objects which may not exist yet.
+ // If all GUI objects are created we assign our class member to this one. See bottom of this method.
+ CRect size (0, 0, hBackground->getWidth (), hBackground->getHeight ());
+ CFrame* lFrame = new CFrame (size, ptr, this);
+ lFrame->setBackground (hBackground);
+
+ //--init the faders------------------------------------------------
+ int minPos = kFaderY;
+ int maxPos = kFaderY + hFaderBody->getHeight () - hFaderHandle->getHeight () - 1;
+ CPoint point (0, 0);
+ CPoint offset (1, 0);
+
+ // Delay
+ size (kFaderX, kFaderY,
+ kFaderX + hFaderBody->getWidth (), kFaderY + hFaderBody->getHeight ());
+ delayFader = new CVerticalSlider (size, this, kDelay, minPos, maxPos, hFaderHandle, hFaderBody, point);
+ delayFader->setOffsetHandle (offset);
+ delayFader->setValue (effect->getParameter (kDelay));
+ lFrame->addView (delayFader);
+
+ // FeedBack
+ size.offset (kFaderInc + hFaderBody->getWidth (), 0);
+ feedbackFader = new CVerticalSlider (size, this, kFeedBack, minPos, maxPos, hFaderHandle, hFaderBody, point);
+ feedbackFader->setOffsetHandle (offset);
+ feedbackFader->setValue (effect->getParameter (kFeedBack));
+ lFrame->addView (feedbackFader);
+
+ // Volume
+ size.offset (kFaderInc + hFaderBody->getWidth (), 0);
+ volumeFader = new CVerticalSlider (size, this, kOut, minPos, maxPos, hFaderHandle, hFaderBody, point);
+ volumeFader->setOffsetHandle (offset);
+ volumeFader->setValue (effect->getParameter (kOut));
+ volumeFader->setDefaultValue (0.75f);
+ lFrame->addView (volumeFader);
+
+ //--init the display------------------------------------------------
+ // Delay
+ size (kDisplayX, kDisplayY,
+ kDisplayX + kDisplayXWidth, kDisplayY + kDisplayHeight);
+ delayDisplay = new CParamDisplay (size, 0, kCenterText);
+ delayDisplay->setFont (kNormalFontSmall);
+ delayDisplay->setFontColor (kWhiteCColor);
+ delayDisplay->setBackColor (kBlackCColor);
+ delayDisplay->setFrameColor (kBlueCColor);
+ delayDisplay->setValue (effect->getParameter (kDelay));
+ lFrame->addView (delayDisplay);
+
+ // FeedBack
+ size.offset (kFaderInc + hFaderBody->getWidth (), 0);
+ feedbackDisplay = new CParamDisplay (size, 0, kCenterText);
+ feedbackDisplay->setFont (kNormalFontSmall);
+ feedbackDisplay->setFontColor (kWhiteCColor);
+ feedbackDisplay->setBackColor (kBlackCColor);
+ feedbackDisplay->setFrameColor (kBlueCColor);
+ feedbackDisplay->setValue (effect->getParameter (kFeedBack));
+ feedbackDisplay->setStringConvert (percentStringConvert);
+ lFrame->addView (feedbackDisplay);
+
+ // Volume
+ size.offset (kFaderInc + hFaderBody->getWidth (), 0);
+ volumeDisplay = new CParamDisplay (size, 0, kCenterText);
+ volumeDisplay->setFont (kNormalFontSmall);
+ volumeDisplay->setFontColor (kWhiteCColor);
+ volumeDisplay->setBackColor (kBlackCColor);
+ volumeDisplay->setFrameColor (kBlueCColor);
+ volumeDisplay->setValue (effect->getParameter (kOut));
+ volumeDisplay->setStringConvert (percentStringConvert);
+ lFrame->addView (volumeDisplay);
+
+
+ // Note : in the constructor of a CBitmap, the number of references is set to 1.
+ // Then, each time the bitmap is used (for hinstance in a vertical slider), this
+ // number is incremented.
+ // As a consequence, everything happens as if the constructor by itself was adding
+ // a reference. That's why we need til here a call to forget ().
+ // You mustn't call delete here directly, because the bitmap is used by some CControls...
+ // These "rules" apply to the other VSTGUI objects too.
+ hFaderBody->forget ();
+ hFaderHandle->forget ();
+
+ frame = lFrame;
+ return true;
+}
+
+//-----------------------------------------------------------------------------
+void SDEditor::close ()
+{
+ delete frame;
+ frame = 0;
+}
+
+//-----------------------------------------------------------------------------
+void SDEditor::setParameter (VstInt32 index, float value)
+{
+ if (frame == 0)
+ return;
+
+ // called from ADelayEdit
+ switch (index)
+ {
+ case kDelay:
+ if (delayFader)
+ delayFader->setValue (effect->getParameter (index));
+ if (delayDisplay)
+ delayDisplay->setValue (effect->getParameter (index));
+ break;
+
+ case kFeedBack:
+ if (feedbackFader)
+ feedbackFader->setValue (effect->getParameter (index));
+ if (feedbackDisplay)
+ feedbackDisplay->setValue (effect->getParameter (index));
+ break;
+
+ case kOut:
+ if (volumeFader)
+ volumeFader->setValue (effect->getParameter (index));
+ if (volumeDisplay)
+ volumeDisplay->setValue (effect->getParameter (index));
+ break;
+ }
+}
+
+//-----------------------------------------------------------------------------
+void SDEditor::valueChanged (CDrawContext* context, CControl* control)
+{
+ long tag = control->getTag ();
+ switch (tag)
+ {
+ case kDelay:
+ case kFeedBack:
+ case kOut:
+ effect->setParameterAutomated (tag, control->getValue ());
+ control->setDirty ();
+ break;
+ }
+}
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/sdeditor.h b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/sdeditor.h
new file mode 100644
index 0000000..abe427a
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/sdeditor.h
@@ -0,0 +1,51 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:28 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : sdeditor.h
+// Created by : Steinberg Media Technologies
+// Description : Simple Surround Delay plugin with Editor using VSTGUI
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __sdeditor__
+#define __sdeditor__
+
+
+// include VSTGUI
+#ifndef __vstgui__
+#include "vstgui.sf/vstgui/vstgui.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+class SDEditor : public AEffGUIEditor, public CControlListener
+{
+public:
+ SDEditor (AudioEffect* effect);
+ virtual ~SDEditor ();
+
+public:
+ virtual bool open (void* ptr);
+ virtual void close ();
+
+ virtual void setParameter (VstInt32 index, float value);
+ virtual void valueChanged (CDrawContext* context, CControl* control);
+
+private:
+ // Controls
+ CVerticalSlider* delayFader;
+ CVerticalSlider* feedbackFader;
+ CVerticalSlider* volumeFader;
+
+ CParamDisplay* delayDisplay;
+ CParamDisplay* feedbackDisplay;
+ CParamDisplay* volumeDisplay;
+
+ // Bitmap
+ CBitmap* hBackground;
+};
+
+#endif
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/surrounddelay.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/surrounddelay.cpp
new file mode 100644
index 0000000..d8c5a99
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/surrounddelay.cpp
@@ -0,0 +1,172 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : surrounddelay.cpp
+// Created by : Steinberg Media Technologies
+// Description : Simple Surround Delay plugin with Editor using VSTGUI
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __surrounddelay__
+#include "surrounddelay.h"
+#endif
+
+#ifndef __sdeditor__
+#include "editor/sdeditor.h"
+#endif
+
+#include <string.h>
+#include <stdio.h>
+
+//-------------------------------------------------------------------------------------------------------
+AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
+{
+ return new SurroundDelay (audioMaster);
+}
+
+//-----------------------------------------------------------------------------
+SurroundDelay::SurroundDelay (audioMasterCallback audioMaster)
+: ADelay (audioMaster)
+, plugInput (0)
+, plugOutput (0)
+{
+
+ // The first buffer is allocated in ADelay's constructor
+ for (int i = 1; i < MAX_CHANNELS; i++)
+ {
+ sBuffers[i] = new float[size];
+ }
+
+ setNumInputs (MAX_CHANNELS);
+ setNumOutputs (MAX_CHANNELS);
+
+ // We initialize the arrangements to default values.
+ // Nevertheless, the host should modify them via
+ // appropriate calls to setSpeakerArrangement.
+ allocateArrangement (&plugInput, MAX_CHANNELS);
+ plugInput->type = kSpeakerArr51;
+
+ allocateArrangement (&plugOutput, MAX_CHANNELS);
+ plugOutput->type = kSpeakerArr51;
+
+ setUniqueID ('SDlE'); // this should be unique, use the Steinberg web page for plugin Id registration
+
+ // create the editor
+ editor = new SDEditor (this);
+
+ resume ();
+}
+
+//-----------------------------------------------------------------------------
+SurroundDelay::~SurroundDelay ()
+{
+ sBuffers[0] = 0;
+ // We let ~ADelay delete "buffer"...
+ for (int i = 1; i < MAX_CHANNELS; i++)
+ {
+ if (sBuffers[i])
+ {
+ delete[] sBuffers[i];
+ }
+ sBuffers[i] = 0;
+ }
+
+ deallocateArrangement (&plugInput);
+ deallocateArrangement (&plugOutput);
+}
+
+//------------------------------------------------------------------------
+void SurroundDelay::resume ()
+{
+ memset (buffer, 0, size * sizeof (float));
+ sBuffers[0] = buffer;
+
+ for (int i = 1; i < MAX_CHANNELS; i++)
+ {
+ memset (sBuffers[i], 0, size * sizeof (float));
+ }
+}
+
+//------------------------------------------------------------------------
+bool SurroundDelay::getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput)
+{
+ *pluginInput = plugInput;
+ *pluginOutput = plugOutput;
+ return true;
+}
+
+//------------------------------------------------------------------------
+bool SurroundDelay::setSpeakerArrangement (VstSpeakerArrangement* pluginInput,
+ VstSpeakerArrangement* pluginOutput)
+{
+ if (!pluginOutput || !pluginInput)
+ return false;
+
+ bool result = true;
+
+ // This plug-in can act on any speaker arrangement,
+ // provided that there are the same number of inputs/outputs.
+ if (pluginInput->numChannels > MAX_CHANNELS)
+ {
+ // This plug-in can't have so many channels. So we answer
+ // false, and we set the input arrangement with the maximum
+ // number of channels possible
+ result = false;
+ allocateArrangement (&plugInput, MAX_CHANNELS);
+ plugInput->type = kSpeakerArr51;
+ }
+ else
+ {
+ matchArrangement (&plugInput, pluginInput);
+ }
+
+ if (pluginOutput->numChannels != plugInput->numChannels)
+ {
+ // This plug-in only deals with symetric IO configurations...
+ result = false;
+ matchArrangement (&plugOutput, plugInput);
+ }
+ else
+ {
+ matchArrangement (&plugOutput, pluginOutput);
+ }
+
+ return result;
+}
+
+//------------------------------------------------------------------------
+void SurroundDelay::processReplacing (float** inputs, float** outputs, VstInt32 sampleframes)
+{
+ float* inputs2[1];
+ float* outputs2[2];
+
+ outputs2[1] = NULL;
+
+ long cursorTemp = cursor;
+
+ for (int i = 0; i < plugInput->numChannels; i++)
+ {
+ cursor = cursorTemp;
+
+ buffer = sBuffers[i];
+
+ inputs2[0] = inputs[i];
+ outputs2[0] = outputs[i];
+
+ ADelay::processReplacing (inputs2, outputs2, sampleframes);
+ }
+
+ buffer = sBuffers[0];
+}
+
+//-----------------------------------------------------------------------------
+void SurroundDelay::setParameter (VstInt32 index, float value)
+{
+ ADelay::setParameter (index, value);
+
+ if (editor)
+ ((AEffGUIEditor*)editor)->setParameter (index, value);
+}
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/surrounddelay.h b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/surrounddelay.h
new file mode 100644
index 0000000..f8412b9
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/surrounddelay.h
@@ -0,0 +1,54 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : surrounddelay.h
+// Created by : Steinberg Media Technologies
+// Description : Simple Surround Delay plugin with Editor using VSTGUI
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __surrounddelay__
+#define __surrounddelay__
+
+#ifndef __adelay__
+#include "adelay.h"
+#endif
+
+#define MAX_CHANNELS 6 // maximun number of channel
+
+//------------------------------------------------------------------------
+// SurroundDelay declaration
+//------------------------------------------------------------------------
+class SurroundDelay : public ADelay
+{
+public:
+ SurroundDelay (audioMasterCallback audioMaster);
+ ~SurroundDelay ();
+
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleframes);
+
+ void setParameter (VstInt32 index, float value);
+
+ // functions VST version 2
+ virtual bool getVendorString (char* text) { if (text) strcpy (text, "Steinberg"); return true; }
+ virtual bool getProductString (char* text) { if (text) strcpy (text, "SDelay"); return true; }
+ virtual VstInt32 getVendorVersion () { return 1000; }
+
+ virtual VstPlugCategory getPlugCategory () { return kPlugSurroundFx; }
+
+ virtual bool getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput);
+ virtual bool setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput);
+
+ virtual void resume ();
+
+private:
+ VstSpeakerArrangement* plugInput;
+ VstSpeakerArrangement* plugOutput;
+
+ float* sBuffers[MAX_CHANNELS];
+};
+
+#endif
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/win/adelay.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/win/adelay.vcproj
new file mode 100644
index 0000000..3391506
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/win/adelay.vcproj
@@ -0,0 +1,400 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="adelay"
+ ProjectGUID="{6503B2E8-BC8D-4D80-809C-D43694296419}"
+ RootNamespace="adelay"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;ADELAY_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;ADELAY_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;ADELAY_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;ADELAY_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\adelay.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\adelay.h"
+ >
+ </File>
+ <File
+ RelativePath="..\adelaymain.cpp"
+ >
+ </File>
+ <Filter
+ Name="vst2.x"
+ >
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\aeffeditor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffect.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffectx.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\vstplugmain.cpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Interfaces"
+ >
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/win/surrounddelay.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/win/surrounddelay.vcproj
new file mode 100644
index 0000000..194bc12
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/win/surrounddelay.vcproj
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="surrounddelay"
+ ProjectGUID="{29898D14-EB2A-41D4-A530-728821929A0D}"
+ RootNamespace="surrounddelay"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../..;..\..\..\..\vstgui;..\..\..\..\..\public.sdk\source\vst2.x"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SURROUNDDELAY_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../..;..\..\..\..\..\public.sdk\source\vst2.x;..\..\..\..\vstgui"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SURROUNDDELAY_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../..;..\..\..\..\vstgui;..\..\..\..\..\public.sdk\source\vst2.x"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SURROUNDDELAY_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../..;..\..\..\..\..\public.sdk\source\vst2.x;..\..\..\..\vstgui"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SURROUNDDELAY_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\adelay.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\adelay.h"
+ >
+ </File>
+ <File
+ RelativePath="..\editor\sdeditor.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\editor\sdeditor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\surrounddelay.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\surrounddelay.h"
+ >
+ </File>
+ <File
+ RelativePath="..\editor\resources\surrounddelay.rc"
+ >
+ </File>
+ <Filter
+ Name="vst2.x"
+ >
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\aeffeditor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffect.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffectx.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\vstplugmain.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="vstgui"
+ >
+ <File
+ RelativePath="..\..\..\..\..\vstgui.sf\vstgui\aeffguieditor.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\vstgui.sf\vstgui\aeffguieditor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\vstgui.sf\vstgui\vstcontrols.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\vstgui.sf\vstgui\vstcontrols.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\vstgui.sf\vstgui\vstgui.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\vstgui.sf\vstgui\vstgui.h"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Interfaces"
+ >
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/source/again.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/source/again.cpp
new file mode 100644
index 0000000..9d0af10
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/source/again.cpp
@@ -0,0 +1,139 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : again.cpp
+// Created by : Steinberg Media Technologies
+// Description : Stereo plugin which applies Gain [-oo, 0dB]
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include "again.h"
+
+//-------------------------------------------------------------------------------------------------------
+AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
+{
+ return new AGain (audioMaster);
+}
+
+//-------------------------------------------------------------------------------------------------------
+AGain::AGain (audioMasterCallback audioMaster)
+: AudioEffectX (audioMaster, 1, 1) // 1 program, 1 parameter only
+{
+ setNumInputs (2); // stereo in
+ setNumOutputs (2); // stereo out
+ setUniqueID ('Gain'); // identify
+ canProcessReplacing (); // supports replacing output
+ canDoubleReplacing (); // supports double precision processing
+
+ fGain = 1.f; // default to 0 dB
+ vst_strncpy (programName, "Default", kVstMaxProgNameLen); // default program name
+}
+
+//-------------------------------------------------------------------------------------------------------
+AGain::~AGain ()
+{
+ // nothing to do here
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AGain::setProgramName (char* name)
+{
+ vst_strncpy (programName, name, kVstMaxProgNameLen);
+}
+
+//-----------------------------------------------------------------------------------------
+void AGain::getProgramName (char* name)
+{
+ vst_strncpy (name, programName, kVstMaxProgNameLen);
+}
+
+//-----------------------------------------------------------------------------------------
+void AGain::setParameter (VstInt32 index, float value)
+{
+ fGain = value;
+}
+
+//-----------------------------------------------------------------------------------------
+float AGain::getParameter (VstInt32 index)
+{
+ return fGain;
+}
+
+//-----------------------------------------------------------------------------------------
+void AGain::getParameterName (VstInt32 index, char* label)
+{
+ vst_strncpy (label, "Gain", kVstMaxParamStrLen);
+}
+
+//-----------------------------------------------------------------------------------------
+void AGain::getParameterDisplay (VstInt32 index, char* text)
+{
+ dB2string (fGain, text, kVstMaxParamStrLen);
+}
+
+//-----------------------------------------------------------------------------------------
+void AGain::getParameterLabel (VstInt32 index, char* label)
+{
+ vst_strncpy (label, "dB", kVstMaxParamStrLen);
+}
+
+//------------------------------------------------------------------------
+bool AGain::getEffectName (char* name)
+{
+ vst_strncpy (name, "Gain", kVstMaxEffectNameLen);
+ return true;
+}
+
+//------------------------------------------------------------------------
+bool AGain::getProductString (char* text)
+{
+ vst_strncpy (text, "Gain", kVstMaxProductStrLen);
+ return true;
+}
+
+//------------------------------------------------------------------------
+bool AGain::getVendorString (char* text)
+{
+ vst_strncpy (text, "Steinberg Media Technologies", kVstMaxVendorStrLen);
+ return true;
+}
+
+//-----------------------------------------------------------------------------------------
+VstInt32 AGain::getVendorVersion ()
+{
+ return 1000;
+}
+
+//-----------------------------------------------------------------------------------------
+void AGain::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames)
+{
+ float* in1 = inputs[0];
+ float* in2 = inputs[1];
+ float* out1 = outputs[0];
+ float* out2 = outputs[1];
+
+ while (--sampleFrames >= 0)
+ {
+ (*out1++) = (*in1++) * fGain;
+ (*out2++) = (*in2++) * fGain;
+ }
+}
+
+//-----------------------------------------------------------------------------------------
+void AGain::processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames)
+{
+ double* in1 = inputs[0];
+ double* in2 = inputs[1];
+ double* out1 = outputs[0];
+ double* out2 = outputs[1];
+ double dGain = fGain;
+
+ while (--sampleFrames >= 0)
+ {
+ (*out1++) = (*in1++) * dGain;
+ (*out2++) = (*in2++) * dGain;
+ }
+}
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/source/again.h b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/source/again.h
new file mode 100644
index 0000000..f241dfa
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/source/again.h
@@ -0,0 +1,50 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : again.h
+// Created by : Steinberg Media Technologies
+// Description : Stereo plugin which applies Gain [-oo, 0dB]
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __again__
+#define __again__
+
+#include "public.sdk/source/vst2.x/audioeffectx.h"
+
+//-------------------------------------------------------------------------------------------------------
+class AGain : public AudioEffectX
+{
+public:
+ AGain (audioMasterCallback audioMaster);
+ ~AGain ();
+
+ // Processing
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
+ virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
+
+ // Program
+ virtual void setProgramName (char* name);
+ virtual void getProgramName (char* name);
+
+ // Parameters
+ virtual void setParameter (VstInt32 index, float value);
+ virtual float getParameter (VstInt32 index);
+ virtual void getParameterLabel (VstInt32 index, char* label);
+ virtual void getParameterDisplay (VstInt32 index, char* text);
+ virtual void getParameterName (VstInt32 index, char* text);
+
+ virtual bool getEffectName (char* name);
+ virtual bool getVendorString (char* text);
+ virtual bool getProductString (char* text);
+ virtual VstInt32 getVendorVersion ();
+
+protected:
+ float fGain;
+ char programName[kVstMaxProgNameLen + 1];
+};
+
+#endif
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/win/again.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/win/again.vcproj
new file mode 100644
index 0000000..5140d09
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/again/win/again.vcproj
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="again"
+ ProjectGUID="{59248302-52E0-4CC0-9BBE-E475BA4A9B41}"
+ RootNamespace="again"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;AGAIN_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;AGAIN_EXPORTS;VST_64BIT_PLATFORM=1;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;AGAIN_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;AGAIN_EXPORTS;VST_64BIT_PLATFORM=1;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\source\again.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\again.h"
+ >
+ </File>
+ <Filter
+ Name="vst2.x"
+ >
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\aeffeditor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffect.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffectx.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\vstplugmain.cpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Interfaces"
+ >
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/mac/minihost-Info.plist b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/mac/minihost-Info.plist
new file mode 100644
index 0000000..92ddf0f
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/mac/minihost-Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.minihost</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+</dict>
+</plist>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/mac/vst2.4Info.plist b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/mac/vst2.4Info.plist
new file mode 100644
index 0000000..35c22fa
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/mac/vst2.4Info.plist
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>de.steinberg.vst2.4.example.$(PRODUCT_NAME)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CSResourcesFileMapped</key>
+ <true/>
+</dict>
+</plist>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/source/minieditor.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/source/minieditor.cpp
new file mode 100644
index 0000000..80277b1
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/source/minieditor.cpp
@@ -0,0 +1,203 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:28 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : minieditor.cpp
+// Created by : Steinberg
+// Description : VST Mini Host Editor
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include "pluginterfaces/vst2.x/aeffectx.h"
+
+#if _WIN32
+#include <windows.h>
+#elif TARGET_API_MAC_CARBON
+#include <Carbon/Carbon.h>
+static pascal OSStatus windowHandler (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData);
+static pascal void idleTimerProc (EventLoopTimerRef inTimer, void* inUserData);
+#endif
+
+#include <stdio.h>
+
+#if _WIN32
+//-------------------------------------------------------------------------------------------------------
+struct MyDLGTEMPLATE: DLGTEMPLATE
+{
+ WORD ext[3];
+ MyDLGTEMPLATE ()
+ {
+ memset (this, 0, sizeof (*this));
+ };
+};
+
+static INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+static AEffect* theEffect = 0;
+#endif
+
+//-------------------------------------------------------------------------------------------------------
+bool checkEffectEditor (AEffect* effect)
+{
+ if ((effect->flags & effFlagsHasEditor) == 0)
+ {
+ printf ("This plug does not have an editor!\n");
+ return false;
+ }
+
+#if _WIN32
+ theEffect = effect;
+
+ MyDLGTEMPLATE t;
+ t.style = WS_POPUPWINDOW|WS_DLGFRAME|DS_MODALFRAME|DS_CENTER;
+ t.cx = 100;
+ t.cy = 100;
+ DialogBoxIndirectParam (GetModuleHandle (0), &t, 0, (DLGPROC)EditorProc, (LPARAM)effect);
+
+ theEffect = 0;
+#elif TARGET_API_MAC_CARBON
+ WindowRef window;
+ Rect mRect = {0, 0, 300, 300};
+ OSStatus err = CreateNewWindow (kDocumentWindowClass, kWindowCloseBoxAttribute | kWindowCompositingAttribute | kWindowAsyncDragAttribute | kWindowStandardHandlerAttribute, &mRect, &window);
+ if (err != noErr)
+ {
+ printf ("HOST> Could not create mac window !\n");
+ return false;
+ }
+ static EventTypeSpec eventTypes[] = {
+ { kEventClassWindow, kEventWindowClose }
+ };
+ InstallWindowEventHandler (window, windowHandler, GetEventTypeCount (eventTypes), eventTypes, window, NULL);
+
+ printf ("HOST> Open editor...\n");
+ effect->dispatcher (effect, effEditOpen, 0, 0, window, 0);
+ ERect* eRect = 0;
+ printf ("HOST> Get editor rect..\n");
+ effect->dispatcher (effect, effEditGetRect, 0, 0, &eRect, 0);
+ if (eRect)
+ {
+ int width = eRect->right - eRect->left;
+ int height = eRect->bottom - eRect->top;
+ Rect bounds;
+ GetWindowBounds (window, kWindowContentRgn, &bounds);
+ bounds.right = bounds.left + width;
+ bounds.bottom = bounds.top + height;
+ SetWindowBounds (window, kWindowContentRgn, &bounds);
+ }
+ RepositionWindow (window, NULL, kWindowCenterOnMainScreen);
+ ShowWindow (window);
+
+ EventLoopTimerRef idleEventLoopTimer;
+ InstallEventLoopTimer (GetCurrentEventLoop (), kEventDurationSecond / 25., kEventDurationSecond / 25., idleTimerProc, effect, &idleEventLoopTimer);
+
+ RunAppModalLoopForWindow (window);
+ RemoveEventLoopTimer (idleEventLoopTimer);
+
+ printf ("HOST> Close editor..\n");
+ effect->dispatcher (effect, effEditClose, 0, 0, 0, 0);
+ ReleaseWindow (window);
+#endif
+ return true;
+}
+
+#if _WIN32
+//-------------------------------------------------------------------------------------------------------
+INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ AEffect* effect = theEffect;
+
+ switch(msg)
+ {
+ //-----------------------
+ case WM_INITDIALOG :
+ {
+ SetWindowText (hwnd, "VST Editor");
+ SetTimer (hwnd, 1, 20, 0);
+
+ if (effect)
+ {
+ printf ("HOST> Open editor...\n");
+ effect->dispatcher (effect, effEditOpen, 0, 0, hwnd, 0);
+
+ printf ("HOST> Get editor rect..\n");
+ ERect* eRect = 0;
+ effect->dispatcher (effect, effEditGetRect, 0, 0, &eRect, 0);
+ if (eRect)
+ {
+ int width = eRect->right - eRect->left;
+ int height = eRect->bottom - eRect->top;
+ if (width < 100)
+ width = 100;
+ if (height < 100)
+ height = 100;
+
+ RECT wRect;
+ SetRect (&wRect, 0, 0, width, height);
+ AdjustWindowRectEx (&wRect, GetWindowLong (hwnd, GWL_STYLE), FALSE, GetWindowLong (hwnd, GWL_EXSTYLE));
+ width = wRect.right - wRect.left;
+ height = wRect.bottom - wRect.top;
+
+ SetWindowPos (hwnd, HWND_TOP, 0, 0, width, height, SWP_NOMOVE);
+ }
+ }
+ } break;
+
+ //-----------------------
+ case WM_TIMER :
+ if (effect)
+ effect->dispatcher (effect, effEditIdle, 0, 0, 0, 0);
+ break;
+
+ //-----------------------
+ case WM_CLOSE :
+ {
+ KillTimer (hwnd, 1);
+
+ printf ("HOST> Close editor..\n");
+ if (effect)
+ effect->dispatcher (effect, effEditClose, 0, 0, 0, 0);
+
+ EndDialog (hwnd, IDOK);
+ } break;
+ }
+
+ return 0;
+}
+
+#elif TARGET_API_MAC_CARBON
+//-------------------------------------------------------------------------------------------------------
+pascal void idleTimerProc (EventLoopTimerRef inTimer, void *inUserData)
+{
+ AEffect* effect = (AEffect*)inUserData;
+ effect->dispatcher (effect, effEditIdle, 0, 0, 0, 0);
+}
+
+//-------------------------------------------------------------------------------------------------------
+pascal OSStatus windowHandler (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData)
+{
+ OSStatus result = eventNotHandledErr;
+ WindowRef window = (WindowRef) inUserData;
+ UInt32 eventClass = GetEventClass (inEvent);
+ UInt32 eventKind = GetEventKind (inEvent);
+
+ switch (eventClass)
+ {
+ case kEventClassWindow:
+ {
+ switch (eventKind)
+ {
+ case kEventWindowClose:
+ {
+ QuitAppModalLoopForWindow (window);
+ break;
+ }
+ }
+ break;
+ }
+ }
+
+ return result;
+}
+
+#endif
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/source/minihost.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/source/minihost.cpp
new file mode 100644
index 0000000..686ee50
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/source/minihost.cpp
@@ -0,0 +1,333 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:28 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : minihost.cpp
+// Created by : Steinberg
+// Description : VST Mini Host
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include "pluginterfaces/vst2.x/aeffectx.h"
+
+#if _WIN32
+#include <windows.h>
+#elif TARGET_API_MAC_CARBON
+#include <CoreFoundation/CoreFoundation.h>
+#endif
+
+#include <stdio.h>
+
+//-------------------------------------------------------------------------------------------------------
+static const VstInt32 kBlockSize = 512;
+static const float kSampleRate = 48000.f;
+static const VstInt32 kNumProcessCycles = 5;
+
+//-------------------------------------------------------------------------------------------------------
+typedef AEffect* (*PluginEntryProc) (audioMasterCallback audioMaster);
+static VstIntPtr VSTCALLBACK HostCallback (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt);
+
+//-------------------------------------------------------------------------------------------------------
+// PluginLoader
+//-------------------------------------------------------------------------------------------------------
+struct PluginLoader
+{
+//-------------------------------------------------------------------------------------------------------
+ void* module;
+
+ PluginLoader ()
+ : module (0)
+ {}
+
+ ~PluginLoader ()
+ {
+ if (module)
+ {
+ #if _WIN32
+ FreeLibrary ((HMODULE)module);
+ #elif TARGET_API_MAC_CARBON
+ CFBundleUnloadExecutable ((CFBundleRef)module);
+ CFRelease ((CFBundleRef)module);
+ #endif
+ }
+ }
+
+ bool loadLibrary (const char* fileName)
+ {
+ #if _WIN32
+ module = LoadLibrary (fileName);
+ #elif TARGET_API_MAC_CARBON
+ CFStringRef fileNameString = CFStringCreateWithCString (NULL, fileName, kCFStringEncodingUTF8);
+ if (fileNameString == 0)
+ return false;
+ CFURLRef url = CFURLCreateWithFileSystemPath (NULL, fileNameString, kCFURLPOSIXPathStyle, false);
+ CFRelease (fileNameString);
+ if (url == 0)
+ return false;
+ module = CFBundleCreate (NULL, url);
+ CFRelease (url);
+ if (module && CFBundleLoadExecutable ((CFBundleRef)module) == false)
+ return false;
+ #endif
+ return module != 0;
+ }
+
+ PluginEntryProc getMainEntry ()
+ {
+ PluginEntryProc mainProc = 0;
+ #if _WIN32
+ mainProc = (PluginEntryProc)GetProcAddress ((HMODULE)module, "VSTPluginMain");
+ if (!mainProc)
+ mainProc = (PluginEntryProc)GetProcAddress ((HMODULE)module, "main");
+ #elif TARGET_API_MAC_CARBON
+ mainProc = (PluginEntryProc)CFBundleGetFunctionPointerForName ((CFBundleRef)module, CFSTR("VSTPluginMain"));
+ if (!mainProc)
+ mainProc = (PluginEntryProc)CFBundleGetFunctionPointerForName ((CFBundleRef)module, CFSTR("main_macho"));
+ #endif
+ return mainProc;
+ }
+//-------------------------------------------------------------------------------------------------------
+};
+
+//-------------------------------------------------------------------------------------------------------
+static bool checkPlatform ()
+{
+#if VST_64BIT_PLATFORM
+ printf ("*** This is a 64 Bit Build! ***\n");
+#else
+ printf ("*** This is a 32 Bit Build! ***\n");
+#endif
+
+ int sizeOfVstIntPtr = sizeof (VstIntPtr);
+ int sizeOfVstInt32 = sizeof (VstInt32);
+ int sizeOfPointer = sizeof (void*);
+ int sizeOfAEffect = sizeof (AEffect);
+
+ printf ("VstIntPtr = %d Bytes, VstInt32 = %d Bytes, Pointer = %d Bytes, AEffect = %d Bytes\n\n",
+ sizeOfVstIntPtr, sizeOfVstInt32, sizeOfPointer, sizeOfAEffect);
+
+ return sizeOfVstIntPtr == sizeOfPointer;
+}
+
+//-------------------------------------------------------------------------------------------------------
+static void checkEffectProperties (AEffect* effect);
+static void checkEffectProcessing (AEffect* effect);
+extern bool checkEffectEditor (AEffect* effect); // minieditor.cpp
+
+//-------------------------------------------------------------------------------------------------------
+int main (int argc, char* argv[])
+{
+ if (!checkPlatform ())
+ {
+ printf ("Platform verification failed! Please check your Compiler Settings!\n");
+ return -1;
+ }
+
+ const char* fileName = "again.dll";
+ //const char* fileName = "adelay.dll";
+ //const char* fileName = "surrounddelay.dll";
+ //const char* fileName = "vstxsynth.dll";
+ //const char* fileName = "drawtest.dll";
+
+ if (argc > 1)
+ fileName = argv[1];
+
+ printf ("HOST> Load library...\n");
+ PluginLoader loader;
+ if (!loader.loadLibrary (fileName))
+ {
+ printf ("Failed to load VST Plugin library!\n");
+ return -1;
+ }
+
+ PluginEntryProc mainEntry = loader.getMainEntry ();
+ if (!mainEntry)
+ {
+ printf ("VST Plugin main entry not found!\n");
+ return -1;
+ }
+
+ printf ("HOST> Create effect...\n");
+ AEffect* effect = mainEntry (HostCallback);
+ if (!effect)
+ {
+ printf ("Failed to create effect instance!\n");
+ return -1;
+ }
+
+ printf ("HOST> Init sequence...\n");
+ effect->dispatcher (effect, effOpen, 0, 0, 0, 0);
+ effect->dispatcher (effect, effSetSampleRate, 0, 0, 0, kSampleRate);
+ effect->dispatcher (effect, effSetBlockSize, 0, kBlockSize, 0, 0);
+
+ checkEffectProperties (effect);
+ checkEffectProcessing (effect);
+ checkEffectEditor (effect);
+
+ printf ("HOST> Close effect...\n");
+ effect->dispatcher (effect, effClose, 0, 0, 0, 0);
+ return 0;
+}
+
+//-------------------------------------------------------------------------------------------------------
+void checkEffectProperties (AEffect* effect)
+{
+ printf ("HOST> Gathering properties...\n");
+
+ char effectName[256] = {0};
+ char vendorString[256] = {0};
+ char productString[256] = {0};
+
+ effect->dispatcher (effect, effGetEffectName, 0, 0, effectName, 0);
+ effect->dispatcher (effect, effGetVendorString, 0, 0, vendorString, 0);
+ effect->dispatcher (effect, effGetProductString, 0, 0, productString, 0);
+
+ printf ("Name = %s\nVendor = %s\nProduct = %s\n\n", effectName, vendorString, productString);
+
+ printf ("numPrograms = %d\nnumParams = %d\nnumInputs = %d\nnumOutputs = %d\n\n",
+ effect->numPrograms, effect->numParams, effect->numInputs, effect->numOutputs);
+
+ // Iterate programs...
+ for (VstInt32 progIndex = 0; progIndex < effect->numPrograms; progIndex++)
+ {
+ char progName[256] = {0};
+ if (!effect->dispatcher (effect, effGetProgramNameIndexed, progIndex, 0, progName, 0))
+ {
+ effect->dispatcher (effect, effSetProgram, 0, progIndex, 0, 0); // Note: old program not restored here!
+ effect->dispatcher (effect, effGetProgramName, 0, 0, progName, 0);
+ }
+ printf ("Program %03d: %s\n", progIndex, progName);
+ }
+
+ printf ("\n");
+
+ // Iterate parameters...
+ for (VstInt32 paramIndex = 0; paramIndex < effect->numParams; paramIndex++)
+ {
+ char paramName[256] = {0};
+ char paramLabel[256] = {0};
+ char paramDisplay[256] = {0};
+
+ effect->dispatcher (effect, effGetParamName, paramIndex, 0, paramName, 0);
+ effect->dispatcher (effect, effGetParamLabel, paramIndex, 0, paramLabel, 0);
+ effect->dispatcher (effect, effGetParamDisplay, paramIndex, 0, paramDisplay, 0);
+ float value = effect->getParameter (effect, paramIndex);
+
+ printf ("Param %03d: %s [%s %s] (normalized = %f)\n", paramIndex, paramName, paramDisplay, paramLabel, value);
+ }
+
+ printf ("\n");
+
+ // Can-do nonsense...
+ static const char* canDos[] =
+ {
+ "receiveVstEvents",
+ "receiveVstMidiEvent",
+ "midiProgramNames"
+ };
+
+ for (VstInt32 canDoIndex = 0; canDoIndex < sizeof (canDos) / sizeof (canDos[0]); canDoIndex++)
+ {
+ printf ("Can do %s... ", canDos[canDoIndex]);
+ VstInt32 result = (VstInt32)effect->dispatcher (effect, effCanDo, 0, 0, (void*)canDos[canDoIndex], 0);
+ switch (result)
+ {
+ case 0 : printf ("don't know"); break;
+ case 1 : printf ("yes"); break;
+ case -1 : printf ("definitely not!"); break;
+ default : printf ("?????");
+ }
+ printf ("\n");
+ }
+
+ printf ("\n");
+}
+
+//-------------------------------------------------------------------------------------------------------
+void checkEffectProcessing (AEffect* effect)
+{
+ float** inputs = 0;
+ float** outputs = 0;
+ VstInt32 numInputs = effect->numInputs;
+ VstInt32 numOutputs = effect->numOutputs;
+
+ if (numInputs > 0)
+ {
+ inputs = new float*[numInputs];
+ for (VstInt32 i = 0; i < numInputs; i++)
+ {
+ inputs[i] = new float[kBlockSize];
+ memset (inputs[i], 0, kBlockSize * sizeof (float));
+ }
+ }
+
+ if (numOutputs > 0)
+ {
+ outputs = new float*[numOutputs];
+ for (VstInt32 i = 0; i < numOutputs; i++)
+ {
+ outputs[i] = new float[kBlockSize];
+ memset (outputs[i], 0, kBlockSize * sizeof (float));
+ }
+ }
+
+ printf ("HOST> Resume effect...\n");
+ effect->dispatcher (effect, effMainsChanged, 0, 1, 0, 0);
+
+ for (VstInt32 processCount = 0; processCount < kNumProcessCycles; processCount++)
+ {
+ printf ("HOST> Process Replacing...\n");
+ effect->processReplacing (effect, inputs, outputs, kBlockSize);
+ }
+
+ printf ("HOST> Suspend effect...\n");
+ effect->dispatcher (effect, effMainsChanged, 0, 0, 0, 0);
+
+ if (numInputs > 0)
+ {
+ for (VstInt32 i = 0; i < numInputs; i++)
+ delete [] inputs[i];
+ delete [] inputs;
+ }
+
+ if (numOutputs > 0)
+ {
+ for (VstInt32 i = 0; i < numOutputs; i++)
+ delete [] outputs[i];
+ delete [] outputs;
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------
+VstIntPtr VSTCALLBACK HostCallback (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt)
+{
+ VstIntPtr result = 0;
+
+ // Filter idle calls...
+ bool filtered = false;
+ if (opcode == audioMasterIdle)
+ {
+ static bool wasIdle = false;
+ if (wasIdle)
+ filtered = true;
+ else
+ {
+ printf ("(Future idle calls will not be displayed!)\n");
+ wasIdle = true;
+ }
+ }
+
+ if (!filtered)
+ printf ("PLUG> HostCallback (opcode %d)\n index = %d, value = %p, ptr = %p, opt = %f\n", opcode, index, FromVstPtr<void> (value), ptr, opt);
+
+ switch (opcode)
+ {
+ case audioMasterVersion :
+ result = kVstVersion;
+ break;
+ }
+
+ return result;
+}
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/win/minihost.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/win/minihost.vcproj
new file mode 100644
index 0000000..26dd759
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/minihost/win/minihost.vcproj
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="minihost"
+ ProjectGUID="{D36A7267-C114-4C52-8299-18BD15D0D690}"
+ RootNamespace="minihost"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;VST_64BIT_PLATFORM=1;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;VST_64BIT_PLATFORM=1;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\source\minieditor.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\minihost.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Interfaces"
+ >
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.rc b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.rc
new file mode 100644
index 0000000..eb0135c
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.rc
@@ -0,0 +1,3 @@
+#define APSTUDIO_READONLY_SYMBOLS
+
+1 VSTXML "vstxsynth.vstxml" \ No newline at end of file
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.vstxml b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.vstxml
new file mode 100644
index 0000000..f56fe24
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.vstxml
@@ -0,0 +1,36 @@
+<!-- =========================================================== -->
+<!-- VST Parameter XML Definition for vstxsynth ================ -->
+<!-- Version 1.0 =============================================== -->
+<!-- Date: 01/2006 ============================================= -->
+<!-- =========================================================== -->
+
+<VSTPluginProperties>
+ <VSTParametersStructure>
+ <!-- ======================================================= -->
+ <!-- Value Types =========================================== -->
+ <!-- ======================================================= -->
+
+ <ValueType name="Waveform">
+ <Entry name="Sawtooth" value="[0, 0.5["/>
+ <Entry name="Pulse" value="[0.5, 1]"/>
+ </ValueType>
+
+ <!-- ======================================================= -->
+ <!-- Templates ============================================= -->
+ <!-- ======================================================= -->
+
+ <Template name="Osc">
+ <Param name="Waveform" type="Waveform" id="offset"/>
+ <Param name="Frequency" id="offset+1"/>
+ <Param name="Level" id="offset+2"/>
+ </Template>
+
+ <!-- ======================================================= -->
+ <!-- Global ================================================ -->
+ <!-- ======================================================= -->
+
+ <Param name="Volume" id="6"/>
+ <Group name="Osc Left" template="Osc" values="offset=0"/>
+ <Group name="Osc Right" template="Osc" values="offset=3"/>
+ </VSTParametersStructure>
+</VSTPluginProperties>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/gmnames.h b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/gmnames.h
new file mode 100644
index 0000000..78821fc
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/gmnames.h
@@ -0,0 +1,222 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : gmnames.h
+// Created by : Steinberg Media Technologies
+// Description : Example VstXSynth
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __gmnames__
+#define __gmnames__
+
+static const long kNumGmCategories = 17;
+
+static const char* GmCategories[kNumGmCategories] =
+{
+ "Piano",
+ "Percussion",
+ "Organ",
+ "Guitar",
+ "Bass",
+ "Strings",
+ "Ensemble",
+ "Brass",
+ "Reed",
+ "Pipe",
+ "Synth Lead",
+ "SynthPad",
+ "Synth Effects",
+ "Ethnic",
+ "Percussive",
+ "Effects",
+ "DrumSets"
+};
+
+static short GmCategoriesFirstIndices [kNumGmCategories + 1] =
+{
+ 0, 7, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128
+};
+
+static const char* GmNames [128] =
+{
+ // Piano
+ "Acoustic Grand Piano",
+ "Bright Acoustic Piano",
+ "Electric Grand Piano",
+ "Honky-tonk Piano",
+ "Electric Piano 1",
+ "Electric Piano 2",
+ "Harpsichord",
+
+ // Percussion
+ "Clavi", // 7
+ "Celesta",
+ "Glockenspiel",
+ "Music Box",
+ "Vibraphone",
+ "Marimba",
+ "Xylophone",
+ "Tubular Bells",
+ "Dulcimer",
+
+ // Organ
+ "Drawbar Organ", // 16
+ "Percussive Organ",
+ "Rock Organ",
+ "Church Organ",
+ "Reed Organ",
+ "Accordion",
+ "Harmonica",
+ "Tango Accordion",
+
+ // Gitar
+ "Acoustic Guitar (nylon)", // 24
+ "Acoustic Guitar (steel)",
+ "Electric Guitar (jazz)",
+ "Electric Guitar (clean)",
+ "Electric Guitar (muted)",
+ "Overdriven Guitar",
+ "Distortion Guitar",
+ "Guitar harmonics",
+
+ // Bass
+ "Acoustic Bass", // 32
+ "Electric Bass (finger)",
+ "Electric Bass (pick)",
+ "Fretless Bass",
+ "Slap Bass 1",
+ "Slap Bass 2",
+ "Synth Bass 1",
+ "Synth Bass 2",
+
+ // strings
+ "Violin", // 40
+ "Viola",
+ "Cello",
+ "Contrabass",
+ "Tremolo Strings",
+ "Pizzicato Strings",
+ "Orchestral Harp",
+ "Timpani",
+
+ // Ensemble
+ "String Ensemble 1", // 48
+ "String Ensemble 2",
+ "SynthStrings 1",
+ "SynthStrings 2",
+ "Choir Aahs",
+ "Voice Oohs",
+ "Synth Voice",
+ "Orchestra Hit",
+
+ // Brass
+ "Trumpet", // 56
+ "Trombone",
+ "Tuba",
+ "Muted Trumpet",
+ "French Horn",
+ "Brass Section",
+ "SynthBrass 1",
+ "SynthBrass 2",
+
+ // Reed
+ "Soprano Sax", // 64
+ "Alto Sax",
+ "Tenor Sax",
+ "Baritone Sax",
+ "Oboe",
+ "English Horn",
+ "Bassoon",
+ "Clarinet",
+
+ // Pipe
+ "Piccolo", // 72
+ "Flute",
+ "Recorder",
+ "Pan Flute",
+ "Blown Bottle",
+ "Shakuhachi",
+ "Whistle",
+ "Ocarina",
+
+ // Synth Lead
+ "Lead 1 (square)", // 80
+ "Lead 2 (sawtooth)",
+ "Lead 3 (calliope)",
+ "Lead 4 (chiff)",
+ "Lead 5 (charang)",
+ "Lead 6 (voice)",
+ "Lead 7 (fifths)",
+ "Lead 8 (bass + lead)",
+
+ // Synth Pad
+ "Pad 1 (new age)", // 88
+ "Pad 2 (warm)",
+ "Pad 3 (polysynth)",
+ "Pad 4 (choir)",
+ "Pad 5 (bowed)",
+ "Pad 6 (metallic)",
+ "Pad 7 (halo)",
+ "Pad 8 (sweep)",
+
+ // Synth Fx
+ "FX 1 (rain)", // 96
+ "FX 2 (soundtrack)",
+ "FX 3 (crystal)",
+ "FX 4 (atmosphere)",
+ "FX 5 (brightness)",
+ "FX 6 (goblins)",
+ "FX 7 (echoes)",
+ "FX 8 (sci-fi)",
+
+ // Ethnic
+ "Sitar", // 104
+ "Banjo",
+ "Shamisen",
+ "Koto",
+ "Kalimba",
+ "Bag pipe",
+ "Fiddle",
+ "Shanai",
+
+ // Percussive
+ "Tinkle Bell", // 112
+ "Agogo",
+ "Steel Drums",
+ "Woodblock",
+ "Taiko Drum",
+ "Melodic Tom",
+ "Synth Drum",
+ "Reverse Cymbal",
+
+ // Effects
+ "Guitar Fret Noise", // 120
+ "Breath Noise",
+ "Seashore",
+ "Bird Tweet",
+ "Telephone Ring",
+ "Helicopter",
+ "Applause",
+ "Gunshot"
+};
+
+static const char* GmDrumSets[11] =
+{
+ "Standard",
+ "Room",
+ "Power",
+ "Electronic",
+ "Analog",
+ "Jazz",
+ "Brush",
+ "Orchestra",
+ "Clavinova",
+ "RX",
+ "C/M"
+};
+
+#endif
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.cpp
new file mode 100644
index 0000000..f23cd02
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.cpp
@@ -0,0 +1,392 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : vstxsynth.cpp
+// Created by : Steinberg Media Technologies
+// Description : Example VstXSynth
+//
+// A simple 2 oscillators test 'synth',
+// Each oscillator has waveform, frequency, and volume
+//
+// *very* basic monophonic 'synth' example. you should not attempt to use this
+// example 'algorithm' to start a serious virtual instrument; it is intended to demonstrate
+// how VstEvents ('MIDI') are handled, but not how a virtual analog synth works.
+// there are numerous much better examples on the web which show how to deal with
+// bandlimited waveforms etc.
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include "vstxsynth.h"
+#include "gmnames.h"
+
+//-------------------------------------------------------------------------------------------------------
+AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
+{
+ return new VstXSynth (audioMaster);
+}
+
+//-----------------------------------------------------------------------------------------
+// VstXSynthProgram
+//-----------------------------------------------------------------------------------------
+VstXSynthProgram::VstXSynthProgram ()
+{
+ // Default Program Values
+ fWaveform1 = 0.f; // saw
+ fFreq1 =.0f;
+ fVolume1 = .33f;
+
+ fWaveform2 = 1.f; // pulse
+ fFreq2 = .05f; // slightly higher
+ fVolume2 = .33f;
+
+ fVolume = .9f;
+ vst_strncpy (name, "Basic", kVstMaxProgNameLen);
+}
+
+//-----------------------------------------------------------------------------------------
+// VstXSynth
+//-----------------------------------------------------------------------------------------
+VstXSynth::VstXSynth (audioMasterCallback audioMaster)
+: AudioEffectX (audioMaster, kNumPrograms, kNumParams)
+{
+ // initialize programs
+ programs = new VstXSynthProgram[kNumPrograms];
+ for (VstInt32 i = 0; i < 16; i++)
+ channelPrograms[i] = i;
+
+ if (programs)
+ setProgram (0);
+
+ if (audioMaster)
+ {
+ setNumInputs (0); // no inputs
+ setNumOutputs (kNumOutputs); // 2 outputs, 1 for each oscillator
+ canProcessReplacing ();
+ isSynth ();
+ setUniqueID ('VxS2'); // <<<! *must* change this!!!!
+ }
+
+ initProcess ();
+ suspend ();
+}
+
+//-----------------------------------------------------------------------------------------
+VstXSynth::~VstXSynth ()
+{
+ if (programs)
+ delete[] programs;
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::setProgram (VstInt32 program)
+{
+ if (program < 0 || program >= kNumPrograms)
+ return;
+
+ VstXSynthProgram *ap = &programs[program];
+ curProgram = program;
+
+ fWaveform1 = ap->fWaveform1;
+ fFreq1 = ap->fFreq1;
+ fVolume1 = ap->fVolume1;
+
+ fWaveform2 = ap->fWaveform2;
+ fFreq2 = ap->fFreq2;
+ fVolume2 = ap->fVolume2;
+
+ fVolume = ap->fVolume;
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::setProgramName (char* name)
+{
+ vst_strncpy (programs[curProgram].name, name, kVstMaxProgNameLen);
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::getProgramName (char* name)
+{
+ vst_strncpy (name, programs[curProgram].name, kVstMaxProgNameLen);
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::getParameterLabel (VstInt32 index, char* label)
+{
+ switch (index)
+ {
+ case kWaveform1:
+ case kWaveform2:
+ vst_strncpy (label, "Shape", kVstMaxParamStrLen);
+ break;
+
+ case kFreq1:
+ case kFreq2:
+ vst_strncpy (label, "Hz", kVstMaxParamStrLen);
+ break;
+
+ case kVolume1:
+ case kVolume2:
+ case kVolume:
+ vst_strncpy (label, "dB", kVstMaxParamStrLen);
+ break;
+ }
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::getParameterDisplay (VstInt32 index, char* text)
+{
+ text[0] = 0;
+ switch (index)
+ {
+ case kWaveform1:
+ if (fWaveform1 < .5)
+ vst_strncpy (text, "Sawtooth", kVstMaxParamStrLen);
+ else
+ vst_strncpy (text, "Pulse", kVstMaxParamStrLen);
+ break;
+
+ case kFreq1: float2string (fFreq1, text, kVstMaxParamStrLen); break;
+ case kVolume1: dB2string (fVolume1, text, kVstMaxParamStrLen); break;
+
+ case kWaveform2:
+ if (fWaveform2 < .5)
+ vst_strncpy (text, "Sawtooth", kVstMaxParamStrLen);
+ else
+ vst_strncpy (text, "Pulse", kVstMaxParamStrLen);
+ break;
+
+ case kFreq2: float2string (fFreq2, text, kVstMaxParamStrLen); break;
+ case kVolume2: dB2string (fVolume2, text, kVstMaxParamStrLen); break;
+ case kVolume: dB2string (fVolume, text, kVstMaxParamStrLen); break;
+ }
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::getParameterName (VstInt32 index, char* label)
+{
+ switch (index)
+ {
+ case kWaveform1: vst_strncpy (label, "Wave 1", kVstMaxParamStrLen); break;
+ case kFreq1: vst_strncpy (label, "Freq 1", kVstMaxParamStrLen); break;
+ case kVolume1: vst_strncpy (label, "Levl 1", kVstMaxParamStrLen); break;
+ case kWaveform2: vst_strncpy (label, "Wave 2", kVstMaxParamStrLen); break;
+ case kFreq2: vst_strncpy (label, "Freq 2", kVstMaxParamStrLen); break;
+ case kVolume2: vst_strncpy (label, "Levl 2", kVstMaxParamStrLen); break;
+ case kVolume: vst_strncpy (label, "Volume", kVstMaxParamStrLen); break;
+ }
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::setParameter (VstInt32 index, float value)
+{
+ VstXSynthProgram *ap = &programs[curProgram];
+ switch (index)
+ {
+ case kWaveform1: fWaveform1 = ap->fWaveform1 = value; break;
+ case kFreq1: fFreq1 = ap->fFreq1 = value; break;
+ case kVolume1: fVolume1 = ap->fVolume1 = value; break;
+ case kWaveform2: fWaveform2 = ap->fWaveform2 = value; break;
+ case kFreq2: fFreq2 = ap->fFreq2 = value; break;
+ case kVolume2: fVolume2 = ap->fVolume2 = value; break;
+ case kVolume: fVolume = ap->fVolume = value; break;
+ }
+}
+
+//-----------------------------------------------------------------------------------------
+float VstXSynth::getParameter (VstInt32 index)
+{
+ float value = 0;
+ switch (index)
+ {
+ case kWaveform1: value = fWaveform1; break;
+ case kFreq1: value = fFreq1; break;
+ case kVolume1: value = fVolume1; break;
+ case kWaveform2: value = fWaveform2; break;
+ case kFreq2: value = fFreq2; break;
+ case kVolume2: value = fVolume2; break;
+ case kVolume: value = fVolume; break;
+ }
+ return value;
+}
+
+//-----------------------------------------------------------------------------------------
+bool VstXSynth::getOutputProperties (VstInt32 index, VstPinProperties* properties)
+{
+ if (index < kNumOutputs)
+ {
+ vst_strncpy (properties->label, "Vstx ", 63);
+ char temp[11] = {0};
+ int2string (index + 1, temp, 10);
+ vst_strncat (properties->label, temp, 63);
+
+ properties->flags = kVstPinIsActive;
+ if (index < 2)
+ properties->flags |= kVstPinIsStereo; // make channel 1+2 stereo
+ return true;
+ }
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------
+bool VstXSynth::getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text)
+{
+ if (index < kNumPrograms)
+ {
+ vst_strncpy (text, programs[index].name, kVstMaxProgNameLen);
+ return true;
+ }
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------
+bool VstXSynth::getEffectName (char* name)
+{
+ vst_strncpy (name, "VstXSynth", kVstMaxEffectNameLen);
+ return true;
+}
+
+//-----------------------------------------------------------------------------------------
+bool VstXSynth::getVendorString (char* text)
+{
+ vst_strncpy (text, "Steinberg Media Technologies", kVstMaxVendorStrLen);
+ return true;
+}
+
+//-----------------------------------------------------------------------------------------
+bool VstXSynth::getProductString (char* text)
+{
+ vst_strncpy (text, "Vst Test Synth", kVstMaxProductStrLen);
+ return true;
+}
+
+//-----------------------------------------------------------------------------------------
+VstInt32 VstXSynth::getVendorVersion ()
+{
+ return 1000;
+}
+
+//-----------------------------------------------------------------------------------------
+VstInt32 VstXSynth::canDo (char* text)
+{
+ if (!strcmp (text, "receiveVstEvents"))
+ return 1;
+ if (!strcmp (text, "receiveVstMidiEvent"))
+ return 1;
+ if (!strcmp (text, "midiProgramNames"))
+ return 1;
+ return -1; // explicitly can't do; 0 => don't know
+}
+
+//-----------------------------------------------------------------------------------------
+VstInt32 VstXSynth::getNumMidiInputChannels ()
+{
+ return 1; // we are monophonic
+}
+
+//-----------------------------------------------------------------------------------------
+VstInt32 VstXSynth::getNumMidiOutputChannels ()
+{
+ return 0; // no MIDI output back to Host app
+}
+
+// midi program names:
+// as an example, GM names are used here. in fact, VstXSynth doesn't even support
+// multi-timbral operation so it's really just for demonstration.
+// a 'real' instrument would have a number of voices which use the
+// programs[channelProgram[channel]] parameters when it receives
+// a note on message.
+
+//------------------------------------------------------------------------
+VstInt32 VstXSynth::getMidiProgramName (VstInt32 channel, MidiProgramName* mpn)
+{
+ VstInt32 prg = mpn->thisProgramIndex;
+ if (prg < 0 || prg >= 128)
+ return 0;
+ fillProgram (channel, prg, mpn);
+ if (channel == 9)
+ return 1;
+ return 128L;
+}
+
+//------------------------------------------------------------------------
+VstInt32 VstXSynth::getCurrentMidiProgram (VstInt32 channel, MidiProgramName* mpn)
+{
+ if (channel < 0 || channel >= 16 || !mpn)
+ return -1;
+ VstInt32 prg = channelPrograms[channel];
+ mpn->thisProgramIndex = prg;
+ fillProgram (channel, prg, mpn);
+ return prg;
+}
+
+//------------------------------------------------------------------------
+void VstXSynth::fillProgram (VstInt32 channel, VstInt32 prg, MidiProgramName* mpn)
+{
+ mpn->midiBankMsb =
+ mpn->midiBankLsb = -1;
+ mpn->reserved = 0;
+ mpn->flags = 0;
+
+ if (channel == 9) // drums
+ {
+ vst_strncpy (mpn->name, "Standard", 63);
+ mpn->midiProgram = 0;
+ mpn->parentCategoryIndex = 0;
+ }
+ else
+ {
+ vst_strncpy (mpn->name, GmNames[prg], 63);
+ mpn->midiProgram = (char)prg;
+ mpn->parentCategoryIndex = -1; // for now
+
+ for (VstInt32 i = 0; i < kNumGmCategories; i++)
+ {
+ if (prg >= GmCategoriesFirstIndices[i] && prg < GmCategoriesFirstIndices[i + 1])
+ {
+ mpn->parentCategoryIndex = i;
+ break;
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+VstInt32 VstXSynth::getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* cat)
+{
+ cat->parentCategoryIndex = -1; // -1:no parent category
+ cat->flags = 0; // reserved, none defined yet, zero.
+ VstInt32 category = cat->thisCategoryIndex;
+ if (channel == 9)
+ {
+ vst_strncpy (cat->name, "Drums", 63);
+ return 1;
+ }
+ if (category >= 0 && category < kNumGmCategories)
+ vst_strncpy (cat->name, GmCategories[category], 63);
+ else
+ cat->name[0] = 0;
+ return kNumGmCategories;
+}
+
+//------------------------------------------------------------------------
+bool VstXSynth::hasMidiProgramsChanged (VstInt32 channel)
+{
+ return false; // updateDisplay ()
+}
+
+//------------------------------------------------------------------------
+bool VstXSynth::getMidiKeyName (VstInt32 channel, MidiKeyName* key)
+ // struct will be filled with information for 'thisProgramIndex' and 'thisKeyNumber'
+ // if keyName is "" the standard name of the key will be displayed.
+ // if false is returned, no MidiKeyNames defined for 'thisProgramIndex'.
+{
+ // key->thisProgramIndex; // >= 0. fill struct for this program index.
+ // key->thisKeyNumber; // 0 - 127. fill struct for this key number.
+ key->keyName[0] = 0;
+ key->reserved = 0; // zero
+ key->flags = 0; // reserved, none defined yet, zero.
+ return false;
+}
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.h b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.h
new file mode 100644
index 0000000..6212cac
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.h
@@ -0,0 +1,139 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : vstxsynth.h
+// Created by : Steinberg Media Technologies
+// Description : Example VstXSynth
+//
+// A simple 2 oscillators test 'synth',
+// Each oscillator has waveform, frequency, and volume
+//
+// *very* basic monophonic 'synth' example. you should not attempt to use this
+// example 'algorithm' to start a serious virtual instrument; it is intended to demonstrate
+// how VstEvents ('MIDI') are handled, but not how a virtual analog synth works.
+// there are numerous much better examples on the web which show how to deal with
+// bandlimited waveforms etc.
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __vstxsynth__
+#define __vstxsynth__
+
+#include "public.sdk/source/vst2.x/audioeffectx.h"
+
+//------------------------------------------------------------------------------------------
+enum
+{
+ // Global
+ kNumPrograms = 128,
+ kNumOutputs = 2,
+
+ // Parameters Tags
+ kWaveform1 = 0,
+ kFreq1,
+ kVolume1,
+
+ kWaveform2,
+ kFreq2,
+ kVolume2,
+
+ kVolume,
+
+ kNumParams
+};
+
+//------------------------------------------------------------------------------------------
+// VstXSynthProgram
+//------------------------------------------------------------------------------------------
+class VstXSynthProgram
+{
+friend class VstXSynth;
+public:
+ VstXSynthProgram ();
+ ~VstXSynthProgram () {}
+
+private:
+ float fWaveform1;
+ float fFreq1;
+ float fVolume1;
+
+ float fWaveform2;
+ float fFreq2;
+ float fVolume2;
+
+ float fVolume;
+ char name[kVstMaxProgNameLen+1];
+};
+
+//------------------------------------------------------------------------------------------
+// VstXSynth
+//------------------------------------------------------------------------------------------
+class VstXSynth : public AudioEffectX
+{
+public:
+ VstXSynth (audioMasterCallback audioMaster);
+ ~VstXSynth ();
+
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
+ virtual VstInt32 processEvents (VstEvents* events);
+
+ virtual void setProgram (VstInt32 program);
+ virtual void setProgramName (char* name);
+ virtual void getProgramName (char* name);
+ virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text);
+
+ virtual void setParameter (VstInt32 index, float value);
+ virtual float getParameter (VstInt32 index);
+ virtual void getParameterLabel (VstInt32 index, char* label);
+ virtual void getParameterDisplay (VstInt32 index, char* text);
+ virtual void getParameterName (VstInt32 index, char* text);
+
+ virtual void setSampleRate (float sampleRate);
+ virtual void setBlockSize (VstInt32 blockSize);
+
+ virtual bool getOutputProperties (VstInt32 index, VstPinProperties* properties);
+
+ virtual bool getEffectName (char* name);
+ virtual bool getVendorString (char* text);
+ virtual bool getProductString (char* text);
+ virtual VstInt32 getVendorVersion ();
+ virtual VstInt32 canDo (char* text);
+
+ virtual VstInt32 getNumMidiInputChannels ();
+ virtual VstInt32 getNumMidiOutputChannels ();
+
+ virtual VstInt32 getMidiProgramName (VstInt32 channel, MidiProgramName* midiProgramName);
+ virtual VstInt32 getCurrentMidiProgram (VstInt32 channel, MidiProgramName* currentProgram);
+ virtual VstInt32 getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* category);
+ virtual bool hasMidiProgramsChanged (VstInt32 channel);
+ virtual bool getMidiKeyName (VstInt32 channel, MidiKeyName* keyName);
+
+private:
+ float fWaveform1;
+ float fFreq1;
+ float fVolume1;
+ float fWaveform2;
+ float fFreq2;
+ float fVolume2;
+ float fVolume;
+ float fPhase1, fPhase2;
+ float fScaler;
+
+ VstXSynthProgram* programs;
+ VstInt32 channelPrograms[16];
+
+ VstInt32 currentNote;
+ VstInt32 currentVelocity;
+ VstInt32 currentDelta;
+ bool noteIsOn;
+
+ void initProcess ();
+ void noteOn (VstInt32 note, VstInt32 velocity, VstInt32 delta);
+ void noteOff ();
+ void fillProgram (VstInt32 channel, VstInt32 prg, MidiProgramName* mpn);
+};
+
+#endif
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynthproc.cpp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynthproc.cpp
new file mode 100644
index 0000000..61debac
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynthproc.cpp
@@ -0,0 +1,178 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/11/13 09:08:27 $
+//
+// Category : VST 2.x SDK Samples
+// Filename : vstxsynthproc.cpp
+// Created by : Steinberg Media Technologies
+// Description : Example VstXSynth
+//
+// A simple 2 oscillators test 'synth',
+// Each oscillator has waveform, frequency, and volume
+//
+// *very* basic monophonic 'synth' example. you should not attempt to use this
+// example 'algorithm' to start a serious virtual instrument; it is intended to demonstrate
+// how VstEvents ('MIDI') are handled, but not how a virtual analog synth works.
+// there are numerous much better examples on the web which show how to deal with
+// bandlimited waveforms etc.
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include "vstxsynth.h"
+
+enum
+{
+ kNumFrequencies = 128, // 128 midi notes
+ kWaveSize = 4096 // samples (must be power of 2 here)
+};
+
+const double midiScaler = (1. / 127.);
+static float sawtooth[kWaveSize];
+static float pulse[kWaveSize];
+static float freqtab[kNumFrequencies];
+
+//-----------------------------------------------------------------------------------------
+// VstXSynth
+//-----------------------------------------------------------------------------------------
+void VstXSynth::setSampleRate (float sampleRate)
+{
+ AudioEffectX::setSampleRate (sampleRate);
+ fScaler = (float)((double)kWaveSize / (double)sampleRate);
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::setBlockSize (VstInt32 blockSize)
+{
+ AudioEffectX::setBlockSize (blockSize);
+ // you may need to have to do something here...
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::initProcess ()
+{
+ fPhase1 = fPhase2 = 0.f;
+ fScaler = (float)((double)kWaveSize / 44100.); // we don't know the sample rate yet
+ noteIsOn = false;
+ currentDelta = currentNote = currentDelta = 0;
+ VstInt32 i;
+
+ // make waveforms
+ VstInt32 wh = kWaveSize / 4; // 1:3 pulse
+ for (i = 0; i < kWaveSize; i++)
+ {
+ sawtooth[i] = (float)(-1. + (2. * ((double)i / (double)kWaveSize)));
+ pulse[i] = (i < wh) ? -1.f : 1.f;
+ }
+
+ // make frequency (Hz) table
+ double k = 1.059463094359; // 12th root of 2
+ double a = 6.875; // a
+ a *= k; // b
+ a *= k; // bb
+ a *= k; // c, frequency of midi note 0
+ for (i = 0; i < kNumFrequencies; i++) // 128 midi notes
+ {
+ freqtab[i] = (float)a;
+ a *= k;
+ }
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames)
+{
+ float* out1 = outputs[0];
+ float* out2 = outputs[1];
+
+ if (noteIsOn)
+ {
+ float baseFreq = freqtab[currentNote & 0x7f] * fScaler;
+ float freq1 = baseFreq + fFreq1; // not really linear...
+ float freq2 = baseFreq + fFreq2;
+ float* wave1 = (fWaveform1 < .5) ? sawtooth : pulse;
+ float* wave2 = (fWaveform2 < .5) ? sawtooth : pulse;
+ float wsf = (float)kWaveSize;
+ float vol = (float)(fVolume * (double)currentVelocity * midiScaler);
+ VstInt32 mask = kWaveSize - 1;
+
+ if (currentDelta > 0)
+ {
+ if (currentDelta >= sampleFrames) // future
+ {
+ currentDelta -= sampleFrames;
+ return;
+ }
+ memset (out1, 0, currentDelta * sizeof (float));
+ memset (out2, 0, currentDelta * sizeof (float));
+ out1 += currentDelta;
+ out2 += currentDelta;
+ sampleFrames -= currentDelta;
+ currentDelta = 0;
+ }
+
+ // loop
+ while (--sampleFrames >= 0)
+ {
+ // this is all very raw, there is no means of interpolation,
+ // and we will certainly get aliasing due to non-bandlimited
+ // waveforms. don't use this for serious projects...
+ (*out1++) = wave1[(VstInt32)fPhase1 & mask] * fVolume1 * vol;
+ (*out2++) = wave2[(VstInt32)fPhase2 & mask] * fVolume2 * vol;
+ fPhase1 += freq1;
+ fPhase2 += freq2;
+ }
+ }
+ else
+ {
+ memset (out1, 0, sampleFrames * sizeof (float));
+ memset (out2, 0, sampleFrames * sizeof (float));
+ }
+}
+
+//-----------------------------------------------------------------------------------------
+VstInt32 VstXSynth::processEvents (VstEvents* ev)
+{
+ for (VstInt32 i = 0; i < ev->numEvents; i++)
+ {
+ if ((ev->events[i])->type != kVstMidiType)
+ continue;
+
+ VstMidiEvent* event = (VstMidiEvent*)ev->events[i];
+ char* midiData = event->midiData;
+ VstInt32 status = midiData[0] & 0xf0; // ignoring channel
+ if (status == 0x90 || status == 0x80) // we only look at notes
+ {
+ VstInt32 note = midiData[1] & 0x7f;
+ VstInt32 velocity = midiData[2] & 0x7f;
+ if (status == 0x80)
+ velocity = 0; // note off by velocity 0
+ if (!velocity && (note == currentNote))
+ noteOff ();
+ else
+ noteOn (note, velocity, event->deltaFrames);
+ }
+ else if (status == 0xb0)
+ {
+ if (midiData[1] == 0x7e || midiData[1] == 0x7b) // all notes off
+ noteOff ();
+ }
+ event++;
+ }
+ return 1;
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::noteOn (VstInt32 note, VstInt32 velocity, VstInt32 delta)
+{
+ currentNote = note;
+ currentVelocity = velocity;
+ currentDelta = delta;
+ noteIsOn = true;
+ fPhase1 = fPhase2 = 0;
+}
+
+//-----------------------------------------------------------------------------------------
+void VstXSynth::noteOff ()
+{
+ noteIsOn = false;
+}
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/win/vstxsynth.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/win/vstxsynth.vcproj
new file mode 100644
index 0000000..28d5914
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/win/vstxsynth.vcproj
@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="vstxsynth"
+ ProjectGUID="{863D9E7E-5322-49C8-89BA-A761DC0EE438}"
+ RootNamespace="vstxsynth"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;VSTXSYNTH_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;VSTXSYNTH_EXPORTS;VST_64BIT_PLATFORM=1;_CRT_SECURE_NO_DEPRECATE=1"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VSTXSYNTH_EXPORTS;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="0"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VSTXSYNTH_EXPORTS;VST_64BIT_PLATFORM=1;_CRT_SECURE_NO_DEPRECATE=1"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ ModuleDefinitionFile="../../win/vstplug.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\source\gmnames.h"
+ >
+ </File>
+ <File
+ RelativePath="..\source\vstxsynth.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\vstxsynth.h"
+ >
+ </File>
+ <File
+ RelativePath="..\resource\vstxsynth.rc"
+ >
+ </File>
+ <File
+ RelativePath="..\resource\vstxsynth.vstxml"
+ >
+ </File>
+ <File
+ RelativePath="..\source\vstxsynthproc.cpp"
+ >
+ </File>
+ <Filter
+ Name="vst2.x"
+ >
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\aeffeditor.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffect.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffectx.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\audioeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\vst2.x\vstplugmain.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Interfaces"
+ >
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffect.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\aeffectx.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj
new file mode 100644
index 0000000..182711b
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="adelay"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug/adelay"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;ADELAY_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/adelay/adelay.pch"
+ AssemblerListingLocation=".\Debug/adelay/"
+ ObjectFile=".\Debug/adelay/"
+ ProgramDataBaseFileName=".\Debug/adelay/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/adelay.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ModuleDefinitionFile="..\win\vstplug.def"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/adelay.pdb"
+ ImportLibrary=".\Debug/adelay.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/adelay.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release/adelay"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;ADELAY_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/adelay/adelay.pch"
+ AssemblerListingLocation=".\Release/adelay/"
+ ObjectFile=".\Release/adelay/"
+ ProgramDataBaseFileName=".\Release/adelay/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/adelay.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ModuleDefinitionFile="..\win\vstplug.def"
+ ProgramDatabaseFile=".\Release/adelay.pdb"
+ ImportLibrary=".\Release/adelay.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/adelay.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Interfaces"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ Filter="">
+ <File
+ RelativePath="..\adelay\adelay.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\adelay\adelay.h">
+ </File>
+ <File
+ RelativePath="..\adelay\adelaymain.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <Filter
+ Name="vst2.x"
+ Filter="">
+ <File
+ RelativePath="..\..\..\source\vst2.x\aeffeditor.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffect.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffectx.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\vstplugmain.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;ADELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="..\win\vstplug.def">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/again.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/again.vcproj
new file mode 100644
index 0000000..77124fe
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/again.vcproj
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="again"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug/again"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;AGAIN_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/again/again.pch"
+ AssemblerListingLocation=".\Debug/again/"
+ ObjectFile=".\Debug/again/"
+ ProgramDataBaseFileName=".\Debug/again/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/again.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ModuleDefinitionFile="..\win\vstplug.def"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/again.pdb"
+ ImportLibrary=".\Debug/again.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/again.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release/again"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;AGAIN_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/again/again.pch"
+ AssemblerListingLocation=".\Release/again/"
+ ObjectFile=".\Release/again/"
+ ProgramDataBaseFileName=".\Release/again/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/again.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ModuleDefinitionFile="..\win\vstplug.def"
+ ProgramDatabaseFile=".\Release/again.pdb"
+ ImportLibrary=".\Release/again.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/again.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Interfaces"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ Filter="">
+ <File
+ RelativePath="..\again\source\again.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;AGAIN_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;AGAIN_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\again\source\again.h">
+ </File>
+ <Filter
+ Name="vst2.x"
+ Filter="">
+ <File
+ RelativePath="..\..\..\source\vst2.x\aeffeditor.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffect.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;AGAIN_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;AGAIN_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffectx.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;AGAIN_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;AGAIN_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\vstplugmain.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;AGAIN_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;AGAIN_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="..\win\vstplug.def">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/minihost.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/minihost.vcproj
new file mode 100644
index 0000000..307aac3
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/minihost.vcproj
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="minihost"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release/minihost"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="4"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/minihost/minihost.pch"
+ AssemblerListingLocation=".\Release/minihost/"
+ ObjectFile=".\Release/minihost/"
+ ProgramDataBaseFileName=".\Release/minihost/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/minihost.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/minihost.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/minihost.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug/minihost"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/minihost/minihost.pch"
+ AssemblerListingLocation=".\Debug/minihost/"
+ ObjectFile=".\Debug/minihost/"
+ ProgramDataBaseFileName=".\Debug/minihost/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/minihost.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/minihost.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/minihost.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Interfaces"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ Filter="">
+ <File
+ RelativePath="..\minihost\source\minieditor.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\minihost\source\minihost.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/surrounddelay.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/surrounddelay.vcproj
new file mode 100644
index 0000000..53f21aa
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/surrounddelay.vcproj
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="surrounddelay"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug/surrounddelay"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../..,..\..\..\vstgui,..\..\..\..\public.sdk\source\vst2.x"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SURROUNDDELAY_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/surrounddelay/surrounddelay.pch"
+ AssemblerListingLocation=".\Debug/surrounddelay/"
+ ObjectFile=".\Debug/surrounddelay/"
+ ProgramDataBaseFileName=".\Debug/surrounddelay/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/surrounddelay.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ModuleDefinitionFile="..\win\vstplug.def"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/surrounddelay.pdb"
+ ImportLibrary=".\Debug/surrounddelay.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/surrounddelay.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release/surrounddelay"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../..,..\..\..\vstgui,..\..\..\..\public.sdk\source\vst2.x"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SURROUNDDELAY_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/surrounddelay/surrounddelay.pch"
+ AssemblerListingLocation=".\Release/surrounddelay/"
+ ObjectFile=".\Release/surrounddelay/"
+ ProgramDataBaseFileName=".\Release/surrounddelay/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/surrounddelay.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ModuleDefinitionFile="..\win\vstplug.def"
+ ProgramDatabaseFile=".\Release/surrounddelay.pdb"
+ ImportLibrary=".\Release/surrounddelay.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/surrounddelay.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Interfaces"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ Filter="">
+ <File
+ RelativePath="..\adelay\adelay.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\adelay\adelay.h">
+ </File>
+ <File
+ RelativePath="..\adelay\editor\sdeditor.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\adelay\editor\sdeditor.h">
+ </File>
+ <File
+ RelativePath="..\adelay\surrounddelay.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\adelay\surrounddelay.h">
+ </File>
+ <Filter
+ Name="vst2.x"
+ Filter="">
+ <File
+ RelativePath="..\..\..\source\vst2.x\aeffeditor.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffect.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffectx.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\vstplugmain.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="vstgui"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\vstgui.sf\vstgui\aeffguieditor.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\..\vstgui.sf\vstgui\aeffguieditor.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\vstgui.sf\vstgui\vstcontrols.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\..\vstgui.sf\vstgui\vstcontrols.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\vstgui.sf\vstgui\vstgui.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SURROUNDDELAY_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\..\vstgui.sf\vstgui\vstgui.h">
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="..\adelay\editor\resources\surrounddelay.rc">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions=""
+ AdditionalIncludeDirectories="\vstsdk2.4\public.sdk\samples\vst2.x\adelay\editor\resources"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions=""
+ AdditionalIncludeDirectories="\vstsdk2.4\public.sdk\samples\vst2.x\adelay\editor\resources"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\win\vstplug.def">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/vstxsynth.vcproj b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/vstxsynth.vcproj
new file mode 100644
index 0000000..df11232
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003/vstxsynth.vcproj
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="vstxsynth"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug/vstxsynth"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;VSTXSYNTH_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/vstxsynth/vstxsynth.pch"
+ AssemblerListingLocation=".\Debug/vstxsynth/"
+ ObjectFile=".\Debug/vstxsynth/"
+ ProgramDataBaseFileName=".\Debug/vstxsynth/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/vstxsynth.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ModuleDefinitionFile="..\win\vstplug.def"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/vstxsynth.pdb"
+ ImportLibrary=".\Debug/vstxsynth.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/vstxsynth.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release/vstxynth"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VSTXSYNTH_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/vstxynth/vstxsynth.pch"
+ AssemblerListingLocation=".\Release/vstxynth/"
+ ObjectFile=".\Release/vstxynth/"
+ ProgramDataBaseFileName=".\Release/vstxynth/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/vstxsynth.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ModuleDefinitionFile="..\win\vstplug.def"
+ ProgramDatabaseFile=".\Release/vstxsynth.pdb"
+ ImportLibrary=".\Release/vstxsynth.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/vstxsynth.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1031"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Interfaces"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\aeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Source Files"
+ Filter="">
+ <File
+ RelativePath="..\vstxsynth\source\gmnames.h">
+ </File>
+ <File
+ RelativePath="..\vstxsynth\source\vstxsynth.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\vstxsynth\source\vstxsynth.h">
+ </File>
+ <File
+ RelativePath="..\vstxsynth\source\vstxsynthproc.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <Filter
+ Name="vst2.x"
+ Filter="">
+ <File
+ RelativePath="..\..\..\source\vst2.x\aeffeditor.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffect.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffect.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffectx.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\audioeffectx.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\vst2.x\vstplugmain.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;VSTXSYNTH_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="..\win\vstplug.def">
+ </File>
+ <File
+ RelativePath="..\vstxsynth\resource\vstxsynth.rc">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions=""
+ AdditionalIncludeDirectories="\vstsdk2.4\public.sdk\samples\vst2.x\vstxsynth\resource"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions=""
+ AdditionalIncludeDirectories="\vstsdk2.4\public.sdk\samples\vst2.x\vstxsynth\resource"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\vstxsynth\resource\vstxsynth.vstxml">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/adelay.dsp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/adelay.dsp
new file mode 100644
index 0000000..95507b9
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/adelay.dsp
@@ -0,0 +1,155 @@
+# Microsoft Developer Studio Project File - Name="adelay" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=adelay - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "adelay.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "adelay.mak" CFG="adelay - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "adelay - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "adelay - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "adelay - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/adelay"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ADELAY_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ADELAY_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+
+!ELSEIF "$(CFG)" == "adelay - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "adelay___Win32_Debug"
+# PROP BASE Intermediate_Dir "adelay___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/adelay"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ADELAY_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ADELAY_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "adelay - Win32 Release"
+# Name "adelay - Win32 Debug"
+# Begin Group "Interfaces"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h
+# End Source File
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Group "vst2.x"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\aeffeditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffect.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffectx.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\vstplugmain.cpp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\adelay\adelay.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\adelay\adelay.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\adelay\adelaymain.cpp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\win\vstplug.def
+# End Source File
+# End Target
+# End Project
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/again.dsp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/again.dsp
new file mode 100644
index 0000000..cbd1cf5
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/again.dsp
@@ -0,0 +1,151 @@
+# Microsoft Developer Studio Project File - Name="again" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=again - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "again.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "again.mak" CFG="again - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "again - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "again - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "again - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/again"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AGAIN_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AGAIN_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+
+!ELSEIF "$(CFG)" == "again - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/again"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AGAIN_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AGAIN_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "again - Win32 Release"
+# Name "again - Win32 Debug"
+# Begin Group "Interfaces"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h
+# End Source File
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Group "vst2.x"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\aeffeditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffect.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffectx.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\vstplugmain.cpp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\again\source\again.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\again\source\again.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\win\vstplug.def
+# End Source File
+# End Target
+# End Project
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/minihost.dsp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/minihost.dsp
new file mode 100644
index 0000000..826795d
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/minihost.dsp
@@ -0,0 +1,114 @@
+# Microsoft Developer Studio Project File - Name="minihost" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=minihost - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "minihost.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "minihost.mak" CFG="minihost - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "minihost - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "minihost - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "minihost - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/minihost"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "minihost - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "minihost___Win32_Debug"
+# PROP BASE Intermediate_Dir "minihost___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/minihost"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "minihost - Win32 Release"
+# Name "minihost - Win32 Debug"
+# Begin Group "Interfaces"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h
+# End Source File
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\minihost\source\minieditor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\minihost\source\minihost.cpp
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/samples.dsw b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/samples.dsw
new file mode 100644
index 0000000..0d076af
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/samples.dsw
@@ -0,0 +1,89 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "adelay"=.\adelay.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "again"=.\again.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "drawtest"=..\..\..\..\VSTGUI.SF\DRAWTEST\WIN.VC6\drawtest.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "minihost"=.\minihost.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "surrounddelay"=.\surrounddelay.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "vstxsynth"=.\vstxsynth.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/surrounddelay.dsp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/surrounddelay.dsp
new file mode 100644
index 0000000..bfbd7e8
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/surrounddelay.dsp
@@ -0,0 +1,199 @@
+# Microsoft Developer Studio Project File - Name="surrounddelay" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=surrounddelay - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "surrounddelay.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "surrounddelay.mak" CFG="surrounddelay - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "surrounddelay - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "surrounddelay - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "surrounddelay - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/surrounddelay"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SURROUNDDELAY_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../.." /I "..\..\..\vstgui" /I "..\..\..\..\public.sdk\source\vst2.x" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SURROUNDDELAY_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+
+!ELSEIF "$(CFG)" == "surrounddelay - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "surrounddelay___Win32_Debug"
+# PROP BASE Intermediate_Dir "surrounddelay___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/surrounddelay"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SURROUNDDELAY_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../.." /I "..\..\..\vstgui" /I "..\..\..\..\public.sdk\source\vst2.x" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SURROUNDDELAY_EXPORTS" /FR /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "surrounddelay - Win32 Release"
+# Name "surrounddelay - Win32 Debug"
+# Begin Group "Interfaces"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h
+# End Source File
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Group "vst2.x"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\aeffeditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffect.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffectx.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\vstplugmain.cpp
+# End Source File
+# End Group
+# Begin Group "vstgui"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\..\vstgui.sf\vstgui\aeffguieditor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\vstgui.sf\vstgui\aeffguieditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\vstgui.sf\vstgui\vstcontrols.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\vstgui.sf\vstgui\vstcontrols.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\vstgui.sf\vstgui\vstgui.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\vstgui.sf\vstgui\vstgui.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\adelay\adelay.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\adelay\adelay.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\adelay\editor\sdeditor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\adelay\editor\sdeditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\adelay\surrounddelay.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\adelay\surrounddelay.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\adelay\editor\resources\surrounddelay.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\win\vstplug.def
+# End Source File
+# End Target
+# End Project
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp
new file mode 100644
index 0000000..bc4c380
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp
@@ -0,0 +1,167 @@
+# Microsoft Developer Studio Project File - Name="vstxsynth" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=vstxsynth - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "vstxsynth.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "vstxsynth.mak" CFG="vstxsynth - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "vstxsynth - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "vstxsynth - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "vstxsynth - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/vstxynth"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VSTXSYNTH_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VSTXSYNTH_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+
+!ELSEIF "$(CFG)" == "vstxsynth - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "vstxsynth___Win32_Debug"
+# PROP BASE Intermediate_Dir "vstxsynth___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/vstxsynth"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VSTXSYNTH_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VSTXSYNTH_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "vstxsynth - Win32 Release"
+# Name "vstxsynth - Win32 Debug"
+# Begin Group "Interfaces"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h
+# End Source File
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Group "vst2.x"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\aeffeditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffect.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffectx.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\audioeffectx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\vst2.x\vstplugmain.cpp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\vstxsynth\source\gmnames.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\vstxsynth\source\vstxsynth.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\vstxsynth\source\vstxsynth.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\vstxsynth\source\vstxsynthproc.cpp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\win\vstplug.def
+# End Source File
+# Begin Source File
+
+SOURCE=..\vstxsynth\resource\vstxsynth.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\vstxsynth\resource\vstxsynth.vstxml
+# End Source File
+# End Target
+# End Project
diff --git a/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win/vstplug.def b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win/vstplug.def
new file mode 100644
index 0000000..081bdbd
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/win/vstplug.def
@@ -0,0 +1,3 @@
+EXPORTS
+ VSTPluginMain
+ main=VSTPluginMain \ No newline at end of file
diff --git a/vendor/vstsdk2.4/public.sdk/source/vst2.x/aeffeditor.h b/vendor/vstsdk2.4/public.sdk/source/vst2.x/aeffeditor.h
new file mode 100644
index 0000000..d23630a
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/source/vst2.x/aeffeditor.h
@@ -0,0 +1,61 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/01/12 09:05:31 $
+//
+// Category : VST 2.x Classes
+// Filename : aeffeditor.h
+// Created by : Steinberg Media Technologies
+// Description : Editor Class for VST Plug-Ins
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __aeffeditor__
+#define __aeffeditor__
+
+#include "audioeffectx.h"
+
+//-------------------------------------------------------------------------------------------------------
+/** VST Effect Editor class. */
+//-------------------------------------------------------------------------------------------------------
+class AEffEditor
+{
+public:
+//-------------------------------------------------------------------------------------------------------
+ AEffEditor (AudioEffect* effect = 0) ///< Editor class constructor. Requires pointer to associated effect instance.
+ : effect (effect)
+ , systemWindow (0)
+ {}
+
+ virtual ~AEffEditor () ///< Editor class destructor.
+ {}
+
+ virtual AudioEffect* getEffect () { return effect; } ///< Returns associated effect instance
+ virtual bool getRect (ERect** rect) { *rect = 0; return false; } ///< Query editor size as #ERect
+ virtual bool open (void* ptr) { systemWindow = ptr; return 0; } ///< Open editor, pointer to parent windows is platform-dependent (HWND on Windows, WindowRef on Mac).
+ virtual void close () { systemWindow = 0; } ///< Close editor (detach from parent window)
+ virtual bool isOpen () { return systemWindow != 0; } ///< Returns true if editor is currently open
+ virtual void idle () {} ///< Idle call supplied by Host application
+
+#if TARGET_API_MAC_CARBON
+ virtual void DECLARE_VST_DEPRECATED (draw) (ERect* rect) {}
+ virtual VstInt32 DECLARE_VST_DEPRECATED (mouse) (VstInt32 x, VstInt32 y) { return 0; }
+ virtual VstInt32 DECLARE_VST_DEPRECATED (key) (VstInt32 keyCode) { return 0; }
+ virtual void DECLARE_VST_DEPRECATED (top) () {}
+ virtual void DECLARE_VST_DEPRECATED (sleep) () {}
+#endif
+
+#if VST_2_1_EXTENSIONS
+ virtual bool onKeyDown (VstKeyCode& keyCode) { return false; } ///< Receive key down event. Return true only if key was really used!
+ virtual bool onKeyUp (VstKeyCode& keyCode) { return false; } ///< Receive key up event. Return true only if key was really used!
+ virtual bool onWheel (float distance) { return false; } ///< Handle mouse wheel event, distance is positive or negative to indicate wheel direction.
+ virtual bool setKnobMode (VstInt32 val) { return false; } ///< Set knob mode (if supported by Host). See CKnobMode in VSTGUI.
+#endif
+
+//-------------------------------------------------------------------------------------------------------
+protected:
+ AudioEffect* effect; ///< associated effect instance
+ void* systemWindow; ///< platform-dependent parent window (HWND or WindowRef)
+};
+
+#endif // __aeffeditor__
diff --git a/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp b/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp
new file mode 100644
index 0000000..916ad7f
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp
@@ -0,0 +1,703 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/06/07 08:22:01 $
+//
+// Category : VST 2.x Classes
+// Filename : audioeffect.cpp
+// Created by : Steinberg Media Technologies
+// Description : Class AudioEffect (VST 1.0)
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include "audioeffect.h"
+#include "aeffeditor.h"
+
+#include <stddef.h>
+#include <stdio.h>
+#include <math.h>
+
+//-------------------------------------------------------------------------------------------------------
+VstIntPtr AudioEffect::dispatchEffectClass (AEffect* e, VstInt32 opCode, VstInt32 index, VstIntPtr value, void* ptr, float opt)
+{
+ AudioEffect* ae = (AudioEffect*)(e->object);
+
+ if (opCode == effClose)
+ {
+ ae->dispatcher (opCode, index, value, ptr, opt);
+ delete ae;
+ return 1;
+ }
+
+ return ae->dispatcher (opCode, index, value, ptr, opt);
+}
+
+//-------------------------------------------------------------------------------------------------------
+float AudioEffect::getParameterClass (AEffect* e, VstInt32 index)
+{
+ AudioEffect* ae = (AudioEffect*)(e->object);
+ return ae->getParameter (index);
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::setParameterClass (AEffect* e, VstInt32 index, float value)
+{
+ AudioEffect* ae = (AudioEffect*)(e->object);
+ ae->setParameter (index, value);
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::DECLARE_VST_DEPRECATED (processClass) (AEffect* e, float** inputs, float** outputs, VstInt32 sampleFrames)
+{
+ AudioEffect* ae = (AudioEffect*)(e->object);
+ ae->DECLARE_VST_DEPRECATED (process) (inputs, outputs, sampleFrames);
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::processClassReplacing (AEffect* e, float** inputs, float** outputs, VstInt32 sampleFrames)
+{
+ AudioEffect* ae = (AudioEffect*)(e->object);
+ ae->processReplacing (inputs, outputs, sampleFrames);
+}
+
+//-------------------------------------------------------------------------------------------------------
+#if VST_2_4_EXTENSIONS
+void AudioEffect::processClassDoubleReplacing (AEffect* e, double** inputs, double** outputs, VstInt32 sampleFrames)
+{
+ AudioEffect* ae = (AudioEffect*)(e->object);
+ ae->processDoubleReplacing (inputs, outputs, sampleFrames);
+}
+#endif
+
+//-------------------------------------------------------------------------------------------------------
+// Class AudioEffect Implementation
+//-------------------------------------------------------------------------------------------------------
+/*!
+ The constructor of your class is passed a parameter of the type \e audioMasterCallback. The actual
+ mechanism in which your class gets constructed is not important right now. Effectively your class is
+ constructed by the hosting application, which passes an object of type \e audioMasterCallback that
+ handles the interaction with the plug-in. You pass this on to the base class' constructor and then
+ can forget about it.
+
+ \param audioMaster Passed by the Host and handles interaction
+ \param numPrograms Pass the number of programs the plug-in provides
+ \param numParams Pass the number of parameters the plug-in provides
+
+\code
+MyPlug::MyPlug (audioMasterCallback audioMaster)
+: AudioEffectX (audioMaster, 1, 1) // 1 program, 1 parameter only
+{
+ setNumInputs (2); // stereo in
+ setNumOutputs (2); // stereo out
+ setUniqueID ('MyPl'); // you must change this for other plug-ins!
+ canProcessReplacing (); // supports replacing mode
+}
+\endcode
+
+ \sa setNumInputs, setNumOutputs, setUniqueID, canProcessReplacing
+*/
+AudioEffect::AudioEffect (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams)
+: audioMaster (audioMaster)
+, editor (0)
+, sampleRate (44100.f)
+, blockSize (1024)
+, numPrograms (numPrograms)
+, numParams (numParams)
+, curProgram (0)
+{
+ memset (&cEffect, 0, sizeof (cEffect));
+
+ cEffect.magic = kEffectMagic;
+ cEffect.dispatcher = dispatchEffectClass;
+ cEffect.DECLARE_VST_DEPRECATED (process) = DECLARE_VST_DEPRECATED (processClass);
+ cEffect.setParameter = setParameterClass;
+ cEffect.getParameter = getParameterClass;
+ cEffect.numPrograms = numPrograms;
+ cEffect.numParams = numParams;
+ cEffect.numInputs = 1; // mono input
+ cEffect.numOutputs = 2; // stereo output
+ cEffect.DECLARE_VST_DEPRECATED (ioRatio) = 1.f;
+ cEffect.object = this;
+ cEffect.uniqueID = CCONST ('N', 'o', 'E', 'f');
+ cEffect.version = 1;
+ cEffect.processReplacing = processClassReplacing;
+
+#if VST_2_4_EXTENSIONS
+ canProcessReplacing (); // mandatory in VST 2.4!
+ cEffect.processDoubleReplacing = processClassDoubleReplacing;
+#endif
+}
+
+//-------------------------------------------------------------------------------------------------------
+AudioEffect::~AudioEffect ()
+{
+ if (editor)
+ delete editor;
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::setEditor (AEffEditor* editor)
+{
+ this->editor = editor;
+ if (editor)
+ cEffect.flags |= effFlagsHasEditor;
+ else
+ cEffect.flags &= ~effFlagsHasEditor;
+}
+
+//-------------------------------------------------------------------------------------------------------
+VstIntPtr AudioEffect::dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt)
+{
+ VstIntPtr v = 0;
+
+ switch (opcode)
+ {
+ case effOpen: open (); break;
+ case effClose: close (); break;
+ case effSetProgram: if (value < numPrograms) setProgram ((VstInt32)value); break;
+ case effGetProgram: v = getProgram (); break;
+ case effSetProgramName: setProgramName ((char*)ptr); break;
+ case effGetProgramName: getProgramName ((char*)ptr); break;
+ case effGetParamLabel: getParameterLabel (index, (char*)ptr); break;
+ case effGetParamDisplay: getParameterDisplay (index, (char*)ptr); break;
+ case effGetParamName: getParameterName (index, (char*)ptr); break;
+
+ case effSetSampleRate: setSampleRate (opt); break;
+ case effSetBlockSize: setBlockSize ((VstInt32)value); break;
+ case effMainsChanged: if (!value) suspend (); else resume (); break;
+ #if !VST_FORCE_DEPRECATED
+ case effGetVu: v = (VstIntPtr)(getVu () * 32767.); break;
+ #endif
+
+ //---Editor------------
+ case effEditGetRect: if (editor) v = editor->getRect ((ERect**)ptr) ? 1 : 0; break;
+ case effEditOpen: if (editor) v = editor->open (ptr) ? 1 : 0; break;
+ case effEditClose: if (editor) editor->close (); break;
+ case effEditIdle: if (editor) editor->idle (); break;
+
+ #if (TARGET_API_MAC_CARBON && !VST_FORCE_DEPRECATED)
+ case effEditDraw: if (editor) editor->draw ((ERect*)ptr); break;
+ case effEditMouse: if (editor) v = editor->mouse (index, value); break;
+ case effEditKey: if (editor) v = editor->key (value); break;
+ case effEditTop: if (editor) editor->top (); break;
+ case effEditSleep: if (editor) editor->sleep (); break;
+ #endif
+
+ case DECLARE_VST_DEPRECATED (effIdentify): v = CCONST ('N', 'v', 'E', 'f'); break;
+
+ //---Persistence-------
+ case effGetChunk: v = getChunk ((void**)ptr, index ? true : false); break;
+ case effSetChunk: v = setChunk (ptr, (VstInt32)value, index ? true : false); break;
+ }
+ return v;
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ Use to ask for the Host's version
+ \return The Host's version
+*/
+VstInt32 AudioEffect::getMasterVersion ()
+{
+ VstInt32 version = 1;
+ if (audioMaster)
+ {
+ version = (VstInt32)audioMaster (&cEffect, audioMasterVersion, 0, 0, 0, 0);
+ if (!version) // old
+ version = 1;
+ }
+ return version;
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \sa AudioEffectX::getNextShellPlugin
+*/
+VstInt32 AudioEffect::getCurrentUniqueId ()
+{
+ VstInt32 id = 0;
+ if (audioMaster)
+ id = (VstInt32)audioMaster (&cEffect, audioMasterCurrentId, 0, 0, 0, 0);
+ return id;
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ Give idle time to Host application, e.g. if plug-in editor is doing mouse tracking in a modal loop.
+*/
+void AudioEffect::masterIdle ()
+{
+ if (audioMaster)
+ audioMaster (&cEffect, audioMasterIdle, 0, 0, 0, 0);
+}
+
+//-------------------------------------------------------------------------------------------------------
+bool AudioEffect::DECLARE_VST_DEPRECATED (isInputConnected) (VstInt32 input)
+{
+ VstInt32 ret = 0;
+ if (audioMaster)
+ ret = (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterPinConnected), input, 0, 0, 0);
+ return ret ? false : true; // return value is 0 for true
+}
+
+//-------------------------------------------------------------------------------------------------------
+bool AudioEffect::DECLARE_VST_DEPRECATED (isOutputConnected) (VstInt32 output)
+{
+ VstInt32 ret = 0;
+ if (audioMaster)
+ ret = (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterPinConnected), output, 1, 0, 0);
+ return ret ? false : true; // return value is 0 for true
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \param index parameter index
+ \param float parameter value
+
+ \note An important thing to notice is that if the user changes a parameter in your editor, which is
+ out of the Host's control if you are not using the default string based interface, you should
+ call setParameterAutomated (). This ensures that the Host is notified of the parameter change, which
+ allows it to record these changes for automation.
+
+ \sa setParameter
+*/
+void AudioEffect::setParameterAutomated (VstInt32 index, float value)
+{
+ setParameter (index, value);
+ if (audioMaster)
+ audioMaster (&cEffect, audioMasterAutomate, index, 0, 0, value); // value is in opt
+}
+
+//-------------------------------------------------------------------------------------------------------
+// Flags
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::DECLARE_VST_DEPRECATED (hasVu) (bool state)
+{
+ if (state)
+ cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsHasVu);
+ else
+ cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsHasVu);
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::DECLARE_VST_DEPRECATED (hasClip) (bool state)
+{
+ if (state)
+ cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsHasClip);
+ else
+ cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsHasClip);
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::DECLARE_VST_DEPRECATED (canMono) (bool state)
+{
+ if (state)
+ cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsCanMono);
+ else
+ cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsCanMono);
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \param state Set to \e true if supported
+
+ \note Needs to be called in the plug-in's constructor
+*/
+void AudioEffect::canProcessReplacing (bool state)
+{
+ if (state)
+ cEffect.flags |= effFlagsCanReplacing;
+ else
+ cEffect.flags &= ~effFlagsCanReplacing;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \param state Set to \e true if supported
+
+ \note Needs to be called in the plug-in's constructor
+*/
+#if VST_2_4_EXTENSIONS
+void AudioEffect::canDoubleReplacing (bool state)
+{
+ if (state)
+ cEffect.flags |= effFlagsCanDoubleReplacing;
+ else
+ cEffect.flags &= ~effFlagsCanDoubleReplacing;
+}
+#endif
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \param state Set \e true if programs are chunks
+
+ \note Needs to be called in the plug-in's constructor
+*/
+void AudioEffect::programsAreChunks (bool state)
+{
+ if (state)
+ cEffect.flags |= effFlagsProgramChunks;
+ else
+ cEffect.flags &= ~effFlagsProgramChunks;
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::DECLARE_VST_DEPRECATED (setRealtimeQualities) (VstInt32 qualities)
+{
+ cEffect.DECLARE_VST_DEPRECATED (realQualities) = qualities;
+}
+
+//-------------------------------------------------------------------------------------------------------
+void AudioEffect::DECLARE_VST_DEPRECATED (setOfflineQualities) (VstInt32 qualities)
+{
+ cEffect.DECLARE_VST_DEPRECATED (offQualities) = qualities;
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ Use to report the Plug-in's latency (Group Delay)
+
+ \param delay Plug-ins delay in samples
+*/
+void AudioEffect::setInitialDelay (VstInt32 delay)
+{
+ cEffect.initialDelay = delay;
+}
+
+//-------------------------------------------------------------------------------------------------------
+// Strings Conversion
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \param value Value to convert
+ \param text String up to length char
+ \param maxLen Maximal length of the string
+*/
+void AudioEffect::dB2string (float value, char* text, VstInt32 maxLen)
+{
+ if (value <= 0)
+ vst_strncpy (text, "-oo", maxLen);
+ else
+ float2string ((float)(20. * log10 (value)), text, maxLen);
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \param samples Number of samples
+ \param text String up to length char
+ \param maxLen Maximal length of the string
+*/
+void AudioEffect::Hz2string (float samples, char* text, VstInt32 maxLen)
+{
+ float sampleRate = getSampleRate ();
+ if (!samples)
+ float2string (0, text, maxLen);
+ else
+ float2string (sampleRate / samples, text, maxLen);
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \param samples Number of samples
+ \param text String up to length char
+ \param maxLen Maximal length of the string
+*/
+void AudioEffect::ms2string (float samples, char* text, VstInt32 maxLen)
+{
+ float2string ((float)(samples * 1000. / getSampleRate ()), text, maxLen);
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \param value Value to convert
+ \param text String up to length char
+ \param maxLen Maximal length of the string
+*/
+void AudioEffect::float2string (float value, char* text, VstInt32 maxLen)
+{
+ VstInt32 c = 0, neg = 0;
+ char string[32];
+ char* s;
+ double v, integ, i10, mantissa, m10, ten = 10.;
+
+ v = (double)value;
+ if (v < 0)
+ {
+ neg = 1;
+ value = -value;
+ v = -v;
+ c++;
+ if (v > 9999999.)
+ {
+ vst_strncpy (string, "Huge!", 31);
+ return;
+ }
+ }
+ else if (v > 99999999.)
+ {
+ vst_strncpy (string, "Huge!", 31);
+ return;
+ }
+
+ s = string + 31;
+ *s-- = 0;
+ *s-- = '.';
+ c++;
+
+ integ = floor (v);
+ i10 = fmod (integ, ten);
+ *s-- = (char)((VstInt32)i10 + '0');
+ integ /= ten;
+ c++;
+ while (integ >= 1. && c < 8)
+ {
+ i10 = fmod (integ, ten);
+ *s-- = (char)((VstInt32)i10 + '0');
+ integ /= ten;
+ c++;
+ }
+ if (neg)
+ *s-- = '-';
+ vst_strncpy (text, s + 1, maxLen);
+ if (c >= 8)
+ return;
+
+ s = string + 31;
+ *s-- = 0;
+ mantissa = fmod (v, 1.);
+ mantissa *= pow (ten, (double)(8 - c));
+ while (c < 8)
+ {
+ if (mantissa <= 0)
+ *s-- = '0';
+ else
+ {
+ m10 = fmod (mantissa, ten);
+ *s-- = (char)((VstInt32)m10 + '0');
+ mantissa /= 10.;
+ }
+ c++;
+ }
+ vst_strncat (text, s + 1, maxLen);
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \param value Value to convert
+ \param text String up to length char
+ \param maxLen Maximal length of the string
+*/
+void AudioEffect::int2string (VstInt32 value, char* text, VstInt32 maxLen)
+{
+ if (value >= 100000000)
+ {
+ vst_strncpy (text, "Huge!", maxLen);
+ return;
+ }
+
+ if (value < 0)
+ {
+ vst_strncpy (text, "-", maxLen);
+ value = -value;
+ }
+ else
+ vst_strncpy (text, "", maxLen);
+
+ bool state = false;
+ for (VstInt32 div = 100000000; div >= 1; div /= 10)
+ {
+ VstInt32 digit = value / div;
+ value -= digit * div;
+ if (state || digit > 0)
+ {
+ char temp[2] = {'0' + (char)digit, '\0'};
+ vst_strncat (text, temp, maxLen);
+ state = true;
+ }
+ }
+}
+//-------------------------------------------------------------------------------------------------------
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames)
+
+ This process method must be provided. It takes input data, applies its pocessing algorithm, and then puts the
+ result to the output by overwriting the output buffer.
+
+ \param inputs An array of pointers to the data
+ \param outputs An array of pointers to where the data can be written to
+ \param sampleFrames Number of sample frames to process
+
+ \warning Never call any Mac OS 9 functions (or other functions which call into the OS) inside your
+ audio process function! This will crash the system when your plug-in is run in MP (multiprocessor) mode.
+ If you must call into the OS, you must use MPRemoteCall () (see Apples' documentation), or
+ explicitly use functions which are documented by Apple to be MP safe. On Mac OS X read the system
+ header files to be sure that you only call thread safe functions.
+
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::setBlockSize (VstInt32 blockSize)
+
+ This is called by the Host, and tells the plug-in that the maximum block size passed to
+ processReplacing() will be \e blockSize.
+
+ \param blockSize Maximum number of sample frames
+
+ \warning You <b>must</b> process <b>exactly</b> \e sampleFrames number of samples in inside processReplacing, not more!
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::setParameter (VstInt32 index, float value)
+
+ Parameters are the individual parameter settings the user can adjust. A VST Host can automate these
+ parameters. Set parameter \e index to \e value.
+
+ \param index Index of the parameter to change
+ \param value A float value between 0.0 and 1.0 inclusive
+
+ \note Parameter values, like all VST parameters, are declared as floats with an inclusive range of
+ 0.0 to 1.0. How data is presented to the user is merely in the user-interface handling. This is a
+ convention, but still worth regarding. Maybe the VST-Host's automation system depends on this range.
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn float AudioEffect::getParameter (VstInt32 index)
+
+ Return the \e value of parameter \e index
+
+ \param index Index of the parameter
+ \return A float value between 0.0 and 1.0 inclusive
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::getParameterLabel (VstInt32 index, char* label)
+
+ \param index Index of the parameter
+ \param label A string up to 8 char
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::getParameterDisplay (VstInt32 index, char* text)
+
+ \param index Index of the parameter
+ \param text A string up to 8 char
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffect::getProgram ()
+
+ \return Index of the current program
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::setProgram (VstInt32 program)
+
+ \param Program of the current program
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::getParameterName (VstInt32 index, char* text)
+
+ \param index Index of the parameter
+ \param text A string up to 8 char
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::setProgramName (char* name)
+
+ The program name is displayed in the rack, and can be edited by the user.
+
+ \param name A string up to 24 char
+
+ \warning Please be aware that the string lengths supported by the default VST interface are normally
+ limited to 24 characters. If you copy too much data into the buffers provided, you will break the
+ Host application.
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::getProgramName (char* name)
+
+ The program name is displayed in the rack, and can be edited by the user.
+
+ \param name A string up to 24 char
+
+ \warning Please be aware that the string lengths supported by the default VST interface are normally
+ limited to 24 characters. If you copy too much data into the buffers provided, you will break the
+ Host application.
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffect::getChunk (void** data, bool isPreset)
+
+ \param data should point to the newly allocated memory block containg state data. You can savely release it in next suspend/resume call.
+ \param isPreset true when saving a single program, false for all programs
+
+ \note
+ If your plug-in is configured to use chunks (see AudioEffect::programsAreChunks), the Host
+ will ask for a block of memory describing the current plug-in state for saving.
+ To restore the state at a later stage, the same data is passed back to AudioEffect::setChunk.
+ Alternatively, when not using chunk, the Host will simply save all parameter values.
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffect::setChunk (void* data, VstInt32 byteSize, bool isPreset)
+
+ \param data pointer to state data (owned by Host)
+ \param byteSize size of state data
+ \param isPreset true when restoring a single program, false for all programs
+
+ \sa getChunk
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::setNumInputs (VstInt32 inputs)
+
+ This number is fixed at construction time and can't change until the plug-in is destroyed.
+
+ \param inputs The number of inputs
+
+ \sa isInputConnected()
+
+ \note Needs to be called in the plug-in's constructor
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::setNumOutputs (VstInt32 outputs)
+
+ This number is fixed at construction time and can't change until the plug-in is destroyed.
+
+ \param outputs The number of outputs
+
+ \sa isOutputConnected()
+
+ \note Needs to be called in the plug-in's constructor
+*/
+
+//-------------------------------------------------------------------------------------------------------
+/*!
+ \fn void AudioEffect::setUniqueID (VstInt32 iD)
+
+ Must call this! Set the plug-in's unique identifier. The Host uses this to identify the plug-in, for
+ instance when it is loading effect programs and banks. On Steinberg Web Page you can find an UniqueID
+ Database where you can record your UniqueID, it will check if the ID is already used by an another
+ vendor. You can use CCONST('a','b','c','d') (defined in VST 2.0) to be platform independent to
+ initialize an UniqueID.
+
+ \param iD Plug-in's unique ID
+
+ \note Needs to be called in the plug-in's constructor
+*/
diff --git a/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h b/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h
new file mode 100644
index 0000000..7809347
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h
@@ -0,0 +1,177 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/06/06 16:01:34 $
+//
+// Category : VST 2.x Classes
+// Filename : audioeffect.h
+// Created by : Steinberg Media Technologies
+// Description : Class AudioEffect (VST 1.0)
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __audioeffect__
+#define __audioeffect__
+
+#include "pluginterfaces/vst2.x/aeffect.h" // "c" interface
+
+class AEffEditor;
+
+//-------------------------------------------------------------------------------------------------------
+/** VST Effect Base Class (VST 1.0). */
+//-------------------------------------------------------------------------------------------------------
+class AudioEffect
+{
+public:
+//-------------------------------------------------------------------------------------------------------
+ AudioEffect (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams); ///< Create an \e AudioEffect object
+ virtual ~AudioEffect (); ///< Destroy an \e AudioEffect object
+
+ virtual VstIntPtr dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt); ///< Opcodes dispatcher
+
+//-------------------------------------------------------------------------------------------------------
+/// \name State Transitions
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual void open () {} ///< Called when plug-in is initialized
+ virtual void close () {} ///< Called when plug-in will be released
+ virtual void suspend () {} ///< Called when plug-in is switched to off
+ virtual void resume () {} ///< Called when plug-in is switched to on
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Processing
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual void setSampleRate (float sampleRate) { this->sampleRate = sampleRate; } ///< Called when the sample rate changes (always in a suspend state)
+ virtual void setBlockSize (VstInt32 blockSize) { this->blockSize = blockSize; } ///< Called when the Maximun block size changes (always in a suspend state). Note that the sampleFrames in Process Calls could be smaller than this block size, but NOT bigger.
+
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) = 0; ///< Process 32 bit (single precision) floats (always in a resume state)
+
+#if VST_2_4_EXTENSIONS
+ virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames) {} ///< Process 64 bit (double precision) floats (always in a resume state) \sa processReplacing
+#endif // VST_2_4_EXTENSIONS
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Parameters
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual void setParameter (VstInt32 index, float value) {} ///< Called when a parameter changed
+ virtual float getParameter (VstInt32 index) { return 0; } ///< Return the value of the parameter with \e index
+ virtual void setParameterAutomated (VstInt32 index, float value);///< Called after a control has changed in the editor and when the associated parameter should be automated
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Programs and Persistence
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual VstInt32 getProgram () { return curProgram; } ///< Return the index to the current program
+ virtual void setProgram (VstInt32 program) { curProgram = program; } ///< Set the current program to \e program
+
+ virtual void setProgramName (char* name) {} ///< Stuff the name field of the current program with \e name. Limited to #kVstMaxProgNameLen.
+ virtual void getProgramName (char* name) { *name = 0; } ///< Stuff \e name with the name of the current program. Limited to #kVstMaxProgNameLen.
+
+ virtual void getParameterLabel (VstInt32 index, char* label) { *label = 0; } ///< Stuff \e label with the units in which parameter \e index is displayed (i.e. "sec", "dB", "type", etc...). Limited to #kVstMaxParamStrLen.
+ virtual void getParameterDisplay (VstInt32 index, char* text) { *text = 0; } ///< Stuff \e text with a string representation ("0.5", "-3", "PLATE", etc...) of the value of parameter \e index. Limited to #kVstMaxParamStrLen.
+ virtual void getParameterName (VstInt32 index, char* text) { *text = 0; } ///< Stuff \e text with the name ("Time", "Gain", "RoomType", etc...) of parameter \e index. Limited to #kVstMaxParamStrLen.
+
+ virtual VstInt32 getChunk (void** data, bool isPreset = false) { return 0; } ///< Host stores plug-in state. Returns the size in bytes of the chunk (plug-in allocates the data array)
+ virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset = false) { return 0; } ///< Host restores plug-in state
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Internal Setup
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual void setUniqueID (VstInt32 iD) { cEffect.uniqueID = iD; } ///< Must be called to set the plug-ins unique ID!
+ virtual void setNumInputs (VstInt32 inputs) { cEffect.numInputs = inputs; } ///< Set the number of inputs the plug-in will handle. For a plug-in which could change its IO configuration, this number is the maximun available inputs.
+ virtual void setNumOutputs (VstInt32 outputs) { cEffect.numOutputs = outputs; } ///< Set the number of outputs the plug-in will handle. For a plug-in which could change its IO configuration, this number is the maximun available ouputs.
+
+ virtual void canProcessReplacing (bool state = true); ///< Tells that processReplacing() could be used. Mandatory in VST 2.4!
+
+#if VST_2_4_EXTENSIONS
+ virtual void canDoubleReplacing (bool state = true); ///< Tells that processDoubleReplacing() is implemented.
+#endif // VST_2_4_EXTENSIONS
+
+ virtual void programsAreChunks (bool state = true); ///< Program data is handled in formatless chunks (using getChunk-setChunks)
+ virtual void setInitialDelay (VstInt32 delay); ///< Use to report the plug-in's latency (Group Delay)
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Editor
+//-------------------------------------------------------------------------------------------------------
+//@{
+ void setEditor (AEffEditor* editor); ///< Should be called if you want to define your own editor
+ virtual AEffEditor* getEditor () { return editor; } ///< Returns the attached editor
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Inquiry
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual AEffect* getAeffect () { return &cEffect; } ///< Returns the #AEffect structure
+ virtual float getSampleRate () { return sampleRate; } ///< Returns the current sample rate
+ virtual VstInt32 getBlockSize () { return blockSize; } ///< Returns the current Maximum block size
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Host Communication
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual VstInt32 getMasterVersion (); ///< Returns the Host's version (for example 2400 for VST 2.4)
+ virtual VstInt32 getCurrentUniqueId (); ///< Returns current unique identifier when loading shell plug-ins
+ virtual void masterIdle (); ///< Give idle time to Host application
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Tools (helpers)
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual void dB2string (float value, char* text, VstInt32 maxLen); ///< Stuffs \e text with an amplitude on the [0.0, 1.0] scale converted to its value in decibels.
+ virtual void Hz2string (float samples, char* text, VstInt32 maxLen); ///< Stuffs \e text with the frequency in Hertz that has a period of \e samples.
+ virtual void ms2string (float samples, char* text, VstInt32 maxLen); ///< Stuffs \e text with the duration in milliseconds of \e samples frames.
+ virtual void float2string (float value, char* text, VstInt32 maxLen); ///< Stuffs \e text with a string representation on the floating point \e value.
+ virtual void int2string (VstInt32 value, char* text, VstInt32 maxLen); ///< Stuffs \e text with a string representation on the integer \e value.
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+// Deprecated methods
+//-------------------------------------------------------------------------------------------------------
+/// @cond ignore
+ virtual void DECLARE_VST_DEPRECATED (process) (float** inputs, float** outputs, VstInt32 sampleFrames) {}
+ virtual float DECLARE_VST_DEPRECATED (getVu) () { return 0; }
+ virtual void DECLARE_VST_DEPRECATED (hasVu) (bool state = true);
+ virtual void DECLARE_VST_DEPRECATED (hasClip) (bool state = true);
+ virtual void DECLARE_VST_DEPRECATED (canMono) (bool state = true);
+ virtual void DECLARE_VST_DEPRECATED (setRealtimeQualities) (VstInt32 qualities);
+ virtual void DECLARE_VST_DEPRECATED (setOfflineQualities) (VstInt32 qualities);
+ virtual bool DECLARE_VST_DEPRECATED (isInputConnected) (VstInt32 input);
+ virtual bool DECLARE_VST_DEPRECATED (isOutputConnected) (VstInt32 output);
+/// @endcond
+
+//-------------------------------------------------------------------------------------------------------
+protected:
+ audioMasterCallback audioMaster; ///< Host callback
+ AEffEditor* editor; ///< Pointer to the plug-in's editor
+ float sampleRate; ///< Current sample rate
+ VstInt32 blockSize; ///< Maximum block size
+ VstInt32 numPrograms; ///< Number of programs
+ VstInt32 numParams; ///< Number of parameters
+ VstInt32 curProgram; ///< Current program
+ AEffect cEffect; ///< #AEffect object
+
+/// @cond ignore
+ static VstIntPtr dispatchEffectClass (AEffect* e, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt);
+ static float getParameterClass (AEffect* e, VstInt32 index);
+ static void setParameterClass (AEffect* e, VstInt32 index, float value);
+ static void DECLARE_VST_DEPRECATED (processClass) (AEffect* e, float** inputs, float** outputs, VstInt32 sampleFrames);
+ static void processClassReplacing (AEffect* e, float** inputs, float** outputs, VstInt32 sampleFrames);
+
+#if VST_2_4_EXTENSIONS
+ static void processClassDoubleReplacing (AEffect* e, double** inputs, double** outputs, VstInt32 sampleFrames);
+#endif // VST_2_4_EXTENSIONS
+/// @endcond
+};
+
+#endif // __audioeffect__
diff --git a/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp b/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp
new file mode 100644
index 0000000..1f98919
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp
@@ -0,0 +1,1546 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/10/05 14:23:59 $
+//
+// Category : VST 2.x Classes
+// Filename : audioeffectx.cpp
+// Created by : Steinberg Media Technologies
+// Description : Class AudioEffectX extends AudioEffect with new features. You should derive
+// your plug-in from AudioEffectX.
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include "audioeffectx.h"
+#include "aeffeditor.h"
+
+//-------------------------------------------------------------------------------------------------------
+/*! hostCanDos strings Plug-in -> Host */
+namespace HostCanDos
+{
+ const char* canDoSendVstEvents = "sendVstEvents"; ///< Host supports send of Vst events to plug-in
+ const char* canDoSendVstMidiEvent = "sendVstMidiEvent"; ///< Host supports send of MIDI events to plug-in
+ const char* canDoSendVstTimeInfo = "sendVstTimeInfo"; ///< Host supports send of VstTimeInfo to plug-in
+ const char* canDoReceiveVstEvents = "receiveVstEvents"; ///< Host can receive Vst events from plug-in
+ const char* canDoReceiveVstMidiEvent = "receiveVstMidiEvent"; ///< Host can receive MIDI events from plug-in
+ const char* canDoReportConnectionChanges = "reportConnectionChanges"; ///< Host will indicates the plug-in when something change in plug-in´s routing/connections with #suspend/#resume/#setSpeakerArrangement
+ const char* canDoAcceptIOChanges = "acceptIOChanges"; ///< Host supports #ioChanged ()
+ const char* canDoSizeWindow = "sizeWindow"; ///< used by VSTGUI
+ const char* canDoOffline = "offline"; ///< Host supports offline feature
+ const char* canDoOpenFileSelector = "openFileSelector"; ///< Host supports function #openFileSelector ()
+ const char* canDoCloseFileSelector = "closeFileSelector"; ///< Host supports function #closeFileSelector ()
+ const char* canDoStartStopProcess = "startStopProcess"; ///< Host supports functions #startProcess () and #stopProcess ()
+ const char* canDoShellCategory = "shellCategory"; ///< 'shell' handling via uniqueID. If supported by the Host and the Plug-in has the category #kPlugCategShell
+ const char* canDoSendVstMidiEventFlagIsRealtime = "sendVstMidiEventFlagIsRealtime"; ///< Host supports flags for #VstMidiEvent
+}
+
+//-------------------------------------------------------------------------------------------------------
+/*! plugCanDos strings Host -> Plug-in */
+namespace PlugCanDos
+{
+ const char* canDoSendVstEvents = "sendVstEvents"; ///< plug-in will send Vst events to Host
+ const char* canDoSendVstMidiEvent = "sendVstMidiEvent"; ///< plug-in will send MIDI events to Host
+ const char* canDoReceiveVstEvents = "receiveVstEvents"; ///< plug-in can receive MIDI events from Host
+ const char* canDoReceiveVstMidiEvent = "receiveVstMidiEvent"; ///< plug-in can receive MIDI events from Host
+ const char* canDoReceiveVstTimeInfo = "receiveVstTimeInfo"; ///< plug-in can receive Time info from Host
+ const char* canDoOffline = "offline"; ///< plug-in supports offline functions (#offlineNotify, #offlinePrepare, #offlineRun)
+ const char* canDoMidiProgramNames = "midiProgramNames"; ///< plug-in supports function #getMidiProgramName ()
+ const char* canDoBypass = "bypass"; ///< plug-in supports function #setBypass ()
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+// Class AudioEffectX Implementation
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \sa AudioEffect()
+*/
+AudioEffectX::AudioEffectX (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams)
+: AudioEffect (audioMaster, numPrograms, numParams)
+{}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstIntPtr AudioEffectX::dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt)
+{
+ VstIntPtr v = 0;
+ switch (opcode)
+ {
+ //---VstEvents----------------------
+ case effProcessEvents:
+ v = processEvents ((VstEvents*)ptr);
+ break;
+
+ //---Parameters and Programs----------------------
+ case effCanBeAutomated:
+ v = canParameterBeAutomated (index) ? 1 : 0;
+ break;
+ case effString2Parameter:
+ v = string2parameter (index, (char*)ptr) ? 1 : 0;
+ break;
+
+ case effGetProgramNameIndexed:
+ v = getProgramNameIndexed ((VstInt32)value, index, (char*)ptr) ? 1 : 0;
+ break;
+ #if !VST_FORCE_DEPRECATED
+ case effGetNumProgramCategories:
+ v = getNumCategories ();
+ break;
+ case effCopyProgram:
+ v = copyProgram (index) ? 1 : 0;
+ break;
+
+ //---Connections, Configuration----------------------
+ case effConnectInput:
+ inputConnected (index, value ? true : false);
+ v = 1;
+ break;
+ case effConnectOutput:
+ outputConnected (index, value ? true : false);
+ v = 1;
+ break;
+ #endif // !VST_FORCE_DEPRECATED
+
+ case effGetInputProperties:
+ v = getInputProperties (index, (VstPinProperties*)ptr) ? 1 : 0;
+ break;
+ case effGetOutputProperties:
+ v = getOutputProperties (index, (VstPinProperties*)ptr) ? 1 : 0;
+ break;
+ case effGetPlugCategory:
+ v = (VstIntPtr)getPlugCategory ();
+ break;
+
+ #if !VST_FORCE_DEPRECATED
+ //---Realtime----------------------
+ case effGetCurrentPosition:
+ v = reportCurrentPosition ();
+ break;
+
+ case effGetDestinationBuffer:
+ v = ToVstPtr<float> (reportDestinationBuffer ());
+ break;
+ #endif // !VST_FORCE_DEPRECATED
+
+ //---Offline----------------------
+ case effOfflineNotify:
+ v = offlineNotify ((VstAudioFile*)ptr, (VstInt32)value, index != 0);
+ break;
+ case effOfflinePrepare:
+ v = offlinePrepare ((VstOfflineTask*)ptr, (VstInt32)value);
+ break;
+ case effOfflineRun:
+ v = offlineRun ((VstOfflineTask*)ptr, (VstInt32)value);
+ break;
+
+ //---Others----------------------
+ case effSetSpeakerArrangement:
+ v = setSpeakerArrangement (FromVstPtr<VstSpeakerArrangement> (value), (VstSpeakerArrangement*)ptr) ? 1 : 0;
+ break;
+ case effProcessVarIo:
+ v = processVariableIo ((VstVariableIo*)ptr) ? 1 : 0;
+ break;
+ #if !VST_FORCE_DEPRECATED
+ case effSetBlockSizeAndSampleRate:
+ setBlockSizeAndSampleRate ((VstInt32)value, opt);
+ v = 1;
+ break;
+ #endif // !VST_FORCE_DEPRECATED
+ case effSetBypass:
+ v = setBypass (value ? true : false) ? 1 : 0;
+ break;
+ case effGetEffectName:
+ v = getEffectName ((char*)ptr) ? 1 : 0;
+ break;
+ case effGetVendorString:
+ v = getVendorString ((char*)ptr) ? 1 : 0;
+ break;
+ case effGetProductString:
+ v = getProductString ((char*)ptr) ? 1 : 0;
+ break;
+ case effGetVendorVersion:
+ v = getVendorVersion ();
+ break;
+ case effVendorSpecific:
+ v = vendorSpecific (index, value, ptr, opt);
+ break;
+ case effCanDo:
+ v = canDo ((char*)ptr);
+ break;
+
+ case effGetTailSize:
+ v = getGetTailSize ();
+ break;
+
+ #if !VST_FORCE_DEPRECATED
+ case effGetErrorText:
+ v = getErrorText ((char*)ptr) ? 1 : 0;
+ break;
+
+ case effGetIcon:
+ v = ToVstPtr<void> (getIcon ());
+ break;
+
+ case effSetViewPosition:
+ v = setViewPosition (index, (VstInt32)value) ? 1 : 0;
+ break;
+
+ case effIdle:
+ v = fxIdle ();
+ break;
+
+ case effKeysRequired:
+ v = (keysRequired () ? 0 : 1); // reversed to keep v1 compatibility
+ break;
+ #endif // !VST_FORCE_DEPRECATED
+
+ case effGetParameterProperties:
+ v = getParameterProperties (index, (VstParameterProperties*)ptr) ? 1 : 0;
+ break;
+
+ case effGetVstVersion:
+ v = getVstVersion ();
+ break;
+
+ //---Others----------------------
+ #if VST_2_1_EXTENSIONS
+ case effEditKeyDown:
+ if (editor)
+ {
+ VstKeyCode keyCode = {index, (unsigned char)value, (unsigned char)opt};
+ v = editor->onKeyDown (keyCode) ? 1 : 0;
+ }
+ break;
+
+ case effEditKeyUp:
+ if (editor)
+ {
+ VstKeyCode keyCode = {index, (unsigned char)value, (unsigned char)opt};
+ v = editor->onKeyUp (keyCode) ? 1 : 0;
+ }
+ break;
+
+ case effSetEditKnobMode:
+ if (editor)
+ v = editor->setKnobMode ((VstInt32)value) ? 1 : 0;
+ break;
+
+ case effGetMidiProgramName:
+ v = getMidiProgramName (index, (MidiProgramName*)ptr);
+ break;
+ case effGetCurrentMidiProgram:
+ v = getCurrentMidiProgram (index, (MidiProgramName*)ptr);
+ break;
+ case effGetMidiProgramCategory:
+ v = getMidiProgramCategory (index, (MidiProgramCategory*)ptr);
+ break;
+ case effHasMidiProgramsChanged:
+ v = hasMidiProgramsChanged (index) ? 1 : 0;
+ break;
+ case effGetMidiKeyName:
+ v = getMidiKeyName (index, (MidiKeyName*)ptr) ? 1 : 0;
+ break;
+ case effBeginSetProgram:
+ v = beginSetProgram () ? 1 : 0;
+ break;
+ case effEndSetProgram:
+ v = endSetProgram () ? 1 : 0;
+ break;
+ #endif // VST_2_1_EXTENSIONS
+
+ #if VST_2_3_EXTENSIONS
+ case effGetSpeakerArrangement:
+ v = getSpeakerArrangement (FromVstPtr<VstSpeakerArrangement*> (value), (VstSpeakerArrangement**)ptr) ? 1 : 0;
+ break;
+
+ case effSetTotalSampleToProcess:
+ v = setTotalSampleToProcess ((VstInt32)value);
+ break;
+
+ case effShellGetNextPlugin:
+ v = getNextShellPlugin ((char*)ptr);
+ break;
+
+ case effStartProcess:
+ v = startProcess ();
+ break;
+ case effStopProcess:
+ v = stopProcess ();
+ break;
+
+ case effSetPanLaw:
+ v = setPanLaw ((VstInt32)value, opt) ? 1 : 0;
+ break;
+
+ case effBeginLoadBank:
+ v = beginLoadBank ((VstPatchChunkInfo*)ptr);
+ break;
+ case effBeginLoadProgram:
+ v = beginLoadProgram ((VstPatchChunkInfo*)ptr);
+ break;
+ #endif // VST_2_3_EXTENSIONS
+
+ #if VST_2_4_EXTENSIONS
+ case effSetProcessPrecision :
+ v = setProcessPrecision ((VstInt32)value) ? 1 : 0;
+ break;
+
+ case effGetNumMidiInputChannels :
+ v = getNumMidiInputChannels ();
+ break;
+
+ case effGetNumMidiOutputChannels :
+ v = getNumMidiOutputChannels ();
+ break;
+ #endif // VST_2_4_EXTENSIONS
+
+ //---Version 1.0 or unknown-----------------
+ default:
+ v = AudioEffect::dispatcher (opcode, index, value, ptr, opt);
+ }
+ return v;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*! if this effect is a synth or can receive midi events, we call the deprecated wantEvents() as some host rely on it.
+*/
+void AudioEffectX::resume ()
+{
+ if (cEffect.flags & effFlagsIsSynth || canDo ("receiveVstMidiEvent") == 1)
+ DECLARE_VST_DEPRECATED (wantEvents) ();
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+void AudioEffectX::DECLARE_VST_DEPRECATED (wantEvents) (VstInt32 filter)
+{
+ if (audioMaster)
+ audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterWantMidi), 0, filter, 0, 0);
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ A plug-in will request time info by calling the function getTimeInfo() which returns a \e #VstTimeInfo
+ pointer (or NULL if not implemented by the Host). The mask parameter is composed of the same flags which
+ will be found in the flags field of \e #VstTimeInfo when returned, that is, if you need information about tempo.
+ The parameter passed to getTimeInfo() should have the \e #kVstTempoValid flag set. This request and delivery
+ system is important, as a request like this may cause significant calculations at the application's end, which
+ may take a lot of our precious time. This obviously means you should only set those flags that are required to
+ get the information you need. Also please be aware that requesting information does not necessarily mean that
+ that information is provided in return. Check the \e flags field in the \e #VstTimeInfo structure to see if your
+ request was actually met.
+
+ \param filter A mask indicating which fields are requested, as some items may require extensive conversions.
+ See the \e flags in #VstTimeInfo
+ \return A pointer to a #VstTimeInfo structure or NULL if not implemented by the Host
+*/
+VstTimeInfo* AudioEffectX::getTimeInfo (VstInt32 filter)
+{
+ if (audioMaster)
+ {
+ VstIntPtr ret = audioMaster (&cEffect, audioMasterGetTime, 0, filter, 0, 0);
+ return FromVstPtr<VstTimeInfo> (ret);
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstInt32 AudioEffectX::DECLARE_VST_DEPRECATED (tempoAt) (VstInt32 pos)
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterTempoAt), 0, pos, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+bool AudioEffectX::sendVstEventsToHost (VstEvents* events)
+/*!
+ Can be called inside processReplacing.
+
+ \param events Fill with VST events
+ \return Returns \e true on success
+*/
+{
+ if (audioMaster)
+ return audioMaster (&cEffect, audioMasterProcessEvents, 0, 0, events, 0) == 1;
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::processEvents (VstEvents* events)
+
+ \return return value is ignored
+
+ \remarks Events are always related to the current audio block. For each process cycle, processEvents() is called
+ <b>once</b> before a processReplacing() call (if new events are available).
+
+ \sa VstEvents, VstMidiEvent
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+// Parameters Functions
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::canParameterBeAutomated (VstInt32 index)
+
+ Obviously only useful when the application supports this.
+
+ \param index Index of the parameter
+ \return \true if supported
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::string2parameter (VstInt32 index, char* text)
+
+ Especially useful for plug-ins without user interface. The application can then implement a text edit field for
+ the user to set a parameter by entering text.
+
+ \param index Index of the parameter
+ \param text A textual description of the parameter's value. A NULL pointer is used to check the capability
+ (return true).
+ \return \e true on success
+
+ \note Implies setParameter (). text==0 is to be expected to check the capability (returns true)
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text)
+
+ Allows a Host application to list the plug-in's programs (presets).
+
+ \param category unused in VST 2.4
+ \param index Index of the program in a given category, starting with 0.
+ \param text A string up to 24 chars.
+ \return \e true on success
+*/
+//-----------------------------------------------------------------------------------------------------------------
+VstInt32 AudioEffectX::DECLARE_VST_DEPRECATED (getNumAutomatableParameters) ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetNumAutomatableParameters), 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstInt32 AudioEffectX::DECLARE_VST_DEPRECATED (getParameterQuantization) ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetParameterQuantization), 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+// Configuration/Settings Functions
+//-----------------------------------------------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ The Host could call a suspend() (if the plug-in was enabled (in resume() state)) and then ask for
+ getSpeakerArrangement() and/or check the \e numInputs and \e numOutputs and \e initialDelay and then call a
+ resume().
+
+ \return \e true on success
+
+ \sa setSpeakerArrangement(), getSpeakerArrangement()
+*/
+bool AudioEffectX::ioChanged ()
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterIOChanged, 0, 0, 0, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+bool AudioEffectX::DECLARE_VST_DEPRECATED (needIdle) ()
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterNeedIdle), 0, 0, 0, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \param width The window's width in pixel
+ \param height The window's height in pixel
+ \return \e true on success
+*/
+bool AudioEffectX::sizeWindow (VstInt32 width, VstInt32 height)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterSizeWindow, width, height, 0, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+double AudioEffectX::updateSampleRate ()
+/*!
+ \return The Host's sample rate
+*/
+{
+ if (audioMaster)
+ {
+ VstIntPtr res = audioMaster (&cEffect, audioMasterGetSampleRate, 0, 0, 0, 0);
+ if (res > 0)
+ sampleRate = (float)res;
+ }
+ return sampleRate;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstInt32 AudioEffectX::updateBlockSize ()
+/*!
+ \return The Host's block size
+
+ \note Will cause application to call AudioEffect's setSampleRate() to be called (when implemented).
+*/
+{
+ if (audioMaster)
+ {
+ VstInt32 res = (VstInt32)audioMaster (&cEffect, audioMasterGetBlockSize, 0, 0, 0, 0);
+ if (res > 0)
+ blockSize = res;
+ }
+ return blockSize;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \return ASIO input latency
+ \sa getOutputLatency()
+*/
+VstInt32 AudioEffectX::getInputLatency ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, audioMasterGetInputLatency, 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ While inputLatency is probably not of concern, outputLatency may be used in conjunction with getTimeInfo().
+ \e samplePos of VstTimeInfo is ahead of the 'visual' sequencer play time by the output latency, such that
+ when outputLatency samples have passed by, our processing result becomes audible.
+
+ \return ASIO output latency
+ \sa getInputLatency()
+*/
+VstInt32 AudioEffectX::getOutputLatency ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, audioMasterGetOutputLatency, 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getInputProperties (VstInt32 index, VstPinProperties* properties)
+
+ \param index The index to the input, starting with 0
+ \param properties A pointer to a VstPinProperties structure
+ \return \e true on success
+ \sa getOutputProperties()
+ \note Example
+ <pre>
+ bool MyPlug::getInputProperties (VstInt32 index, VstPinProperties* properties)
+ {
+ bool returnCode = false;
+ if (index < kNumInputs)
+ {
+ sprintf (properties->label, "My %1d In", index + 1);
+ properties->flags = kVstPinIsStereo | kVstPinIsActive;
+ returnCode = true;
+ }
+ return returnCode;
+ }
+ </pre>
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getOutputProperties (VstInt32 index, VstPinProperties* properties)
+
+ \param index The index to the output, starting with 0
+ \param properties A pointer to a VstPinProperties structure
+ \return \e true on success
+ \sa getInputProperties()
+ \note Example 1
+ <pre>
+ bool MyPlug::getOutputProperties (VstInt32 index, VstPinProperties* properties)
+ {
+ bool returnCode = false;
+ if (index < kNumOutputs)
+ {
+ sprintf (properties->label, "My %1d Out", index + 1);
+ properties->flags = kVstPinIsStereo | kVstPinIsActive;
+ returnCode = true;
+ }
+ return (returnCode);
+ }
+ </pre>
+
+ \note Example 2 : plug-in with 1 mono, 1 stereo and one 5.1 outputs (kNumOutputs = 9):
+ <pre>
+ bool MyPlug::getOutputProperties (VstInt32 index, VstPinProperties* properties)
+ {
+ bool returnCode = false;
+ if (index >= 0 && index < kNumOutputs)
+ {
+ properties->flags = kVstPinIsActive;
+ if (index == 0) // mono
+ {
+ strcpy (properties->label, "Mono Out");
+ properties->arrangementType = kSpeakerArrMono;
+ }
+ else if (index == 1) // stereo (1 -> 2)
+ {
+ strcpy (properties->label, "Stereo Out");
+ properties->flags |= kVstPinIsStereo;
+ properties->arrangementType = kSpeakerArrStereo;
+ }
+ else if (index >= 3) // 5.1 (3 -> 8)
+ {
+ strcpy (properties->label, "5.1 Out");
+ properties->flags |= kVstPinUseSpeaker;
+ properties->arrangementType = kSpeakerArr51;
+ // for old VST Host < 2.3, make 5.1 to stereo/mono/mono/stereo (L R C Lfe Ls Rs)
+ if (index == 3 || index == 7)
+ properties->flags |= kVstPinIsStereo;
+ if (index == 5)
+ strcpy (properties->label, "Center");
+ else if (index == 6)
+ strcpy (properties->label, "Lfe");
+ else if (index == 7) // (7 -> 8)
+ strcpy (properties->label, "Stereo Back");
+ }
+ returnCode = true;
+ }
+ return returnCode;
+ }
+ </pre>
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+AEffect* AudioEffectX::DECLARE_VST_DEPRECATED (getPreviousPlug) (VstInt32 input)
+{
+ if (audioMaster)
+ {
+ VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetPreviousPlug), 0, 0, 0, 0);
+ return FromVstPtr<AEffect> (ret);
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+AEffect* AudioEffectX::DECLARE_VST_DEPRECATED (getNextPlug) (VstInt32 output)
+{
+ if (audioMaster)
+ {
+ VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetNextPlug), 0, 0, 0, 0);
+ return FromVstPtr<AEffect> (ret);
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \return Plug-in's category defined in VstPlugCategory
+*/
+VstPlugCategory AudioEffectX::getPlugCategory ()
+{
+ if (cEffect.flags & effFlagsIsSynth)
+ return kPlugCategSynth;
+ return kPlugCategUnknown;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstInt32 AudioEffectX::DECLARE_VST_DEPRECATED (willProcessReplacing) ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterWillReplaceOrAccumulate), 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ A plug-in is like a black box processing some audio coming in on some inputs (if any) and going out of some
+ outputs (if any). This may be used to do offline or real-time processing, and sometimes it may be desirable to
+ know the current context.
+
+ \return #VstProcessLevels in aeffectx.h
+
+*/
+VstInt32 AudioEffectX::getCurrentProcessLevel ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, audioMasterGetCurrentProcessLevel, 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \return #VstAutomationStates in aeffectx.h
+*/
+VstInt32 AudioEffectX::getAutomationState ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, audioMasterGetAutomationState, 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+void AudioEffectX::DECLARE_VST_DEPRECATED (wantAsyncOperation) (bool state)
+{
+ if (state)
+ cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsExtIsAsync);
+ else
+ cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsExtIsAsync);
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+void AudioEffectX::DECLARE_VST_DEPRECATED (hasExternalBuffer) (bool state)
+{
+ if (state)
+ cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsExtHasBuffer);
+ else
+ cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsExtHasBuffer);
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+// Offline Functions
+//-----------------------------------------------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------
+bool AudioEffectX::offlineRead (VstOfflineTask* offline, VstOfflineOption option, bool readSource)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterOfflineRead, readSource, option, offline, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+bool AudioEffectX::offlineWrite (VstOfflineTask* offline, VstOfflineOption option)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterOfflineWrite, 0, option, offline, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+bool AudioEffectX::offlineStart (VstAudioFile* audioFiles, VstInt32 numAudioFiles, VstInt32 numNewAudioFiles)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterOfflineStart, numNewAudioFiles, numAudioFiles, audioFiles, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstInt32 AudioEffectX::offlineGetCurrentPass ()
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterOfflineGetCurrentPass, 0, 0, 0, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstInt32 AudioEffectX::offlineGetCurrentMetaPass ()
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterOfflineGetCurrentMetaPass, 0, 0, 0, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+// Other
+//-----------------------------------------------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------------------------------------------
+void AudioEffectX::DECLARE_VST_DEPRECATED (setOutputSamplerate) (float sampleRate)
+{
+ if (audioMaster)
+ audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterSetOutputSampleRate), 0, 0, 0, sampleRate);
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstSpeakerArrangement* AudioEffectX::DECLARE_VST_DEPRECATED (getInputSpeakerArrangement) ()
+{
+ if (audioMaster)
+ {
+ VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetInputSpeakerArrangement), 0, 0, 0, 0);
+ return FromVstPtr<VstSpeakerArrangement> (ret);
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstSpeakerArrangement* AudioEffectX::DECLARE_VST_DEPRECATED (getOutputSpeakerArrangement) ()
+{
+ if (audioMaster)
+ {
+ VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetOutputSpeakerArrangement), 0, 0, 0, 0);
+ return FromVstPtr<VstSpeakerArrangement> (ret);
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \param text String of maximum 64 char
+ \return \e true if supported
+*/
+bool AudioEffectX::getHostVendorString (char* text)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterGetVendorString, 0, 0, text, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \param text String of maximum 64 char
+ \return \e true if supported
+*/
+bool AudioEffectX::getHostProductString (char* text)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterGetProductString, 0, 0, text, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \return Host vendor version
+*/
+VstInt32 AudioEffectX::getHostVendorVersion ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, audioMasterGetVendorVersion, 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+VstIntPtr AudioEffectX::hostVendorSpecific (VstInt32 lArg1, VstIntPtr lArg2, void* ptrArg, float floatArg)
+{
+ if (audioMaster)
+ return audioMaster (&cEffect, audioMasterVendorSpecific, lArg1, lArg2, ptrArg, floatArg);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ Asks Host if it implements the feature text. A plug-in cannot assume a 2.x feature is available from the Host.
+ Use this method to ascertain the environment in which the plug-in finds itself. Ignoring this inquiry methods and
+ trying to access a 2.x feature in a 1.0 Host will mean your plug-in or Host application will break. It is not
+ the end-users job to pick and choose which plug-ins can be supported by which Host.
+
+ \param text A string from #hostCanDos
+ \return
+ - 0 : don't know (default)
+ - 1 : yes
+ - -1: no
+*/
+VstInt32 AudioEffectX::canHostDo (char* text)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterCanDo, 0, 0, text, 0) != 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ Tells the Host that the plug-in is an instrument, i.e. that it will call wantEvents().
+
+ \param state
+ - true: is an instrument (default)
+ - false: is a simple audio effect
+*/
+void AudioEffectX::isSynth (bool state)
+{
+ if (state)
+ cEffect.flags |= effFlagsIsSynth;
+ else
+ cEffect.flags &= ~effFlagsIsSynth;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ Enables Host to omit processReplacing() when no data is present on any input.
+*/
+void AudioEffectX::noTail (bool state)
+{
+ if (state)
+ cEffect.flags |= effFlagsNoSoundInStop;
+ else
+ cEffect.flags &= ~effFlagsNoSoundInStop;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \return #VstHostLanguage in aeffectx.h
+*/
+VstInt32 AudioEffectX::getHostLanguage ()
+{
+ if (audioMaster)
+ return (VstInt32)audioMaster (&cEffect, audioMasterGetLanguage, 0, 0, 0, 0);
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+void* AudioEffectX::DECLARE_VST_DEPRECATED (openWindow) (DECLARE_VST_DEPRECATED (VstWindow)* window)
+{
+ if (audioMaster)
+ {
+ VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterOpenWindow), 0, 0, window, 0);
+ return FromVstPtr<void> (ret);
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+bool AudioEffectX::DECLARE_VST_DEPRECATED (closeWindow) (DECLARE_VST_DEPRECATED (VstWindow)* window)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterCloseWindow), 0, 0, window, 0) != 0);
+ return false;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \return FSSpec on MAC, else char*
+*/
+void* AudioEffectX::getDirectory ()
+{
+ if (audioMaster)
+ {
+ VstIntPtr ret = (audioMaster (&cEffect, audioMasterGetDirectory, 0, 0, 0, 0));
+ return FromVstPtr<void> (ret);
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \return \e true if supported
+*/
+bool AudioEffectX::updateDisplay ()
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterUpdateDisplay, 0, 0, 0, 0)) ? true : false;
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::processVariableIo (VstVariableIo* varIo)
+
+ If called with \e varIo NULL, returning \e true indicates that this call is supported by the plug-in.
+ Host will use processReplacing otherwise. The Host should call setTotalSampleToProcess before starting the processIO
+ to inform the plug-in about how many samples will be processed in total. The Host should provide an output buffer at least 5 times bigger than input buffer.
+
+ \param varIo
+ \return \true on success
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput)
+
+ Set the plug-in's speaker arrangements. If a (VST >= 2.3) plug-in returns \e true, it means that it accepts this IO
+ arrangement. The Host doesn't need to ask for getSpeakerArrangement(). If the plug-in returns \e false it means that it
+ doesn't accept this arrangement, the Host should then ask for getSpeakerArrangement() and then can (optional)
+ recall setSpeakerArrangement().
+
+ \param pluginInput A pointer to the input's #VstSpeakerArrangement structure.
+ \param pluginOutput A pointer to the output's #VstSpeakerArrangement structure.
+ \return \e true on success
+
+ \note setSpeakerArrangement() and getSpeakerArrangement() are always called in suspended state.
+ (like setSampleRate() or setBlockSize()).
+
+ \sa getSpeakerArrangement()
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput)
+
+ \param pluginInput A pointer to the input's #VstSpeakerArrangement structure.
+ \param pluginOutput A pointer to the output's #VstSpeakerArrangement structure.
+ \return \e true on success
+
+ \note setSpeakerArrangement() and getSpeakerArrangement() are always called in suspended state.
+ (like setSampleRate() or setBlockSize()).\n
+ <pre>Here an example code to show how the host uses getSpeakerArrangement()
+ VstSpeakerArrangement *plugInputVstArr = 0;
+ VstSpeakerArrangement *plugOutputVstArr = 0;
+ if (getFormatVersion () >= 2300 && #getSpeakerArrangement (&plugInputVstArr, &plugOutputVstArr))
+ ....
+ </pre>
+
+ \sa setSpeakerArrangement()
+*/
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::setBypass (bool onOff)
+
+ process still called (if Supported) although the plug-in was bypassed. Some plugs need to stay 'alive' even
+ when bypassed. An example is a surround decoder which has more inputs than outputs and must maintain some
+ reasonable signal distribution even when being bypassed. A CanDo 'bypass' allows to ask the plug-in if it
+ supports soft bypass or not.
+
+ \note This bypass feature could be automated by the Host (this means avoid to much CPU requirement in this call)
+ \note If the plug-in supports SoftBypass and it has a latency (initialDelay), in Bypassed state the plug-in has to used
+ the same latency value.
+
+ \param onOff
+ \return
+ - true: supports SoftBypass, process will be called, the plug-in should compensate its latency, and copy inputs to outputs
+ - false: doesn't support SoftBypass, process will not be called, the Host should bypass the process call
+
+ \sa processReplacing()
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getEffectName (char* name)
+
+ \param name A string up to 32 chars
+ \return \e true on success
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getVendorString (char* text)
+
+ \param text A string up to 64 chars
+ \return \e true on success
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getProductString (char* text)
+
+ \param text A string up to 64 chars
+ \return \e true on success
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::getVendorVersion ()
+
+ \return The version of the plug-in
+
+ \note This should be upported
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::canDo (char* text)
+
+ Report what the plug-in is able to do. In general you can but don't have to report whatever you support or not
+ support via canDo. Some application functionality may require some specific reply, but in that case you will
+ probably know. Best is to report whatever you know for sure. A Host application cannot make assumptions about
+ the presence of the new 2.x features of a plug-in. Ignoring this inquiry methods and trying to access a 2.x
+ feature from a 1.0 plug, or vice versa, will mean the plug-in or Host application will break. It is not the
+ end-users job to pick and choose which plug-ins can be supported by which Host.
+
+ \param text A string from #plugCanDos
+ \return
+ - 0: don't know (default)
+ - 1: yes
+ - -1: no
+
+ \note This should be supported.
+*/
+
+//----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::canDo (char* text)
+
+ \param text A string from #plugCanDos
+ \return
+ - 0: don't know (default).
+ - 1: yes.
+ - -1: no
+*/
+
+//----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getParameterProperties (VstInt32 index, VstParameterProperties* p)
+
+ \param index Index of the parameter
+ \param p Pointer to #VstParameterProperties
+ \return Return \e true on success
+*/
+
+//----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::getVstVersion ()
+ \return
+ - 2xxx : the last VST 2.x plug-in version (by default)
+ - 0 : older versions
+
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::getMidiProgramName (VstInt32 channel, MidiProgramName* midiProgramName)
+ Ask plug-in if MidiPrograms are used and if so, query for names, numbers
+ (ProgramChange-Number + BankSelect-Number), categories and keynames of each
+ MIDI Program, on each MIDI-channel. If this function is called, your plug-in has to read
+ MidiProgramName::thisProgramIndex, fill out the other fields with the information
+ assigned to a certain MIDI Program and return the number of available MIDI Programs on
+ that MIDI Channel.
+
+ \note plug-in canDo "midiProgramNames". No effect, if 0 is returned.
+
+ \warning don't mix concepts: the MIDI Programs are totally independent from all other
+ programs present in VST. The main difference is, that there are upto 16 simultaneous
+ active MIDI Programs (one per channel), while there can be only one active "VST"-Program.
+ (You should see the "VST"-Program as the one single main global program, which contains
+ the entire current state of the plug-in.) This function can be called in any sequence.
+
+ \param channel MidiChannel: 0-15
+ \param midiProgramName Points to \e #MidiProgramName struct
+ \return Number of available MIDI Programs on that \e channel
+ - number of used programIndexes
+ - 0 if no MidiProgramNames supported
+
+ \note Example : plug-in has 3 MidiPrograms on MidiChannel 0.
+ <pre>
+ Host calls #getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 0.
+ Plug fills out:
+ MidiProgramName::name[64] = "Program A"
+ MidiProgramName::midiProgram = 0
+ MidiProgramName::midiBankMsb = -1
+ MidiProgramName::midiBankLsb = -1
+ MidiProgramName::parentCategoryIndex = -1
+ MidiProgramName::flags = 0 (if plug isn't "Omni").
+ Plug returns 3.
+ Host calls #getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 1.
+ Plug fills out:
+ MidiProgramName::name[64] = "Program B"
+ MidiProgramName::midiProgram = 1
+ MidiProgramName::midiBankMsb = -1
+ MidiProgramName::midiBankLsb = -1
+ MidiProgramName::parentCategoryIndex = -1
+ MidiProgramName::flags = 0 (if plug isn't "Omni").
+ Plug returns 3.
+ Host calls #getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 2.
+ Plug fills out:
+ MidiProgramName::name[64] = "Program C"
+ MidiProgramName::midiProgram = 2
+ MidiProgramName::midiBankMsb = -1
+ MidiProgramName::midiBankLsb = -1
+ MidiProgramName::parentCategoryIndex = -1
+ MidiProgramName::flags = 0 (if plug isn't "Omni").
+ Plug returns 3.
+ </pre>
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::getCurrentMidiProgram (VstInt32 channel, MidiProgramName* currentProgram)
+
+ \param channel
+ \param currentProgram
+ \return
+ - programIndex of the current program
+ - -1 if not supported
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* category)
+
+ \param channel
+ \param category
+ \return
+ - number of used categoryIndexes.
+ - 0 if no #MidiProgramCategory supported/used.
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::hasMidiProgramsChanged (VstInt32 channel)
+
+ Ask plug-in for the currently active program on a certain MIDI Channel. Just like
+ getMidiProgramName(), but MidiProgramName::thisProgramIndex has to be filled out with
+ the currently active MIDI Program-index, which also has to be returned.
+
+ \param channel
+ \return
+ - true: if the #MidiProgramNames, #MidiKeyNames or #MidiControllerNames had changed on
+ this channel
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::getMidiKeyName (VstInt32 channel, MidiKeyName* keyName)
+
+ \param channel
+ \param keyName If keyName is "" the standard name of the key will be displayed
+ \return Return \e false if no #MidiKeyNames defined for 'thisProgramIndex'
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::beginSetProgram ()
+
+ \return
+ - true: the plug-in took the notification into account
+ - false: it did not...
+
+ \sa endSetProgram()
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::endSetProgram ()
+
+ \return
+ - true: the plug-in took the notification into account
+ - false: it did not...
+
+ \sa beginSetProgram()
+*/
+
+#if VST_2_1_EXTENSIONS
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ It tells the Host that if it needs to, it has to record automation data for this control.
+
+ \param index Index of the parameter
+ \return Returns \e true on success
+
+ \sa endEdit()
+*/
+bool AudioEffectX::beginEdit (VstInt32 index)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterBeginEdit, index, 0, 0, 0)) ? true : false;
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ It notifies the Host that this control is no longer moved by the mouse.
+
+ \param index Index of the parameter
+ \return Returns \e true on success
+
+ \sa beginEdit()
+*/
+bool AudioEffectX::endEdit (VstInt32 index)
+{
+ if (audioMaster)
+ return (audioMaster (&cEffect, audioMasterEndEdit, index, 0, 0, 0)) ? true : false;
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \param ptr
+ \return Returns \e true on success
+
+ \sa closeFileSelector()
+*/
+bool AudioEffectX::openFileSelector (VstFileSelect* ptr)
+{
+ if (audioMaster && ptr)
+ return (audioMaster (&cEffect, audioMasterOpenFileSelector, 0, 0, ptr, 0)) ? true : false;
+ return 0;
+}
+#endif // VST_2_1_EXTENSIONS
+
+#if VST_2_2_EXTENSIONS
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \param ptr
+ \return Returns \e true on success
+
+ \sa openFileSelector()
+*/
+bool AudioEffectX::closeFileSelector (VstFileSelect* ptr)
+{
+ if (audioMaster && ptr)
+ return (audioMaster (&cEffect, audioMasterCloseFileSelector, 0, 0, ptr, 0)) ? true : false;
+ return 0;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ It indicates how many samples will be processed.
+
+ \param nativePath
+ \return Returns \e true on success
+
+ \sa getChunk(), setChunk()
+*/
+bool AudioEffectX::DECLARE_VST_DEPRECATED (getChunkFile) (void* nativePath)
+{
+ if (audioMaster && nativePath)
+ return (audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetChunkFile), 0, 0, nativePath, 0)) ? true : false;
+ return 0;
+}
+#endif // VST_2_2_EXTENSIONS
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::setTotalSampleToProcess (VstInt32 value)
+
+ It indicates how many samples will be processed in total.
+
+ \param value Number of samples to process
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::getNextShellPlugin (char* name) { return 0; }
+
+ \param name Points to a char buffer of size 64, which is to be filled with the name of the
+ plug-in including the terminating zero
+ \return Return the next plug-in's uniqueID
+ \note Example of Implementation
+<pre>
+ //---From the Host side : if found plugin is a Shell category-----------
+ if (effect->getCategory () == kPlugCategShell)
+ {
+ // scan shell for subplugins
+ char tempName[64] = {0};
+ VstInt32 plugUniqueID = 0;
+ while ((plugUniqueID = effect->dispatchEffect (effShellGetNextPlugin, 0, 0, tempName)) != 0)
+ {
+ // subplug needs a name
+ if (tempName[0] != 0)
+ {
+ ...do what you want with this tempName and plugUniqueID
+ }
+ }
+ }
+ //---From the Host side : Intanciate a subplugin of a shell plugin---
+ // retreive the uniqueID of this subplugin the host wants to load
+ // set it to the host currentID
+ currentID = subplugInfo->uniqueID;
+ // call the its shell plugin (main function)
+ main ();
+ // the shell plugin will ask for the currentUniqueID
+ // and should return the chosen subplugin
+ ...
+ //---From the plugin-Shell Side: for enumeration of subplugins---------
+ category = kPlugCategShell;
+ ->can ask the host if "shellCategory" is supported
+ // at start (instanciation) reset the index for the getNextShellPlugin call.
+ myPluginShell::index = 0;
+ // implementation of getNextShellPlugin (char* name);
+ VstInt32 myPluginShell::getNextShellPlugin (char* name)
+ {
+ strcpy (name, MyNameTable[index]);
+ return MyUniqueIDTable[index++];
+ }
+ ....
+ //---From the plugin-Shell Side: when instanciation-----
+ VstInt32 uniqueID = host->getCurrentUniqueID ();
+ if (uniqueID == 0) // the host instanciates the shell
+ {}
+ else // host try to instanciate one of my subplugin...identified by the uniqueID
+ {}
+</pre>
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::setPanLaw (VstInt32 type, float val)
+
+ \param type
+ \param val
+
+ \return Returns \e true on success
+
+ \note Gain: for Linear : [1.0 => 0dB PanLaw], [~0.58 => -4.5dB], [0.5 => -6.02dB]
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::beginLoadBank (VstPatchChunkInfo* ptr)
+
+ \param ptr
+ \return
+ - -1: if the Bank cannot be loaded,
+ - 1: if it can be loaded
+ - 0: else (for compatibility)
+
+ \sa beginLoadProgram()
+
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::beginLoadProgram (VstPatchChunkInfo* ptr)
+
+ \param ptr
+ \return
+ - -1: if the Program cannot be loaded,
+ - 1: it can be loaded else,
+ - 0: else (for compatibility)
+
+ \sa beginLoadBank()
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+// Speaker Arrangement Helpers
+//-----------------------------------------------------------------------------------------------------------------
+
+#if VST_2_3_EXTENSIONS
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \param arrangement Pointer to a \e #VstSpeakerArrangement structure
+ \param nbChannels Number of Channels
+ \return Returns \e true on success
+
+ \sa deallocateArrangement(), copySpeaker(), matchArrangement()
+*/
+bool AudioEffectX::allocateArrangement (VstSpeakerArrangement** arrangement, VstInt32 nbChannels)
+{
+ if (*arrangement)
+ {
+ char *ptr = (char*)(*arrangement);
+ delete [] ptr;
+ }
+
+ VstInt32 size = 2 * sizeof (VstInt32) + nbChannels * sizeof (VstSpeakerProperties);
+ char* ptr = new char[size];
+ if (!ptr)
+ return false;
+
+ memset (ptr, 0, size);
+ *arrangement = (VstSpeakerArrangement*)ptr;
+ (*arrangement)->numChannels = nbChannels;
+ return true;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \param arrangement Pointer to a \e #VstSpeakerArrangement structure
+ \return Returns \e true on success
+
+ \sa allocateArrangement(), copySpeaker(), matchArrangement()
+*/
+bool AudioEffectX::deallocateArrangement (VstSpeakerArrangement** arrangement)
+{
+ if (*arrangement)
+ {
+ char *ptr = (char*)(*arrangement);
+ delete [] ptr;
+ *arrangement = 0;
+ }
+ return true;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ Feed the \e to speaker properties with the same values than \e from 's ones.
+ It is assumed here that \e to exists yet, ie this function won't
+ allocate memory for the speaker (this will prevent from having
+ a difference between an Arrangement's number of channels and
+ its actual speakers...)
+
+ \param to
+ \param from
+ \return Returns \e true on success
+
+ \sa allocateArrangement(), deallocateArrangement(), matchArrangement()
+*/
+bool AudioEffectX::copySpeaker (VstSpeakerProperties* to, VstSpeakerProperties* from)
+{
+ if ((from == NULL) || (to == NULL))
+ return false;
+
+ vst_strncpy (to->name, from->name, 63);
+ to->type = from->type;
+ to->azimuth = from->azimuth;
+ to->elevation = from->elevation;
+ to->radius = from->radius;
+ to->reserved = from->reserved;
+ memcpy (to->future, from->future, 28);
+
+ return true;
+}
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \e to is deleted, then created and initialized with the same values as \e from (must exist!).
+ It's notably useful when setSpeakerArrangement() is called by the Host.
+
+ \param to
+ \param from
+ \return Returns \e true on success
+
+ \sa allocateArrangement(), deallocateArrangement(), copySpeaker()
+*/
+
+bool AudioEffectX::matchArrangement (VstSpeakerArrangement** to, VstSpeakerArrangement* from)
+{
+ if (from == NULL)
+ return false;
+
+ if ((!deallocateArrangement (to)) || (!allocateArrangement (to, from->numChannels)))
+ return false;
+
+ (*to)->type = from->type;
+ for (VstInt32 i = 0; i < (*to)->numChannels; i++)
+ {
+ if (!copySpeaker (&((*to)->speakers[i]), &(from->speakers[i])))
+ return false;
+ }
+
+ return true;
+}
+#endif // VST_2_3_EXTENSIONS
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn bool AudioEffectX::setProcessPrecision (VstInt32 precision)
+
+ Is called in suspended state, similar to #setBlockSize. Default (if not called) is single precision float.
+
+ \param precision kVstProcessPrecision32 or kVstProcessPrecision64
+ \return Returns \e true on success
+ \sa VstProcessPrecision
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::getNumMidiInputChannels ()
+
+ Called by the host application to determine how many MIDI input channels are actually used by a plugin
+ e.g. to hide unused channels from the user.
+ For compatibility with VST 2.3 and below, the default return value 0 means 'not implemented' -
+ in this case the host assumes 16 MIDI channels to be present (or none at all).
+
+ \return Number of MIDI input channels: 1-15, otherwise: 16 or no MIDI channels at all (0)
+
+ \note The VST 2.x protocol is limited to a maximum of 16 MIDI channels as defined by the MIDI Standard. This might change in future revisions of the API.
+
+ \sa
+ getNumMidiOutputChannels() @n
+ PlugCanDos::canDoReceiveVstMidiEvent
+*/
+
+//-----------------------------------------------------------------------------------------------------------------
+/*!
+ \fn VstInt32 AudioEffectX::getNumMidiOutputChannels ()
+
+ Called by the host application to determine how many MIDI output channels are actually used by a plugin
+ e.g. to hide unused channels from the user.
+ For compatibility with VST 2.3 and below, the default return value 0 means 'not implemented' -
+ in this case the host assumes 16 MIDI channels to be present (or none at all).
+
+ \return Number of MIDI output channels: 1-15, otherwise: 16 or no MIDI channels at all (0)
+
+ \note The VST 2.x protocol is limited to a maximum of 16 MIDI channels as defined by the MIDI Standard. This might change in future revisions of the API.
+
+ \sa
+ getNumMidiInputChannels() @n
+ PlugCanDos::canDoSendVstMidiEvent
+*/
diff --git a/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h b/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h
new file mode 100644
index 0000000..1dd608f
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h
@@ -0,0 +1,252 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/06/20 12:42:46 $
+//
+// Category : VST 2.x Classes
+// Filename : audioeffectx.h
+// Created by : Steinberg Media Technologies
+// Description : Class AudioEffectX extends AudioEffect with new features. You should derive
+// your plug-in from AudioEffectX.
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#ifndef __audioeffectx__
+#define __audioeffectx__
+
+#include "audioeffect.h" // Version 1.0 base class AudioEffect
+
+#include "pluginterfaces/vst2.x/aeffectx.h" // Version 2.x 'C' Extensions and Structures
+
+//-------------------------------------------------------------------------------------------------------
+/** Extended VST Effect Class (VST 2.x). */
+//-------------------------------------------------------------------------------------------------------
+class AudioEffectX : public AudioEffect
+{
+public:
+ AudioEffectX (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams); ///< Create an \e AudioEffectX object
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Parameters
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual bool canParameterBeAutomated (VstInt32 index) { return true; } ///< Indicates if a parameter can be automated
+ virtual bool string2parameter (VstInt32 index, char* text) { return false; } ///< Convert a string representation to a parameter value
+ virtual bool getParameterProperties (VstInt32 index, VstParameterProperties* p) { return false; } ///< Return parameter properties
+
+#if VST_2_1_EXTENSIONS
+ virtual bool beginEdit (VstInt32 index); ///< To be called before #setParameterAutomated (on Mouse Down). This will be used by the Host for specific Automation Recording.
+ virtual bool endEdit (VstInt32 index); ///< To be called after #setParameterAutomated (on Mouse Up)
+#endif // VST_2_1_EXTENSIONS
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Programs and Persistence
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text) { return false; } ///< Fill \e text with name of program \e index (\e category deprecated in VST 2.4)
+
+#if VST_2_1_EXTENSIONS
+ virtual bool beginSetProgram () { return false; } ///< Called before a program is loaded
+ virtual bool endSetProgram () { return false; } ///< Called after a program was loaded
+#endif // VST_2_1_EXTENSIONS
+
+#if VST_2_3_EXTENSIONS
+ virtual VstInt32 beginLoadBank (VstPatchChunkInfo* ptr) { return 0; } ///< Called before a Bank is loaded.
+ virtual VstInt32 beginLoadProgram (VstPatchChunkInfo* ptr) { return 0; } ///< Called before a Program is loaded. (called before #beginSetProgram).
+#endif // VST_2_3_EXTENSIONS
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Connections and Configuration
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual bool ioChanged (); ///< Tell Host numInputs and/or numOutputs and/or initialDelay (and/or numParameters: to be avoid) have changed
+
+ virtual double updateSampleRate (); ///< Returns sample rate from Host (may issue setSampleRate())
+ virtual VstInt32 updateBlockSize (); ///< Returns block size from Host (may issue getBlockSize())
+ virtual VstInt32 getInputLatency (); ///< Returns the Audio (maybe ASIO) input latency values
+ virtual VstInt32 getOutputLatency (); ///< Returns the Audio (maybe ASIO) output latency values
+
+ virtual bool getInputProperties (VstInt32 index, VstPinProperties* properties) { return false; } ///< Return the \e properties of output \e index
+ virtual bool getOutputProperties (VstInt32 index, VstPinProperties* properties) { return false; }///< Return the \e properties of input \e index
+
+ virtual bool setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput) { return false; } ///< Set the plug-in's speaker arrangements
+ virtual bool getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) { *pluginInput = 0; *pluginOutput = 0; return false; } ///< Return the plug-in's speaker arrangements
+ virtual bool setBypass (bool onOff) { return false; } ///< For 'soft-bypass' (this could be automated (in Audio Thread) that why you could NOT call iochanged (if needed) in this function, do it in fxidle).
+
+#if VST_2_3_EXTENSIONS
+ virtual bool setPanLaw (VstInt32 type, float val) { return false; } ///< Set the Panning Law used by the Host @see VstPanLawType.
+#endif // VST_2_3_EXTENSIONS
+
+#if VST_2_4_EXTENSIONS
+ virtual bool setProcessPrecision (VstInt32 precision) { return false; } ///< Set floating-point precision used for processing (32 or 64 bit)
+
+ virtual VstInt32 getNumMidiInputChannels () { return 0; } ///< Returns number of MIDI input channels used [0, 16]
+ virtual VstInt32 getNumMidiOutputChannels () { return 0; } ///< Returns number of MIDI output channels used [0, 16]
+#endif // VST_2_4_EXTENSIONS
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Realtime
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual VstTimeInfo* getTimeInfo (VstInt32 filter); ///< Get time information from Host
+ virtual VstInt32 getCurrentProcessLevel (); ///< Returns the Host's process level
+ virtual VstInt32 getAutomationState (); ///< Returns the Host's automation state
+
+ virtual VstInt32 processEvents (VstEvents* events) { return 0; } ///< Called when new MIDI events come in
+ bool sendVstEventsToHost (VstEvents* events); ///< Send MIDI events back to Host application
+
+#if VST_2_3_EXTENSIONS
+ virtual VstInt32 startProcess () { return 0; } ///< Called one time before the start of process call. This indicates that the process call will be interrupted (due to Host reconfiguration or bypass state when the plug-in doesn't support softBypass)
+ virtual VstInt32 stopProcess () { return 0;} ///< Called after the stop of process call
+#endif // VST_2_3_EXTENSIONS
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Variable I/O (Offline)
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual bool processVariableIo (VstVariableIo* varIo) { return false; } ///< Used for variable I/O processing (offline processing like timestreching)
+
+#if VST_2_3_EXTENSIONS
+ virtual VstInt32 setTotalSampleToProcess (VstInt32 value) { return value; } ///< Called in offline mode before process() or processVariableIo ()
+#endif // VST_2_3_EXTENSIONS
+ //@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Host Properties
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual bool getHostVendorString (char* text); ///< Fills \e text with a string identifying the vendor
+ virtual bool getHostProductString (char* text); ///< Fills \e text with a string with product name
+ virtual VstInt32 getHostVendorVersion (); ///< Returns vendor-specific version (for example 3200 for Nuendo 3.2)
+ virtual VstIntPtr hostVendorSpecific (VstInt32 lArg1, VstIntPtr lArg2, void* ptrArg, float floatArg); ///< No specific definition
+ virtual VstInt32 canHostDo (char* text); ///< Reports what the Host is able to do (#hostCanDos in audioeffectx.cpp)
+ virtual VstInt32 getHostLanguage (); ///< Returns the Host's language (#VstHostLanguage)
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Plug-in Properties
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual void isSynth (bool state = true); ///< Set if plug-in is a synth
+ virtual void noTail (bool state = true); ///< Plug-in won't produce output signals while there is no input
+ virtual VstInt32 getGetTailSize () { return 0; }///< Returns tail size; 0 is default (return 1 for 'no tail'), used in offline processing too
+ virtual void* getDirectory (); ///< Returns the plug-in's directory
+ virtual bool getEffectName (char* name) { return false; } ///< Fill \e text with a string identifying the effect
+ virtual bool getVendorString (char* text) { return false; } ///< Fill \e text with a string identifying the vendor
+ virtual bool getProductString (char* text) { return false; }///< Fill \e text with a string identifying the product name
+ virtual VstInt32 getVendorVersion () { return 0; } ///< Return vendor-specific version
+ virtual VstIntPtr vendorSpecific (VstInt32 lArg, VstIntPtr lArg2, void* ptrArg, float floatArg) { return 0; } ///< No definition, vendor specific handling
+ virtual VstInt32 canDo (char* text) { return 0; } ///< Reports what the plug-in is able to do (#plugCanDos in audioeffectx.cpp)
+ virtual VstInt32 getVstVersion () { return kVstVersion; } ///< Returns the current VST Version (#kVstVersion)
+ virtual VstPlugCategory getPlugCategory (); ///< Specify a category that fits the plug (#VstPlugCategory)
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name MIDI Channel Programs
+//-------------------------------------------------------------------------------------------------------
+//@{
+#if VST_2_1_EXTENSIONS
+ virtual VstInt32 getMidiProgramName (VstInt32 channel, MidiProgramName* midiProgramName) { return 0; } ///< Fill \e midiProgramName with information for 'thisProgramIndex'.
+ virtual VstInt32 getCurrentMidiProgram (VstInt32 channel, MidiProgramName* currentProgram) { return -1; } ///< Fill \e currentProgram with information for the current MIDI program.
+ virtual VstInt32 getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* category) { return 0; } ///< Fill \e category with information for 'thisCategoryIndex'.
+ virtual bool hasMidiProgramsChanged (VstInt32 channel) { return false; } ///< Return true if the #MidiProgramNames, #MidiKeyNames or #MidiControllerNames had changed on this MIDI channel.
+ virtual bool getMidiKeyName (VstInt32 channel, MidiKeyName* keyName) { return false; } ///< Fill \e keyName with information for 'thisProgramIndex' and 'thisKeyNumber'
+#endif // VST_2_1_EXTENSIONS
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Others
+//-------------------------------------------------------------------------------------------------------
+//@{
+ virtual bool updateDisplay (); ///< Something has changed in plug-in, request an update display like program (MIDI too) and parameters list in Host
+ virtual bool sizeWindow (VstInt32 width, VstInt32 height); ///< Requests to resize the editor window
+
+#if VST_2_1_EXTENSIONS
+ virtual bool openFileSelector (VstFileSelect* ptr); ///< Open a Host File selector (see aeffectx.h for #VstFileSelect definition)
+#endif // VST_2_1_EXTENSIONS
+
+#if VST_2_2_EXTENSIONS
+ virtual bool closeFileSelector (VstFileSelect* ptr); ///< Close the Host File selector which was opened by #openFileSelector
+#endif // VST_2_2_EXTENSIONS
+
+#if VST_2_3_EXTENSIONS
+ virtual VstInt32 getNextShellPlugin (char* name) { return 0; } ///< This opcode is only called, if the plug-in is of type #kPlugCategShell, in order to extract all included sub-plugin´s names.
+#endif // VST_2_3_EXTENSIONS
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+/// \name Tools
+//-------------------------------------------------------------------------------------------------------
+//@{
+#if VST_2_3_EXTENSIONS
+ virtual bool allocateArrangement (VstSpeakerArrangement** arrangement, VstInt32 nbChannels);///< Allocate memory for a #VstSpeakerArrangement
+ virtual bool deallocateArrangement (VstSpeakerArrangement** arrangement); ///< Delete/free memory for an allocated speaker arrangement
+ virtual bool copySpeaker (VstSpeakerProperties* to, VstSpeakerProperties* from); ///< Copy properties \e from to \e to
+ virtual bool matchArrangement (VstSpeakerArrangement** to, VstSpeakerArrangement* from); ///< "to" is deleted, then created and initialized with the same values as "from" ones ("from" must exist).
+#endif // VST_2_3_EXTENSIONS
+//@}
+
+//-------------------------------------------------------------------------------------------------------
+// Offline
+//-------------------------------------------------------------------------------------------------------
+/// @cond ignore
+ virtual bool offlineRead (VstOfflineTask* offline, VstOfflineOption option, bool readSource = true);
+ virtual bool offlineWrite (VstOfflineTask* offline, VstOfflineOption option);
+ virtual bool offlineStart (VstAudioFile* ptr, VstInt32 numAudioFiles, VstInt32 numNewAudioFiles);
+ virtual VstInt32 offlineGetCurrentPass ();
+ virtual VstInt32 offlineGetCurrentMetaPass ();
+ virtual bool offlineNotify (VstAudioFile* ptr, VstInt32 numAudioFiles, bool start) { return false; }
+ virtual bool offlinePrepare (VstOfflineTask* offline, VstInt32 count) { return false; }
+ virtual bool offlineRun (VstOfflineTask* offline, VstInt32 count) { return false; }
+ virtual VstInt32 offlineGetNumPasses () { return 0; }
+ virtual VstInt32 offlineGetNumMetaPasses () { return 0; }
+
+//-------------------------------------------------------------------------------------------------------
+// AudioEffect overrides
+//-------------------------------------------------------------------------------------------------------
+ virtual VstIntPtr dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt);
+ virtual void resume ();
+
+//-------------------------------------------------------------------------------------------------------
+// Deprecated methods
+//-------------------------------------------------------------------------------------------------------
+ virtual void DECLARE_VST_DEPRECATED (wantEvents) (VstInt32 filter = 1);
+ virtual VstInt32 DECLARE_VST_DEPRECATED (tempoAt) (VstInt32 pos);
+ virtual VstInt32 DECLARE_VST_DEPRECATED (getNumAutomatableParameters) ();
+ virtual VstInt32 DECLARE_VST_DEPRECATED (getParameterQuantization) ();
+ virtual VstInt32 DECLARE_VST_DEPRECATED (getNumCategories) () { return 1L; }
+ virtual bool DECLARE_VST_DEPRECATED (copyProgram) (VstInt32 destination) { return false; }
+ virtual bool DECLARE_VST_DEPRECATED (needIdle) ();
+ virtual AEffect* DECLARE_VST_DEPRECATED (getPreviousPlug) (VstInt32 input);
+ virtual AEffect* DECLARE_VST_DEPRECATED (getNextPlug) (VstInt32 output);
+ virtual void DECLARE_VST_DEPRECATED (inputConnected) (VstInt32 index, bool state) {}
+ virtual void DECLARE_VST_DEPRECATED (outputConnected) (VstInt32 index, bool state) {}
+ virtual VstInt32 DECLARE_VST_DEPRECATED (willProcessReplacing) ();
+ virtual void DECLARE_VST_DEPRECATED (wantAsyncOperation) (bool state = true);
+ virtual void DECLARE_VST_DEPRECATED (hasExternalBuffer) (bool state = true);
+ virtual VstInt32 DECLARE_VST_DEPRECATED (reportCurrentPosition) () { return 0; }
+ virtual float* DECLARE_VST_DEPRECATED (reportDestinationBuffer) () { return 0; }
+ virtual void DECLARE_VST_DEPRECATED (setOutputSamplerate) (float samplerate);
+ virtual VstSpeakerArrangement* DECLARE_VST_DEPRECATED (getInputSpeakerArrangement) ();
+ virtual VstSpeakerArrangement* DECLARE_VST_DEPRECATED (getOutputSpeakerArrangement) ();
+ virtual void* DECLARE_VST_DEPRECATED (openWindow) (DECLARE_VST_DEPRECATED (VstWindow)*);
+ virtual bool DECLARE_VST_DEPRECATED (closeWindow) (DECLARE_VST_DEPRECATED (VstWindow)*);
+ virtual void DECLARE_VST_DEPRECATED (setBlockSizeAndSampleRate) (VstInt32 _blockSize, float _sampleRate) { blockSize = _blockSize; sampleRate = _sampleRate; }
+ virtual bool DECLARE_VST_DEPRECATED (getErrorText) (char* text) { return false; }
+ virtual void* DECLARE_VST_DEPRECATED (getIcon) () { return 0; }
+ virtual bool DECLARE_VST_DEPRECATED (setViewPosition) (VstInt32 x, VstInt32 y) { return false; }
+ virtual VstInt32 DECLARE_VST_DEPRECATED (fxIdle) () { return 0; }
+ virtual bool DECLARE_VST_DEPRECATED (keysRequired) () { return false; }
+
+#if VST_2_2_EXTENSIONS
+ virtual bool DECLARE_VST_DEPRECATED (getChunkFile) (void* nativePath); ///< Returns in platform format the path of the current chunk (could be called in #setChunk ()) (FSSpec on MAC else char*)
+#endif // VST_2_2_EXTENSIONS
+/// @endcond
+//-------------------------------------------------------------------------------------------------------
+};
+
+#endif //__audioeffectx__
diff --git a/vendor/vstsdk2.4/public.sdk/source/vst2.x/vstplugmain.cpp b/vendor/vstsdk2.4/public.sdk/source/vst2.x/vstplugmain.cpp
new file mode 100644
index 0000000..78e7b34
--- /dev/null
+++ b/vendor/vstsdk2.4/public.sdk/source/vst2.x/vstplugmain.cpp
@@ -0,0 +1,68 @@
+//-------------------------------------------------------------------------------------------------------
+// VST Plug-Ins SDK
+// Version 2.4 $Date: 2006/08/29 12:08:50 $
+//
+// Category : VST 2.x Classes
+// Filename : vstplugmain.cpp
+// Created by : Steinberg Media Technologies
+// Description : VST Plug-In Main Entry
+//
+// © 2006, Steinberg Media Technologies, All Rights Reserved
+//-------------------------------------------------------------------------------------------------------
+
+#include "audioeffect.h"
+
+//------------------------------------------------------------------------
+/** Must be implemented externally. */
+extern AudioEffect* createEffectInstance (audioMasterCallback audioMaster);
+
+extern "C" {
+
+#if defined (__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
+ #define VST_EXPORT __attribute__ ((visibility ("default")))
+#else
+ #define VST_EXPORT
+#endif
+
+//------------------------------------------------------------------------
+/** Prototype of the export function main */
+//------------------------------------------------------------------------
+VST_EXPORT AEffect* VSTPluginMain (audioMasterCallback audioMaster)
+{
+ // Get VST Version of the Host
+ if (!audioMaster (0, audioMasterVersion, 0, 0, 0, 0))
+ return 0; // old version
+
+ // Create the AudioEffect
+ AudioEffect* effect = createEffectInstance (audioMaster);
+ if (!effect)
+ return 0;
+
+ // Return the VST AEffect structur
+ return effect->getAeffect ();
+}
+
+// support for old hosts not looking for VSTPluginMain
+#if (TARGET_API_MAC_CARBON && __ppc__)
+VST_EXPORT AEffect* main_macho (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); }
+#elif WIN32
+VST_EXPORT AEffect* MAIN (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); }
+#elif BEOS
+VST_EXPORT AEffect* main_plugin (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); }
+#endif
+
+} // extern "C"
+
+//------------------------------------------------------------------------
+#if WIN32
+#include <windows.h>
+void* hInstance;
+
+extern "C" {
+BOOL WINAPI DllMain (HINSTANCE hInst, DWORD dwReason, LPVOID lpvReserved)
+{
+ hInstance = hInst;
+ return 1;
+}
+} // extern "C"
+#endif