Added libappleutility from /Developer/Examples/CoreAudio/PublicUtility
[ardour.git] / libs / ardour / ardour / plugin_manager.h
1 #ifndef __ardour_plugin_manager_h__
2 #define __ardour_plugin_manager_h__
3
4 #include <list>
5 #include <map>
6 #include <string>
7
8 #include <boost/shared_ptr.hpp>
9
10 #include <ardour/types.h>
11 #include <ardour/plugin.h>
12 #include <ardour/audio_unit.h>
13
14 namespace ARDOUR {
15
16 class PluginInfo;
17 class Plugin;
18 class Session;
19 class AudioEngine;
20
21 class PluginManager {
22   public:
23         PluginManager (ARDOUR::AudioEngine&);
24         ~PluginManager ();
25
26         ARDOUR::PluginInfoList &vst_plugin_info () { return _vst_plugin_info; }
27         ARDOUR::PluginInfoList &ladspa_plugin_info () { return _ladspa_plugin_info; }
28
29         void refresh ();
30
31         int add_ladspa_directory (std::string dirpath);
32         int add_vst_directory (std::string dirpath);
33
34         boost::shared_ptr<Plugin> load (ARDOUR::Session& s, PluginInfoPtr info);
35
36         static PluginManager* the_manager() { return _manager; }
37
38   private:
39         ARDOUR::AudioEngine&   _engine;
40         ARDOUR::PluginInfoList _vst_plugin_info;
41         ARDOUR::PluginInfoList _ladspa_plugin_info;
42         std::map<uint32_t, std::string> rdf_type;
43
44         std::string ladspa_path;
45         std::string vst_path;
46
47         void ladspa_refresh ();
48         void vst_refresh ();
49
50         void add_lrdf_data (const std::string &path);
51         void add_ladspa_presets ();
52         void add_vst_presets ();
53         void add_presets (std::string domain);
54
55         int vst_discover_from_path (std::string path);
56         int vst_discover (std::string path);
57
58         int ladspa_discover_from_path (std::string path);
59         int ladspa_discover (std::string path);
60
61         std::string get_ladspa_category (uint32_t id);
62
63         static PluginManager* _manager; // singleton
64 };
65
66 } /* namespace ARDOUR */
67
68 #endif /* __ardour_plugin_manager_h__ */
69