diff options
Diffstat (limited to 'plugins/LV2/include/lv2plugin.h')
-rw-r--r-- | plugins/LV2/include/lv2plugin.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/plugins/LV2/include/lv2plugin.h b/plugins/LV2/include/lv2plugin.h index f8ae4da..46464a3 100644 --- a/plugins/LV2/include/lv2plugin.h +++ b/plugins/LV2/include/lv2plugin.h @@ -1,6 +1,10 @@ +#include <cstddef> +#include <iostream> + // Required typa alias for VTS processing funcs. using VstInt32 = int32_t; +template<size_t nparams, size_t ninputs = 2, size_t noutputs = 2> class LV2Plugin { public: @@ -8,11 +12,31 @@ public: : rate(frame_rate) {} + void connect_port(uint32_t port, void * data) + { + if (port < nparams) { + params[port] = static_cast<const float *>(data); + } + else if (port < nparams + ninputs) { + in[port - nparams] = static_cast<const float *>(data); + } + else if (port < nparams + ninputs + noutputs) { + out[port - nparams - ninputs] = static_cast<float *>(data); + } + else { + std::cerr << "Invalid port " << port << ": ignoring." << std::endl; + } + } + double getSampleRate() const { return rate; } + const float * params[nparams]; + const float * in[ninputs]; + float * out[noutputs]; + private: double rate; }; |