summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-03 18:28:33 +0200
committerRobin Gareus <robin@gareus.org>2016-04-03 22:45:23 +0200
commitb23ef978452f1f69d99fa9c04fe3ced9ee7450d4 (patch)
treed4deb72492249ed2d76049edd1e64346578a8dce /libs
parentfe1985c3e3cfbaa73c8986710f97afc1cfbe076b (diff)
add Plugin API to query port-labels and side-chain property.
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/plugin.h16
-rw-r--r--libs/ardour/plugin.cc27
2 files changed, 43 insertions, 0 deletions
diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h
index 65cb1f6c36..e219ec5bdd 100644
--- a/libs/ardour/ardour/plugin.h
+++ b/libs/ardour/ardour/plugin.h
@@ -102,6 +102,22 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent
virtual bool parameter_is_input(uint32_t) const = 0;
virtual bool parameter_is_output(uint32_t) const = 0;
+ struct LIBARDOUR_API IOPortDescription {
+ public:
+ IOPortDescription (const std::string& n)
+ : name (n)
+ , is_sidechain (false)
+ {}
+ IOPortDescription (const IOPortDescription &other)
+ : name (other.name)
+ , is_sidechain (other.is_sidechain)
+ {}
+ std::string name;
+ bool is_sidechain;
+ };
+
+ virtual IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id);
+
virtual void set_automation_control (uint32_t /*port_index*/, boost::shared_ptr<ARDOUR::AutomationControl>) { }
virtual boost::shared_ptr<ScalePoints> get_scale_points(uint32_t /*port_index*/) const {
diff --git a/libs/ardour/plugin.cc b/libs/ardour/plugin.cc
index 4bb5b02c77..61141301cb 100644
--- a/libs/ardour/plugin.cc
+++ b/libs/ardour/plugin.cc
@@ -257,6 +257,33 @@ Plugin::input_streams () const
return ChanCount::ZERO;
}
+Plugin::IOPortDescription
+Plugin::describe_io_port (ARDOUR::DataType dt, bool input, uint32_t id)
+{
+ std::stringstream ss;
+ switch (dt) {
+ case DataType::AUDIO:
+ ss << _("Audio") << " ";
+ break;
+ case DataType::MIDI:
+ ss << _("Midi") << " ";
+ break;
+ default:
+ ss << _("?") << " ";
+ break;
+ }
+ if (input) {
+ ss << _("In") << " ";
+ } else {
+ ss << _("Out") << " ";
+ }
+
+ ss << id;
+
+ Plugin::IOPortDescription iod (ss.str());
+ return iod;
+}
+
const Plugin::PresetRecord *
Plugin::preset_by_label (const string& label)
{