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;
}
Esempio n. 3
0
//==============================================================================
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;
}