diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2020-07-20 23:00:38 +0200 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2020-07-20 23:00:38 +0200 |
commit | 8bd321abb4470fd050db9b46a1230dbc5e1b612e (patch) | |
tree | 2e6892aafb1a0a8c756d8f4ff715aa552944c760 /plugins/LV2/include/lv2plugin.h | |
parent | d94ee6218b6e3f65554c133d9e09044b99f86396 (diff) | |
download | airwindows-lv2-port-8bd321abb4470fd050db9b46a1230dbc5e1b612e.tar.gz airwindows-lv2-port-8bd321abb4470fd050db9b46a1230dbc5e1b612e.tar.bz2 airwindows-lv2-port-8bd321abb4470fd050db9b46a1230dbc5e1b612e.zip |
LV2: Refactor in, out and params to base class.
Base class is now a template taking number of params, inputs and outputs
as template args. The last two defaults to 2 (stereo pair), but number
of params have to be given.
Now if only we could find a smart template for generating the run
function too...
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; }; |