aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/include/lv2plugin.h
diff options
context:
space:
mode:
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;
};