summaryrefslogtreecommitdiff
path: root/libs/ardour/plugin.cc
diff options
context:
space:
mode:
authorTaybin Rutkin <taybin@taybin.com>2006-08-03 21:19:34 +0000
committerTaybin Rutkin <taybin@taybin.com>2006-08-03 21:19:34 +0000
commit56d5c7c713a8a170d9181111952c5fb792d879f6 (patch)
treec1e7be9bd4a6281dc011a605e4ae7a5af07d3282 /libs/ardour/plugin.cc
parent5fdfe49406db9de3431b099cd89a2233f43a6163 (diff)
Start using libappleutility
More AudioUnit work git-svn-id: svn://localhost/ardour2/trunk@753 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/plugin.cc')
-rw-r--r--libs/ardour/plugin.cc42
1 files changed, 42 insertions, 0 deletions
diff --git a/libs/ardour/plugin.cc b/libs/ardour/plugin.cc
index 6763e7f508..8ea95b8903 100644
--- a/libs/ardour/plugin.cc
+++ b/libs/ardour/plugin.cc
@@ -39,6 +39,8 @@
#include <ardour/session.h>
#include <ardour/audioengine.h>
#include <ardour/plugin.h>
+#include <ardour/ladspa_plugin.h>
+#include <ardour/plugin_manager.h>
#include <pbd/stl_delete.h>
@@ -240,3 +242,43 @@ Plugin::save_preset (string name, string domain)
return true;
}
+
+PluginPtr
+ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginInfo::Type type)
+{
+ PluginManager *mgr = PluginManager::the_manager();
+ PluginInfoList plugs;
+
+ switch (type) {
+ case PluginInfo::LADSPA:
+ plugs = mgr->ladspa_plugin_info();
+ break;
+
+#ifdef VST_SUPPORT
+ case PluginInfo::VST:
+ plugs = mgr->vst_plugin_info();
+ unique_id = 0; // VST plugins don't have a unique id.
+ break;
+#endif
+
+#ifdef HAVE_COREAUDIO
+ case PluginInfo::AudioUnit:
+ plugs = AUPluginInfo::discover ();
+ unique_id = 0; // Neither do AU.
+ break;
+#endif
+
+ default:
+ return PluginPtr ((Plugin *) 0);
+ }
+
+ PluginInfoList::iterator i;
+ for (i = plugs.begin(); i != plugs.end(); ++i) {
+ if ((name == "" || (*i)->name == name) &&
+ (unique_id == 0 || (*i)->unique_id == unique_id)) {
+ return (*i)->load (session);
+ }
+ }
+
+ return PluginPtr ((Plugin*) 0);
+}