diff options
-rw-r--r-- | libs/ardour/ardour/lxvst_plugin.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/mac_vst_plugin.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/vst_plugin.h | 11 | ||||
-rw-r--r-- | libs/ardour/ardour/windows_vst_plugin.h | 4 | ||||
-rw-r--r-- | libs/ardour/lxvst_plugin.cc | 4 | ||||
-rw-r--r-- | libs/ardour/mac_vst_plugin.cc | 2 | ||||
-rw-r--r-- | libs/ardour/plugin_manager.cc | 67 | ||||
-rw-r--r-- | libs/ardour/vst_plugin.cc | 30 | ||||
-rw-r--r-- | libs/ardour/windows_vst_plugin.cc | 4 |
9 files changed, 56 insertions, 74 deletions
diff --git a/libs/ardour/ardour/lxvst_plugin.h b/libs/ardour/ardour/lxvst_plugin.h index 5a35d9832e..25703956c7 100644 --- a/libs/ardour/ardour/lxvst_plugin.h +++ b/libs/ardour/ardour/lxvst_plugin.h @@ -40,10 +40,10 @@ class LIBARDOUR_API LXVSTPlugin : public VSTPlugin std::string state_node_name () const { return "lxvst"; } }; -class LIBARDOUR_API LXVSTPluginInfo : public PluginInfo +class LIBARDOUR_API LXVSTPluginInfo : public VSTPluginInfo { public: - LXVSTPluginInfo (); + LXVSTPluginInfo (_VSTInfo*); ~LXVSTPluginInfo () {} PluginPtr load (Session& session); diff --git a/libs/ardour/ardour/mac_vst_plugin.h b/libs/ardour/ardour/mac_vst_plugin.h index fa05dff80f..d7ab8c2698 100644 --- a/libs/ardour/ardour/mac_vst_plugin.h +++ b/libs/ardour/ardour/mac_vst_plugin.h @@ -42,10 +42,10 @@ protected: void open_plugin (); }; -class LIBARDOUR_API MacVSTPluginInfo : public PluginInfo +class LIBARDOUR_API MacVSTPluginInfo : public VSTPluginInfo { public: - MacVSTPluginInfo (); + MacVSTPluginInfo (_VSTInfo*); ~MacVSTPluginInfo () {} PluginPtr load (Session& session); diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h index b2189143d3..21ac6775ad 100644 --- a/libs/ardour/ardour/vst_plugin.h +++ b/libs/ardour/ardour/vst_plugin.h @@ -32,6 +32,8 @@ typedef struct _VSTState VSTState; #include "ardour/vestige/vestige.h" +struct _VSTInfo; + namespace ARDOUR { class PluginInsert; @@ -134,6 +136,15 @@ protected: bool _eff_bypassed; }; +class LIBARDOUR_API VSTPluginInfo : public PluginInfo +{ +public: + VSTPluginInfo (_VSTInfo*); + bool is_instrument () const; +protected: + bool _is_instrument; +}; + } #endif diff --git a/libs/ardour/ardour/windows_vst_plugin.h b/libs/ardour/ardour/windows_vst_plugin.h index 7566eab098..fbbe8d1491 100644 --- a/libs/ardour/ardour/windows_vst_plugin.h +++ b/libs/ardour/ardour/windows_vst_plugin.h @@ -40,10 +40,10 @@ public: std::string state_node_name () const { return "windows-vst"; } }; -class LIBARDOUR_API WindowsVSTPluginInfo : public PluginInfo +class LIBARDOUR_API WindowsVSTPluginInfo : public VSTPluginInfo { public: - WindowsVSTPluginInfo (); + WindowsVSTPluginInfo (_VSTInfo*); ~WindowsVSTPluginInfo () {} PluginPtr load (Session& session); diff --git a/libs/ardour/lxvst_plugin.cc b/libs/ardour/lxvst_plugin.cc index 8bfd5d61d3..d9aa971387 100644 --- a/libs/ardour/lxvst_plugin.cc +++ b/libs/ardour/lxvst_plugin.cc @@ -168,8 +168,8 @@ LXVSTPluginInfo::get_presets (bool user_only) const return p; } -LXVSTPluginInfo::LXVSTPluginInfo() +LXVSTPluginInfo::LXVSTPluginInfo (_VSTInfo* nfo) : VSTPluginInfo (nfo) { - type = ARDOUR::LXVST; + type = ARDOUR::LXVST; } diff --git a/libs/ardour/mac_vst_plugin.cc b/libs/ardour/mac_vst_plugin.cc index 240da414a0..60ff7220bd 100644 --- a/libs/ardour/mac_vst_plugin.cc +++ b/libs/ardour/mac_vst_plugin.cc @@ -175,7 +175,7 @@ MacVSTPluginInfo::get_presets (bool user_only) const return p; } -MacVSTPluginInfo::MacVSTPluginInfo () +MacVSTPluginInfo::MacVSTPluginInfo (_VSTInfo* nfo) : VSTPluginInfo (nfo) { type = ARDOUR::MacVST; } diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index aa151aa975..06a7e0ee77 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -993,7 +993,6 @@ PluginManager::windows_vst_discover (string path, bool cache_only) uint32_t discovered = 0; for (vector<VSTInfo *>::iterator x = finfos->begin(); x != finfos->end(); ++x) { VSTInfo* finfo = *x; - char buf[32]; if (!finfo->canProcessReplacing) { warning << string_compose (_("VST plugin %1 does not support processReplacing, and cannot be used in %2 at this time"), @@ -1002,33 +1001,14 @@ PluginManager::windows_vst_discover (string path, bool cache_only) continue; } - PluginInfoPtr info (new WindowsVSTPluginInfo); + PluginInfoPtr info (new WindowsVSTPluginInfo (finfo)); + info->path = path; /* what a joke freeware VST is */ - if (!strcasecmp ("The Unnamed plugin", finfo->name)) { info->name = PBD::basename_nosuffix (path); - } else { - info->name = finfo->name; } - - snprintf (buf, sizeof (buf), "%d", finfo->UniqueID); - info->unique_id = buf; - if (finfo->isInstrument) { - info->category = X_("Instrument"); - } else { - info->category = finfo->Category; - } - info->path = path; - info->creator = finfo->creator; - info->index = 0; - info->n_inputs.set_audio (finfo->numInputs); - info->n_outputs.set_audio (finfo->numOutputs); - info->n_inputs.set_midi ((finfo->wantMidi&1) ? 1 : 0); - info->n_outputs.set_midi ((finfo->wantMidi&2) ? 1 : 0); - info->type = ARDOUR::Windows_VST; - /* if we don't have any tags for this plugin, make some up. */ set_tags (info->type, info->unique_id, info->category, info->name, FromPlug); @@ -1144,7 +1124,6 @@ PluginManager::mac_vst_discover (string path, bool cache_only) uint32_t discovered = 0; for (vector<VSTInfo *>::iterator x = finfos->begin(); x != finfos->end(); ++x) { VSTInfo* finfo = *x; - char buf[32]; if (!finfo->canProcessReplacing) { warning << string_compose (_("Mac VST plugin %1 does not support processReplacing, and so cannot be used in %2 at this time"), @@ -1153,25 +1132,8 @@ PluginManager::mac_vst_discover (string path, bool cache_only) continue; } - PluginInfoPtr info (new MacVSTPluginInfo); - - info->name = finfo->name; - - snprintf (buf, sizeof (buf), "%d", finfo->UniqueID); - info->unique_id = buf; - if (finfo->isInstrument) { - info->category = X_("Instrument"); - } else { - info->category = finfo->Category; - } + PluginInfoPtr info (new MacVSTPluginInfo (finfo)); info->path = path; - info->creator = finfo->creator; - info->index = 0; - info->n_inputs.set_audio (finfo->numInputs); - info->n_outputs.set_audio (finfo->numOutputs); - info->n_inputs.set_midi ((finfo->wantMidi&1) ? 1 : 0); - info->n_outputs.set_midi ((finfo->wantMidi&2) ? 1 : 0); - info->type = ARDOUR::MacVST; /* if we don't have any tags for this plugin, make some up. */ set_tags (info->type, info->unique_id, info->category, info->name, FromPlug); @@ -1265,7 +1227,6 @@ PluginManager::lxvst_discover (string path, bool cache_only) uint32_t discovered = 0; for (vector<VSTInfo *>::iterator x = finfos->begin(); x != finfos->end(); ++x) { VSTInfo* finfo = *x; - char buf[32]; if (!finfo->canProcessReplacing) { warning << string_compose (_("linuxVST plugin %1 does not support processReplacing, and so cannot be used in %2 at this time"), @@ -1274,31 +1235,13 @@ PluginManager::lxvst_discover (string path, bool cache_only) continue; } - PluginInfoPtr info(new LXVSTPluginInfo); + PluginInfoPtr info(new LXVSTPluginInfo (finfo)); + info->path = path; if (!strcasecmp ("The Unnamed plugin", finfo->name)) { info->name = PBD::basename_nosuffix (path); - } else { - info->name = finfo->name; } - - snprintf (buf, sizeof (buf), "%d", finfo->UniqueID); - info->unique_id = buf; - if (finfo->isInstrument) { - info->category = X_("Instrument"); - } else { - info->category = finfo->Category; - } - info->path = path; - info->creator = finfo->creator; - info->index = 0; - info->n_inputs.set_audio (finfo->numInputs); - info->n_outputs.set_audio (finfo->numOutputs); - info->n_inputs.set_midi ((finfo->wantMidi&1) ? 1 : 0); - info->n_outputs.set_midi ((finfo->wantMidi&2) ? 1 : 0); - info->type = ARDOUR::LXVST; - set_tags (info->type, info->unique_id, info->category, info->name, FromPlug); /* Make sure we don't find the same plugin in more than one place along diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index cbd88877cd..4183283bff 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -27,10 +27,10 @@ #include "pbd/floating.h" #include "pbd/locale_guard.h" +#include "ardour/vst_types.h" #include "ardour/vst_plugin.h" #include "ardour/vestige/vestige.h" #include "ardour/session.h" -#include "ardour/vst_types.h" #include "ardour/filesystem_paths.h" #include "ardour/audio_buffer.h" @@ -923,3 +923,31 @@ VSTPlugin::presets_file () const return string("vst-") + unique_id (); } + +VSTPluginInfo::VSTPluginInfo (VSTInfo* nfo) +{ + + char buf[32]; + snprintf (buf, sizeof (buf), "%d", nfo->UniqueID); + unique_id = buf; + + index = 0; + + name = nfo->name; + creator = nfo->creator; + n_inputs.set_audio (nfo->numInputs); + n_outputs.set_audio (nfo->numOutputs); + n_inputs.set_midi ((nfo->wantMidi & 1) ? 1 : 0); + n_outputs.set_midi ((nfo->wantMidi & 2) ? 1 : 0); + + _is_instrument = nfo->isInstrument; +} + +bool +VSTPluginInfo::is_instrument () const +{ + if (_is_instrument) { + return true; + } + return PluginInfo::is_instrument (); +} diff --git a/libs/ardour/windows_vst_plugin.cc b/libs/ardour/windows_vst_plugin.cc index 4bfe822645..7a7caa9ed8 100644 --- a/libs/ardour/windows_vst_plugin.cc +++ b/libs/ardour/windows_vst_plugin.cc @@ -134,8 +134,8 @@ WindowsVSTPluginInfo::get_presets (bool user_only) const return p; } -WindowsVSTPluginInfo::WindowsVSTPluginInfo() +WindowsVSTPluginInfo::WindowsVSTPluginInfo (_VSTInfo* nfo) : VSTPluginInfo (nfo) { - type = ARDOUR::Windows_VST; + type = ARDOUR::Windows_VST; } |