aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/include/lv2plugin.h
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2020-07-20 23:00:38 +0200
committerHarald Eilertsen <haraldei@anduin.net>2020-07-20 23:00:38 +0200
commit8bd321abb4470fd050db9b46a1230dbc5e1b612e (patch)
tree2e6892aafb1a0a8c756d8f4ff715aa552944c760 /plugins/LV2/include/lv2plugin.h
parentd94ee6218b6e3f65554c133d9e09044b99f86396 (diff)
downloadairwindows-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.h24
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;
};