From a6191b14a38c4ffb858d89da2c82cc00600f9733 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Mon, 20 Dec 2004 05:11:56 +0000 Subject: use flext build system updated make system updated build system svn path=/trunk/; revision=2422 --- externals/grill/vst/src/vsthost.h | 380 +++++++++++++++++++------------------- 1 file changed, 190 insertions(+), 190 deletions(-) (limited to 'externals/grill/vst/src/vsthost.h') diff --git a/externals/grill/vst/src/vsthost.h b/externals/grill/vst/src/vsthost.h index f61aa87b..036f2806 100644 --- a/externals/grill/vst/src/vsthost.h +++ b/externals/grill/vst/src/vsthost.h @@ -1,190 +1,190 @@ -/* -vst~ - VST plugin object for PD -based on the work of Jarno Seppänen and Mark Williamson - -Copyright (c)2003-2004 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. -*/ - -#ifndef __VSTHOST_H -#define __VSTHOST_H - -#include -#include "AEffectx.h" -#include "AEffEditor.hpp" -#include - -#if FLEXT_OS == FLEXT_OS_WIN -#include -typedef HWND WHandle; -typedef HMODULE MHandle; -#elif FLEXT_OS == FLEXT_OS_MAC -#include -typedef Handle WHandle; -typedef void *MHandle; -#else -#error Platform not supported! -#endif - - -#define MAX_EVENTS 64 -#define MAX_INOUTS 8 - -#define VSTINSTANCE_ERR_NO_VALID_FILE -1 -#define VSTINSTANCE_ERR_NO_VST_PLUGIN -2 -#define VSTINSTANCE_ERR_REJECTED -3 -#define VSTINSTANCE_NO_ERROR 0 - -#define MIDI_NOTEON 144 -#define MIDI_NOTEOFF 128 -#define MIDI_POLYAFTERTOUCH 160 -#define MIDI_CONTROLCHANGE 176 -#define MIDI_PROGRAMCHANGE 192 -#define MIDI_AFTERTOUCH 208 -#define MIDI_PITCHBEND 224 - - -class VSTPlugin: - public flext -{ -public: - - VSTPlugin(); - ~VSTPlugin(); - - int Instance(const char *dllname); -// void Create(VSTPlugin *plug); - void Free(); - void DspInit(float samplerate,int blocksize); - - bool Is() const { return _pEffect != NULL; } - - long GetVersion() const { return _pEffect?_pEffect->version:0; } - - bool IsSynth() const { return HasFlags(effFlagsIsSynth); } - bool IsReplacing() const { return HasFlags(effFlagsCanReplacing); } - bool HasEditor() const { return HasFlags(effFlagsHasEditor); } - - const char *GetName() const { return _sProductName; } - const char *GetVendorName() const { return _sVendorName; } - const char *GetDllName() const { return _sDllName.c_str(); } - - int GetNumInputs() const { return _pEffect?_pEffect->numInputs:0; } - int GetNumOutputs() const { return _pEffect?_pEffect->numOutputs:0; } - - int GetNumParams() const { return _pEffect?_pEffect->numParams:0; } - void GetParamName(int numparam,char *name) const; - void GetParamValue(int numparam,char *parval) const; - float GetParamValue(int numparam) const; - - // scan plugin names (can take a _long_ time!!) - void ScanParams(int i = -1); - // get number of scanned parameters - int ScannedParams() const { return paramnamecnt; } - // get index of named (scanned) parameter... -1 if not found - int GetParamIx(const char *p) const; - - bool SetParamFloat(int parameter, float value); - bool SetParamInt(int parameter, int value) { return SetParamFloat(parameter,value/65535.0f); } - - void SetCurrentProgram(int prg) { Dispatch(effSetProgram,0,prg); } - int GetCurrentProgram() const { return Dispatch(effGetProgram); } - int GetNumPrograms() const { return _pEffect->numPrograms; } - - int GetNumCategories() const { return Dispatch(effGetNumProgramCategories); } - bool GetProgramName( int cat, int p , char* buf) const; - - - bool AddMIDI(unsigned char data0,unsigned char data1=0,unsigned char data2=0); - - bool AddNoteOn( unsigned char note,unsigned char speed,unsigned char midichannel=0); - bool AddNoteOff( unsigned char note,unsigned char midichannel=0); - - void AddControlChange( int control , int value ); - void AddProgramChange( int value ); - void AddPitchBend( int value ); - void AddAftertouch( int value ); - - void Edit(bool open); - - void StartEditing(WHandle h ); - void StopEditing(); - bool IsEdited() const { return hwnd != NULL; } - WHandle EditorHandle() const { return hwnd; } - - void GetEditorRect(ERect &er) const { ERect *r; Dispatch(effEditGetRect,0,0,&r); er = *r; } - void EditorIdle() { Dispatch(effEditIdle); } - - void Visible(bool vis); - bool IsVisible() const; - - void Paint(ERect &r) const { Dispatch(effEditDraw,0,0,&r); } - - void processReplacing( float **inputs, float **outputs, long sampleframes ); - void process( float **inputs, float **outputs, long sampleframes ); - - long Dispatch(long opCode, long index = 0, long value = 0, void *ptr = NULL, float opt = 0) const - { - return Is()?_pEffect->dispatcher(_pEffect, opCode, index, value, ptr, opt):0; - } - - static long VSTCALLBACK Master(AEffect *effect, long opcode, long index, long value, void *ptr, float opt); - - void SetPos(int x,int y,bool upd = true); - void SetX(int x,bool upd = true) { SetPos(x,posy,upd); } - void SetY(int y,bool upd = true) { SetPos(posx,y,upd); } - int GetX() const { return posx; } - int GetY() const { return posy; } - void SetCaption(bool b); - bool GetCaption() const { return caption; } - void SetTitle(const char *t); - const char *GetTitle() const { return title.c_str(); } - -protected: - - MHandle h_dll; - WHandle hwnd; - - AEffect *_pEffect; - - static void FreeVST(MHandle handle); - - inline long GetFlags() const { return _pEffect?_pEffect->flags:0; } - inline bool HasFlags(long msk) const { return _pEffect && (_pEffect->flags&msk); } - - char _sProductName[300]; - char _sVendorName[300]; - std::string _sDllName; // Contains dll name - - struct NameCmp: - std::less - { - bool operator()(const std::string &a,const std::string &b) const { return a.compare(b) < 0; } - }; - - typedef std::map NameMap; - int paramnamecnt; - NameMap paramnames; - -/* - float *inputs[MAX_INOUTS]; - float *outputs[MAX_INOUTS]; -*/ - -// static VstTimeInfo _timeInfo; - VstMidiEvent midievent[MAX_EVENTS]; - VstEvents events; - int queue_size; - -// float sample_rate; - - void SendMidi(); - char _midichannel; - - int posx,posy; // Window position - bool caption; // Window border - std::string title; // Window title -}; - -#endif +/* +vst~ - VST plugin object for PD +based on the work of Jarno Seppänen and Mark Williamson + +Copyright (c)2003-2004 Thomas Grill (xovo@gmx.net) +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see the file, "license.txt," in this distribution. +*/ + +#ifndef __VSTHOST_H +#define __VSTHOST_H + +#include +#include "AEffectx.h" +#include "AEffEditor.hpp" +#include + +#if FLEXT_OS == FLEXT_OS_WIN +#include +typedef HWND WHandle; +typedef HMODULE MHandle; +#elif FLEXT_OS == FLEXT_OS_MAC +#include +typedef Handle WHandle; +typedef void *MHandle; +#else +#error Platform not supported! +#endif + + +#define MAX_EVENTS 64 +#define MAX_INOUTS 8 + +#define VSTINSTANCE_ERR_NO_VALID_FILE -1 +#define VSTINSTANCE_ERR_NO_VST_PLUGIN -2 +#define VSTINSTANCE_ERR_REJECTED -3 +#define VSTINSTANCE_NO_ERROR 0 + +#define MIDI_NOTEON 144 +#define MIDI_NOTEOFF 128 +#define MIDI_POLYAFTERTOUCH 160 +#define MIDI_CONTROLCHANGE 176 +#define MIDI_PROGRAMCHANGE 192 +#define MIDI_AFTERTOUCH 208 +#define MIDI_PITCHBEND 224 + + +class VSTPlugin: + public flext +{ +public: + + VSTPlugin(); + ~VSTPlugin(); + + int Instance(const char *dllname); +// void Create(VSTPlugin *plug); + void Free(); + void DspInit(float samplerate,int blocksize); + + bool Is() const { return _pEffect != NULL; } + + long GetVersion() const { return _pEffect?_pEffect->version:0; } + + bool IsSynth() const { return HasFlags(effFlagsIsSynth); } + bool IsReplacing() const { return HasFlags(effFlagsCanReplacing); } + bool HasEditor() const { return HasFlags(effFlagsHasEditor); } + + const char *GetName() const { return _sProductName; } + const char *GetVendorName() const { return _sVendorName; } + const char *GetDllName() const { return _sDllName.c_str(); } + + int GetNumInputs() const { return _pEffect?_pEffect->numInputs:0; } + int GetNumOutputs() const { return _pEffect?_pEffect->numOutputs:0; } + + int GetNumParams() const { return _pEffect?_pEffect->numParams:0; } + void GetParamName(int numparam,char *name) const; + void GetParamValue(int numparam,char *parval) const; + float GetParamValue(int numparam) const; + + // scan plugin names (can take a _long_ time!!) + void ScanParams(int i = -1); + // get number of scanned parameters + int ScannedParams() const { return paramnamecnt; } + // get index of named (scanned) parameter... -1 if not found + int GetParamIx(const char *p) const; + + bool SetParamFloat(int parameter, float value); + bool SetParamInt(int parameter, int value) { return SetParamFloat(parameter,value/65535.0f); } + + void SetCurrentProgram(int prg) { Dispatch(effSetProgram,0,prg); } + int GetCurrentProgram() const { return Dispatch(effGetProgram); } + int GetNumPrograms() const { return _pEffect->numPrograms; } + + int GetNumCategories() const { return Dispatch(effGetNumProgramCategories); } + bool GetProgramName( int cat, int p , char* buf) const; + + + bool AddMIDI(unsigned char data0,unsigned char data1=0,unsigned char data2=0); + + bool AddNoteOn( unsigned char note,unsigned char speed,unsigned char midichannel=0); + bool AddNoteOff( unsigned char note,unsigned char midichannel=0); + + void AddControlChange( int control , int value ); + void AddProgramChange( int value ); + void AddPitchBend( int value ); + void AddAftertouch( int value ); + + void Edit(bool open); + + void StartEditing(WHandle h ); + void StopEditing(); + bool IsEdited() const { return hwnd != NULL; } + WHandle EditorHandle() const { return hwnd; } + + void GetEditorRect(ERect &er) const { ERect *r; Dispatch(effEditGetRect,0,0,&r); er = *r; } + void EditorIdle() { Dispatch(effEditIdle); } + + void Visible(bool vis); + bool IsVisible() const; + + void Paint(ERect &r) const { Dispatch(effEditDraw,0,0,&r); } + + void processReplacing( float **inputs, float **outputs, long sampleframes ); + void process( float **inputs, float **outputs, long sampleframes ); + + long Dispatch(long opCode, long index = 0, long value = 0, void *ptr = NULL, float opt = 0) const + { + return Is()?_pEffect->dispatcher(_pEffect, opCode, index, value, ptr, opt):0; + } + + static long VSTCALLBACK Master(AEffect *effect, long opcode, long index, long value, void *ptr, float opt); + + void SetPos(int x,int y,bool upd = true); + void SetX(int x,bool upd = true) { SetPos(x,posy,upd); } + void SetY(int y,bool upd = true) { SetPos(posx,y,upd); } + int GetX() const { return posx; } + int GetY() const { return posy; } + void SetCaption(bool b); + bool GetCaption() const { return caption; } + void SetTitle(const char *t); + const char *GetTitle() const { return title.c_str(); } + +protected: + + MHandle h_dll; + WHandle hwnd; + + AEffect *_pEffect; + + static void FreeVST(MHandle handle); + + inline long GetFlags() const { return _pEffect?_pEffect->flags:0; } + inline bool HasFlags(long msk) const { return _pEffect && (_pEffect->flags&msk); } + + char _sProductName[300]; + char _sVendorName[300]; + std::string _sDllName; // Contains dll name + + struct NameCmp: + std::less + { + bool operator()(const std::string &a,const std::string &b) const { return a.compare(b) < 0; } + }; + + typedef std::map NameMap; + int paramnamecnt; + NameMap paramnames; + +/* + float *inputs[MAX_INOUTS]; + float *outputs[MAX_INOUTS]; +*/ + +// static VstTimeInfo _timeInfo; + VstMidiEvent midievent[MAX_EVENTS]; + VstEvents events; + int queue_size; + +// float sample_rate; + + void SendMidi(); + char _midichannel; + + int posx,posy; // Window position + bool caption; // Window border + std::string title; // Window title +}; + +#endif -- cgit v1.2.1