LV2 specific instrument-plugin check
authorRobin Gareus <robin@gareus.org>
Thu, 10 Dec 2015 16:20:08 +0000 (17:20 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 10 Dec 2015 16:20:08 +0000 (17:20 +0100)
libs/ardour/ardour/lv2_plugin.h
libs/ardour/lv2_plugin.cc

index a0572b5af73c11846721452c9ae50424c56eef37..145b48a24be4bc56f268d0472a484c420c459eff 100644 (file)
@@ -280,6 +280,7 @@ public:
 
        PluginPtr load (Session& session);
        virtual bool in_category (const std::string &c) const;
+       virtual bool is_instrument() const;
 
        char * _plugin_uri;
 };
index 940ec8ae0389ac49a47057a89da98f5550fb2f0a..7c9e901ebbb2d3a91a17ada48c71991c03790155 100644 (file)
@@ -2602,6 +2602,23 @@ LV2PluginInfo::in_category (const std::string &c) const
        return false;
 }
 
+bool
+LV2PluginInfo::is_instrument () const
+{
+       if (category == "Instrument") {
+               return true;
+       }
+#if 1
+       /* until we make sure that category remains untranslated in the lv2.ttl spec
+        * and until most instruments also classify themselves as such, there's a 2nd check:
+        */
+       if (n_inputs.n_midi() > 0 && n_inputs.n_audio() == 0 && n_outputs.n_audio() > 0) {
+               return true;
+       }
+#endif
+       return false;
+}
+
 PluginInfoList*
 LV2PluginInfo::discover()
 {