String LV2Module::getClassLabel() const { if (const LilvPluginClass* klass = lilv_plugin_get_class (plugin)) if (const LilvNode* node = lilv_plugin_class_get_label (klass)) return CharPointer_UTF8 (lilv_node_as_string (node)); return String::empty; }
bool LV2EffectsModule::AutoRegisterPlugins(PluginManagerInterface & pm) { EffectManager& em = EffectManager::Get(); #ifdef EFFECT_CATEGORIES // Add all LV2 categories and their relationships LilvPluginClasses classes = Lilv_world_get_plugin_classes(gWorld); for (unsigned index = 0; index < Lilv_plugin_classes_size(classes);++index){ LilvPluginClass c = Lilv_plugin_classes_get_at(classes, index); em.AddCategory(wxString::FromUTF8(lilv_node_as_uri(Lilv_plugin_class_get_uri(c))), wxString::FromUTF8(lilv_node_as_string(Lilv_plugin_class_get_label(c)))); } for (unsigned index = 0; index < Lilv_plugin_classes_size(classes);++index){ LilvPluginClass c = Lilv_plugin_classes_get_at(classes, index); LilvPluginClasses ch = Lilv_plugin_class_get_children(c); EffectCategory* pCat = em.LookupCategory(wxString::FromUTF8(lilv_node_as_uri(Lilv_plugin_class_get_uri(c)))); for (unsigned j = 0; j < Lilv_plugin_classes_size(ch); ++j) { EffectCategory* chCat = em.LookupCategory(wxString::FromUTF8(lilv_node_as_uri(Lilv_plugin_class_get_uri(Lilv_plugin_classes_get_at(ch, j))))); if (chCat && pCat) { em.AddCategoryParent(chCat, pCat); } } } #endif // Retrieve data about all plugins const LilvPlugins *plugs = lilv_world_get_all_plugins(gWorld); // Iterate over all plugins and register them with the EffectManager LILV_FOREACH(plugins, i, plugs) { const LilvPlugin *plug = lilv_plugins_get(plugs, i); std::set<wxString> cats; cats.insert(wxString::FromUTF8(lilv_node_as_uri(lilv_plugin_class_get_uri(lilv_plugin_get_class(plug))))); LV2Effect *effect = new LV2Effect(plug, cats); if (effect->IsValid()) { em.RegisterEffect(this, effect); } else { delete effect; } } return true; }
wxArrayString LV2EffectsModule::FindPlugins(PluginManagerInterface & WXUNUSED(pm)) { // Retrieve data about all LV2 plugins const LilvPlugins *plugs = lilv_world_get_all_plugins(gWorld); // Iterate over all plugins retrieve their URI wxArrayString plugins; LILV_FOREACH(plugins, i, plugs) { const LilvPlugin *plug = lilv_plugins_get(plugs, i); // Bypass Instrument (MIDI) plugins for now const LilvPluginClass *cls = lilv_plugin_get_class(plug); if (lilv_node_equals(lilv_plugin_class_get_uri(cls), LV2Effect::gInstrument)) { continue; } plugins.Add(LilvString(lilv_plugin_get_uri(plug))); } return plugins; }