bool WrappedJucePlugin::loadPluginStuff () { if (instance) { int numParams = instance->getNumParameters(); setNumParameters (numParams); for (int i=0; i<numParams; i++) { AudioParameter* parameter = new AudioParameter (); parameter->part (i); parameter->name (instance->getParameterName(i)); parameter->get (MakeDelegate (this, &WrappedJucePlugin::getParameterReal)); parameter->set (MakeDelegate (this, &WrappedJucePlugin::setParameterReal)); parameter->text (MakeDelegate (this, &WrappedJucePlugin::getParameterTextReal)); registerParameter(i, parameter); } } return true; }
//============================================================================== bool LadspaPlugin::loadPluginFromFile (const File& filePath) { ptrLibrary = PlatformUtilities::loadDynamicLibrary (filePath.getFullPathName()); if (ptrLibrary != 0) { LADSPA_Descriptor_Function pfDescriptorFunction = (LADSPA_Descriptor_Function) PlatformUtilities::getProcedureEntryPoint (ptrLibrary, T("ladspa_descriptor")); if (pfDescriptorFunction != 0) { for (uint32 iPluginIndex = 0;; iPluginIndex++) { ptrPlug = pfDescriptorFunction (iPluginIndex); if (ptrPlug != NULL) break; } if (ptrPlug == 0) { printf ("Cannot find any valid descriptor in shared library \n"); return false; } } else { // plugin raised an exception printf ("Cannot find any valid plugin in shared library \n"); return false; } } else { printf ("You are trying to load a shared library ? \n"); return false; } jassert (ptrPlug); pluginFile = filePath; plugin = ptrPlug->instantiate (ptrPlug, (unsigned int) samplingRate); ins.clear (); outs.clear (); pars.clear (); for (unsigned int i = 0; i < ptrPlug->PortCount; i++) { if (ptrPlug->PortDescriptors [i] & LADSPA_PORT_CONTROL) pars.add (i); if (ptrPlug->PortDescriptors [i] & LADSPA_PORT_AUDIO) { if (ptrPlug->PortDescriptors [i] & LADSPA_PORT_INPUT) ins.add (i); if (ptrPlug->PortDescriptors [i] & LADSPA_PORT_OUTPUT) outs.add (i); } } int numParams = pars.size (); params = new float [numParams]; normalized = new float [numParams]; memset (params, 0, numParams * sizeof (float)); memset (normalized, 0, numParams * sizeof (float)); for (int i = 0; i < numParams; i++) ptrPlug->connect_port (plugin, pars [i], &normalized[i]); // create params setNumParameters (numParams); for (int i = 0; i < numParams; i++) { AudioParameter* parameter = new AudioParameter (); parameter->part (i); parameter->name (ptrPlug->PortNames [pars [i]]); parameter->get (MakeDelegate (this, &LadspaPlugin::getParameterReal)); parameter->set (MakeDelegate (this, &LadspaPlugin::setParameterReal)); parameter->text (MakeDelegate (this, &LadspaPlugin::getParameterTextReal)); registerParameter (i, parameter); } // setCurrentProgram (0); return true; }
//============================================================================== bool DssiPlugin::loadPluginFromFile (const File& filePath) { ptrLibrary = PlatformUtilities::loadDynamicLibrary (filePath.getFullPathName()); if (ptrLibrary != 0) { DSSI_Descriptor_Function pfDescriptorFunction = (DSSI_Descriptor_Function) PlatformUtilities::getProcedureEntryPoint (ptrLibrary, T("dssi_descriptor")); if (pfDescriptorFunction != 0) { for (uint32 iPluginIndex = 0;; iPluginIndex++) { ptrPlug = pfDescriptorFunction (iPluginIndex); if (ptrPlug != NULL) break; } if (ptrPlug == 0) { printf ("Cannot find any valid descriptor in shared library \n"); return false; } } else { // plugin raised an exception printf ("Cannot find any valid plugin in shared library \n"); return false; } } else { printf ("You are trying to load a shared library ? \n"); return false; } jassert (ptrPlug); pluginFile = filePath; ladspa = ptrPlug->LADSPA_Plugin; // version = ptrPlug->DSSI_API_Version; plugin = ladspa->instantiate (ladspa, (unsigned int) samplingRate); /* if (ptrPlug->configure) ptrPlug->configure (DSSI_PROJECT_DIRECTORY_KEY, (const char*) filePath.getParentDirectory() .getFullPathName ()); */ // count ports ins.clear (); outs.clear (); pars.clear (); for (uint i = 0; i < ladspa->PortCount; i++) { LADSPA_PortDescriptor pod = ladspa->PortDescriptors[i]; if (pod & LADSPA_PORT_AUDIO) { if (pod & LADSPA_PORT_INPUT) ins.add (i); else if (pod & LADSPA_PORT_OUTPUT) outs.add (i); } else if (pod & LADSPA_PORT_CONTROL) { pars.add (i); } } // create ports int numParams = pars.size (); params = new float [numParams]; normalized = new float [numParams]; memset (params, 0, numParams * sizeof (float)); memset (normalized, 0, numParams * sizeof (float)); // connect ports if (ladspa->connect_port) { for (int i = 0; i < pars.size (); i++) ladspa->connect_port (plugin, pars [i], &normalized[i]); for (int i = 0; i < ins.size (); i++) ladspa->connect_port (plugin, ins [i], emptyBuffer.getSampleData (0)); for (int i = 0; i < outs.size (); i++) ladspa->connect_port (plugin, outs [i], emptyBuffer.getSampleData (0)); } // count programs if (ptrPlug->get_program) for (numPrograms = 0; ptrPlug->get_program (plugin, numPrograms); ++numPrograms); // set default to 0 // setCurrentProgram (0); setDefaultProgram (); // start osc listener to itself osc.setPort (18910); osc.setRootAddress ("dssi"); osc.addListener (this); osc.startListening (); DBG ("DssiPlugin::loadPluginFromFile"); // create params setNumParameters (numParams); for (int i = 0; i < numParams; i++) { AudioParameter* parameter = new AudioParameter (); parameter->part (i); parameter->name (ladspa->PortNames [pars [i]]); parameter->get (MakeDelegate (this, &DssiPlugin::getParameterReal)); parameter->set (MakeDelegate (this, &DssiPlugin::setParameterReal)); parameter->text (MakeDelegate (this, &DssiPlugin::getParameterTextReal)); registerParameter (i, parameter); } return true; }