diff options
Diffstat (limited to 'vendor/vstsdk2.4/public.sdk')
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 Binary files differnew file mode 100644 index 0000000..1e3b523 --- /dev/null +++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmp 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 Binary files differnew file mode 100644 index 0000000..275e4aa --- /dev/null +++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmp 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 Binary files differnew file mode 100644 index 0000000..e272640 --- /dev/null +++ b/vendor/vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmp 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 |
