ScoreGeneratorVst.hpp
Go to the documentation of this file.00001
00022 #ifndef __SCOREGENERATORVST_H
00023 #define __SCOREGENERATORVST_H
00024
00025
00026 #ifdef _MSC_VER
00027 #include <windows.h>
00028 #include <mmsystem.h>
00029 #endif
00030
00031 #include "public.sdk/source/vst2.x/audioeffectx.h"
00032 #include "Shell.hpp"
00033 #include <list>
00034 #include <vector>
00035 #include <map>
00036 #include <Python.h>
00037
00038 class ScoreGeneratorVstFltk;
00039
00040 struct SILENCE_PUBLIC Preset
00041 {
00042 std::string name;
00043 std::string text;
00044 };
00045
00046 struct SILENCE_PUBLIC ScoreGeneratorEvent
00047 {
00048 double start;
00049 double duration;
00050 VstMidiEvent vstMidiEvent;
00051 };
00052
00053 class SILENCE_PUBLIC ScoreGeneratorVst :
00054 public AudioEffectX,
00055 public csound::Shell
00056 {
00057 protected:
00058 enum
00059 {
00060 kNumInputs = 2
00061 };
00062 enum
00063 {
00064 kNumOutputs = 2
00065 };
00066 enum
00067 {
00068 kNumPrograms = 10
00069 };
00070 std::multimap<double, ScoreGeneratorEvent> scoreGeneratorEvents;
00071 std::vector<VstMidiEvent> vstMidiEventsBuffer;
00072 VstEvents *vstEventsPointer;
00073 double vstFramesPerSecond;
00074 double vstSecondsPerFrame;
00075 double vstCurrentBlockStart;
00076 double vstCurrentBlockStartFrame;
00077 double vstInputLatency;
00078 double vstInputLatencySeconds;
00079 bool vstTransportActive;
00080 char alive;
00081 ScoreGeneratorVstFltk *scoreGeneratorVstFltk;
00082 PyObject *score;
00083 public:
00084 std::vector<Preset> bank;
00085
00086 ScoreGeneratorVst(audioMasterCallback audioMaster);
00087 virtual ~ScoreGeneratorVst();
00088 virtual AEffEditor *getEditor();
00089 virtual bool getEffectName(char* name);
00090 virtual bool getVendorString(char* name);
00091 virtual bool getProductString(char* name);
00092 virtual VstPlugCategory getPlugCategory();
00093 virtual VstInt32 canDo(char* text);
00094 virtual bool getInputProperties(VstInt32 index, VstPinProperties* properties);
00095 virtual bool getOutputProperties(VstInt32 index, VstPinProperties* properties);
00096 virtual bool keysRequired();
00097 virtual VstInt32 getProgram();
00098 virtual void setProgram(VstInt32 program);
00099 virtual void setProgramName(char *name);
00100 virtual void getProgramName(char *name);
00101 virtual bool copyProgram(VstInt32 destination);
00102 virtual bool getProgramNameIndexed(VstInt32 category, VstInt32 index, char* text);
00103 virtual VstInt32 getChunk(void** data, bool isPreset);
00104 virtual VstInt32 setChunk(void* data, VstInt32 byteSize, bool isPreset);
00105 virtual void suspend();
00106 virtual void resume();
00107 virtual VstInt32 processEvents(VstEvents *vstEvents);
00108 virtual void process(float **inputs, float **outputs, VstInt32 sampleFrames);
00109 virtual void processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames);
00110
00111
00112 ScoreGeneratorVst();
00113 virtual std::string getText();
00114 virtual void setText(const std::string text);
00115 virtual bool synchronizeScore(VstInt32 blockSize);
00116 virtual void reset();
00117 virtual void openFile(std::string filename);
00118 virtual void openView(bool doRun = true);
00119 virtual void closeView();
00120
00128 virtual int generate();
00132 virtual void clearEvents();
00139 virtual void sendEvents(VstInt32 frames);
00140
00145 virtual void open();
00151 virtual int runScript(std::string script_);
00156 virtual size_t event(double start, double duration, double status, double channel, double data1, double data2);
00161 virtual void log(char *message);
00162 virtual void logv(char *format,...);
00163 };
00164
00165 #endif
00166