along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id$
*/
+#define __STDC_FORMAT_MACROS 1
+#include <stdint.h>
+
#include <sys/types.h>
#include <cstdio>
#include <lrdf.h>
#include <ardour/vst_plugin.h>
#endif
+#ifdef HAVE_AUDIOUNITS
+#include <ardour/audio_unit.h>
+#endif
+
#include <pbd/error.h>
#include <pbd/stl_delete.h>
vst_path = s;
}
- refresh ();
if (_manager == 0) {
_manager = this;
}
+
+ /* the plugin manager is constructed too early to use Profile */
+
+ if (getenv ("ARDOUR_SAE")) {
+ ladspa_plugin_whitelist.push_back (1203); // single band parametric
+ ladspa_plugin_whitelist.push_back (1772); // caps compressor
+ ladspa_plugin_whitelist.push_back (1913); // fast lookahead limiter
+ ladspa_plugin_whitelist.push_back (1075); // simple RMS expander
+ ladspa_plugin_whitelist.push_back (1061); // feedback delay line (max 5s)
+ ladspa_plugin_whitelist.push_back (1216); // gverb
+ ladspa_plugin_whitelist.push_back (2150); // tap pitch shifter
+ }
+
+ refresh ();
}
void
vst_refresh ();
}
#endif // VST_SUPPORT
+#ifdef HAVE_AUDIOUNITS
+ au_refresh ();
+#endif
}
void
ladspa_discover_from_path (ladspa_path);
}
+
int
PluginManager::add_ladspa_directory (string path)
{
break;
}
+ if (!ladspa_plugin_whitelist.empty()) {
+ if (find (ladspa_plugin_whitelist.begin(), ladspa_plugin_whitelist.end(), descriptor->UniqueID) == ladspa_plugin_whitelist.end()) {
+ continue;
+ }
+ }
+
PluginInfoPtr info(new LadspaPluginInfo);
info->name = descriptor->Name;
info->category = get_ladspa_category(descriptor->UniqueID);
+ info->creator = descriptor->Maker;
info->path = path;
info->index = i;
- info->n_inputs = 0;
- info->n_outputs = 0;
+ info->n_inputs = ChanCount();
+ info->n_outputs = ChanCount();
info->type = ARDOUR::LADSPA;
- info->unique_id = descriptor->UniqueID;
+
+ char buf[32];
+ snprintf (buf, sizeof (buf), "%lu", descriptor->UniqueID);
+ info->unique_id = buf;
for (uint32_t n=0; n < descriptor->PortCount; ++n) {
if ( LADSPA_IS_PORT_AUDIO (descriptor->PortDescriptors[n]) ) {
if ( LADSPA_IS_PORT_INPUT (descriptor->PortDescriptors[n]) ) {
- info->n_inputs++;
+ info->n_inputs.set_audio(info->n_inputs.n_audio() + 1);
}
else if ( LADSPA_IS_PORT_OUTPUT (descriptor->PortDescriptors[n]) ) {
- info->n_outputs++;
+ info->n_outputs.set_audio(info->n_outputs.n_audio() + 1);
}
}
}
snprintf(buf, sizeof(buf), "%s%" PRIu32, LADSPA_BASE, plugin_id);
pattern.subject = buf;
- pattern.predicate = RDF_TYPE;
+ pattern.predicate = (char*)RDF_TYPE;
pattern.object = 0;
pattern.object_type = lrdf_uri;
lrdf_statement* matches1 = lrdf_matches (&pattern);
if (!matches1) {
- return _("Unknown");
+ return "";
}
pattern.subject = matches1->object;
- pattern.predicate = LADSPA_BASE "hasLabel";
+ pattern.predicate = (char*)(LADSPA_BASE "hasLabel");
pattern.object = 0;
pattern.object_type = lrdf_literal;
lrdf_free_statements(matches1);
if (!matches2) {
- return _("Unknown");
+ return ("");
}
string label = matches2->object;
return label;
}
+#ifdef HAVE_AUDIOUNITS
+void
+PluginManager::au_refresh ()
+{
+ au_discover();
+}
+
+int
+PluginManager::au_discover ()
+{
+ _au_plugin_info = AUPluginInfo::discover();
+ return 0;
+}
+
+#endif
+
#ifdef VST_SUPPORT
void
{
/* Not a dotfile, has a prefix before a period, suffix is "dll" */
- cerr << "VST filter: looking at " << str << endl;
-
return str[0] != '.' && (str.length() > 4 && str.find (".dll") == (str.length() - 4));
}
plugin_objects = scanner (vst_path, vst_filter, 0, true, true);
- if (plugin_objects) {
- cerr << "Discovered " << plugin_objects->size() << " possible plugins\n";
- } else {
- cerr << "No plugins discovered at all\n";
- }
-
if (plugin_objects) {
for (x = plugin_objects->begin(); x != plugin_objects->end (); ++x) {
- cerr << "checking out " << **x << endl;
vst_discover (**x);
}
}
PluginManager::vst_discover (string path)
{
FSTInfo* finfo;
+ char buf[32];
if ((finfo = fst_get_info (const_cast<char *> (path.c_str()))) == 0) {
+ warning << "Cannot get VST information from " << path << endmsg;
return -1;
}
info->name = finfo->name;
}
+
+ snprintf (buf, sizeof (buf), "%d", finfo->UniqueID);
+ info->unique_id = buf;
info->category = "VST";
info->path = path;
+ // need to set info->creator but FST doesn't provide it
info->index = 0;
info->n_inputs = finfo->numInputs;
info->n_outputs = finfo->numOutputs;