aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/vst
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2005-03-25 04:55:11 +0000
committerThomas Grill <xovo@users.sourceforge.net>2005-03-25 04:55:11 +0000
commitb3cfaffbe0124254f5da70857f6c1cec59184897 (patch)
tree0be6278fc661be17a1fe0ca65238adaebecafcaa /externals/grill/vst
parent7b21867fc1b9af84cd0f097b71f3bf456c9b5afd (diff)
small OSX things
experimenting a bit.... clean handling of plugin deletion (potentially open editor window etc.) svn path=/trunk/; revision=2646
Diffstat (limited to 'externals/grill/vst')
-rw-r--r--externals/grill/vst/src/editorwin.hpp5
-rw-r--r--externals/grill/vst/src/main.cpp21
-rw-r--r--externals/grill/vst/src/vsthost.cpp3
-rw-r--r--externals/grill/vst/src/vsthost.h14
-rw-r--r--externals/grill/vst/src/vstmaster.cpp29
-rw-r--r--externals/grill/vst/vst.vcproj4
6 files changed, 37 insertions, 39 deletions
diff --git a/externals/grill/vst/src/editorwin.hpp b/externals/grill/vst/src/editorwin.hpp
index 9d97771b..cbdd807f 100644
--- a/externals/grill/vst/src/editorwin.hpp
+++ b/externals/grill/vst/src/editorwin.hpp
@@ -56,7 +56,7 @@ static LRESULT CALLBACK wndproc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp)
case WM_TIMER: // fall through
case WM_ENTERIDLE:
- plug->EditorIdle();
+// plug->EditorIdle();
break;
#if 0
case WM_WINDOWPOSCHANGED: {
@@ -225,7 +225,10 @@ static void threadfun(flext::thr_params *p)
}
else {
TranslateMessage(&msg);
+// double tm1 = flext::GetOSTime();
DispatchMessage(&msg);
+// double tm2 = flext::GetOSTime();
+// if(tm2-tm1 > 0.01) FLEXT_LOG1("halt %lf",(tm2-tm1)*1000);
}
}
diff --git a/externals/grill/vst/src/main.cpp b/externals/grill/vst/src/main.cpp
index d90cac4a..d0e5a6c0 100644
--- a/externals/grill/vst/src/main.cpp
+++ b/externals/grill/vst/src/main.cpp
@@ -12,8 +12,8 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#include "main.h"
-#include "Editor.h"
-#include "VstHost.h"
+#include "editor.h"
+#include "vsthost.h"
#include <stdlib.h>
#include <string.h>
@@ -26,7 +26,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#endif
-#define VST_VERSION "0.1.0pre24"
+#define VST_VERSION "0.1.0pre26"
class vst
@@ -157,7 +157,7 @@ private:
int paramnames;
int blsz;
- void (VSTPlugin::*vstfun)(t_sample **insigs,t_sample **outsigs,long n);
+ bool (VSTPlugin::*vstfun)(t_sample **insigs,t_sample **outsigs,long n);
bool sigmatch;
t_sample **vstin,**vstout,**tmpin,**tmpout;
@@ -651,8 +651,12 @@ void vst::CbSignal()
for(; i < CntOutSig(); ++i)
ZeroSamples(outsigs[i],n);
}
- else if(sigmatch)
- (plug->*vstfun)(const_cast<t_sample **>(InSig()),const_cast<t_sample **>(OutSig()),Blocksize());
+ else if(sigmatch) {
+ if(!(plug->*vstfun)(const_cast<t_sample **>(InSig()),const_cast<t_sample **>(OutSig()),Blocksize())) {
+ for(int i = 0; i < CntOutSig(); ++i)
+ ZeroSamples(OutSig()[i],Blocksize());
+ }
+ }
else {
const int inputs = plug->GetNumInputs(),outputs = plug->GetNumOutputs();
const int cntin = CntInSig(),cntout = CntOutSig();
@@ -686,7 +690,10 @@ void vst::CbSignal()
}
// call plugin DSP function
- (plug->*vstfun)(inv,outv,n);
+ if(!(plug->*vstfun)(inv,outv,n)) {
+ for(int i = 0; i < outputs; ++i)
+ ZeroSamples(outsigs[i],n);
+ }
if(more) {
// according to mode set dangling output vectors
diff --git a/externals/grill/vst/src/vsthost.cpp b/externals/grill/vst/src/vsthost.cpp
index 384fca28..9553f38d 100644
--- a/externals/grill/vst/src/vsthost.cpp
+++ b/externals/grill/vst/src/vsthost.cpp
@@ -169,8 +169,7 @@ bool VSTPlugin::NewPlugin(const char *plugname)
dllname = plugname;
#if FLEXT_OS == FLEXT_OS_WIN
- FLEXT_ASSERT(!hdll);
- hdll = LoadLibrary(dllname.c_str());
+ hdll = LoadLibraryEx(dllname.c_str(),NULL,0 /*DONT_RESOLVE_DLL_REFERENCES*/);
if(hdll) pluginmain = (PVSTMAIN)GetProcAddress(hdll,"main");
audiomaster = Master;
diff --git a/externals/grill/vst/src/vsthost.h b/externals/grill/vst/src/vsthost.h
index 0b055d40..00225b62 100644
--- a/externals/grill/vst/src/vsthost.h
+++ b/externals/grill/vst/src/vsthost.h
@@ -216,7 +216,7 @@ public:
void AddPitchBend(int value)
{
- AddMIDI(MIDI_PITCHBEND+midichannel,((value>>7)&127),(value&127));
+ AddMIDI(MIDI_PITCHBEND+midichannel,(value&127),((value>>7)&127));
}
void AddAftertouch(int value)
@@ -291,21 +291,23 @@ private:
//////////////////////////////////////////////////////////////////////////////
public:
- void processReplacing(float **inputs,float **outputs,long sampleframes )
+ bool processReplacing(float **inputs,float **outputs,long sampleframes )
{
FLEXT_ASSERT(effect);
- effect->processReplacing(effect,inputs,outputs,sampleframes);
+ effect->processReplacing(effect,inputs,outputs,sampleframes);
if(playing) updatepos(sampleframes);
+ return true;
}
- void process(float **inputs,float **outputs,long sampleframes )
+ bool process(float **inputs,float **outputs,long sampleframes )
{
FLEXT_ASSERT(effect);
- effect->process(effect,inputs,outputs,sampleframes);
- if(playing) updatepos(sampleframes);
+ effect->process(effect,inputs,outputs,sampleframes);
+ return true;
}
private:
+
void updatepos(long frames);
//////////////////////////////////////////////////////////////////////////////
diff --git a/externals/grill/vst/src/vstmaster.cpp b/externals/grill/vst/src/vstmaster.cpp
index 00a93c80..03457f82 100644
--- a/externals/grill/vst/src/vstmaster.cpp
+++ b/externals/grill/vst/src/vstmaster.cpp
@@ -70,9 +70,8 @@ void VSTPlugin::ProcessEvent(const VstEvent &ev)
// Host callback dispatcher
long VSTPlugin::Master(AEffect *effect, long opcode, long index, long value, void *ptr, float opt)
{
-#ifdef FLEXT_LOGGING
- post("VST -> host: Eff = 0x%.8X, Opcode = %d, Index = %d, Value = %d, PTR = %.8X, OPT = %.3f\n",(int)effect, opcode,index,value,(int)ptr,opt);
-#endif
+ if(opcode != audioMasterGetTime)
+ FLEXT_LOG6("VST -> host: Eff = 0x%.8X, Opcode = %d, Index = %d, Value = %d, PTR = %.8X, OPT = %.3f\n",(int)effect, opcode,index,value,(int)ptr,opt);
VSTPlugin *th = effect?(VSTPlugin *)effect->user:NULL;
@@ -101,15 +100,11 @@ long VSTPlugin::Master(AEffect *effect, long opcode, long index, long value, voi
case audioMasterPinConnected: // 4
//! \todo set connection state correctly (if possible..)
// index=pin, value=0..input, else..output
-#ifdef FLEXT_LOGGING
- post("Pin connected pin=%li conn=%li",index,value);
-#endif
+ FLEXT_LOG2("Pin connected pin=%li conn=%li",index,value);
return 0; // 0 means connected
case audioMasterWantMidi: // 6
-#ifdef FLEXT_LOGGING
- post("Want MIDI = %li",value);
-#endif
+ FLEXT_LOG1("Want MIDI = %li",value);
return 0; // VST header says: "currently ignored"
case audioMasterGetTime: { // 7
@@ -166,9 +161,7 @@ long VSTPlugin::Master(AEffect *effect, long opcode, long index, long value, voi
case audioMasterSetTime: { // 9
VstTimeInfo *tminfo = static_cast<VstTimeInfo *>(ptr);
-#ifdef FLEXT_DEBUG
- post("TimeInfo pos=%lf rate=%lf filter=%li",tminfo->samplePos,tminfo->sampleRate,value);
-#endif
+ FLEXT_LOG3("TimeInfo pos=%lf rate=%lf filter=%li",tminfo->samplePos,tminfo->sampleRate,value);
return 0; // not supported
}
@@ -206,9 +199,7 @@ long VSTPlugin::Master(AEffect *effect, long opcode, long index, long value, voi
return VST_VERSION;
case audioMasterCanDo: // 37
-#ifdef FLEXT_LOGGING
- post("\taudioMasterCanDo PTR = %s",ptr);
-#endif
+ FLEXT_LOG1("\taudioMasterCanDo PTR = %s",ptr);
if(!strcmp((char *)ptr,"sendVstEvents"))
return 1;
else if(!strcmp((char *)ptr,"sendVstMidiEvent"))
@@ -259,15 +250,11 @@ long VSTPlugin::Master(AEffect *effect, long opcode, long index, long value, voi
return (long)(th?th->dllname.c_str():dllloading.c_str());
case audioMasterUpdateDisplay: // 42
-#ifdef FLEXT_LOGGING
- post("UPDATE DISPLAY");
-#endif
+ FLEXT_LOG("UPDATE DISPLAY");
return 0;
default:
-#ifdef FLEXT_DEBUG
- post("Unknown opcode %li",opcode);
-#endif
+ FLEXT_LOG1("Unknown opcode %li",opcode);
return 0;
}
}
diff --git a/externals/grill/vst/vst.vcproj b/externals/grill/vst/vst.vcproj
index aa447805..53803407 100644
--- a/externals/grill/vst/vst.vcproj
+++ b/externals/grill/vst/vst.vcproj
@@ -86,8 +86,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;..\flext\source;c:\data\prog\audio\vstsdk2.3\source\common"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_WIN32_WINNT=0x0501;WINVER=0x0501;_USRDLL;FLEXT_SYS=2;FLEXT_THREADS;xFLEXT_LOGGING"
+ AdditionalIncludeDirectories="&quot;c:\data\pd\pd-cvs\src&quot;;..\flext\source;c:\data\prog\audio\vstsdk2.3\source\common"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_WIN32_WINNT=0x0501;WINVER=0x0501;_USRDLL;FLEXT_SYS=2;FLEXT_THREADS;FLEXT_LOGGING"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"