Hi Anchakor -- good to see you around, and is nice you are trying to port some FX to LV2.

All I can see is your post of the make output, but no lv2port directory -- or maybe the make file output is what you wanted us to see.

It is obvious what things are missing.

The Compressor will be an easy one to start with because it doesn't depend on any other objects IIRC (except for Fpreset), so the only things you are missing are some constants that we define in global.h:
SAMPLE_RATE
cSAMPLE_RATE (This is a (float) 1/SAMPLE_RATE)

'pdata' is found in global.h, line 245:
extern int pdata[50];

You can get rid of this stuff related to Fpreset, and 'pdata' because it's there for loading and saving custom FX's internal presets.  All the pre-defined presets don't depend on this.  That is very specific to the Rakarrack GUI, so you probably should implement it differently in LV2.

So start small, just Compressor first.  In your LV2 wrapper, you should define the missing global variables or eliminate them and replace them however it best suits your LV2 implementation.

Rakarrack is actually very modular.  A pattern you will find consistent to each effect is:
EffectName.h
EffectName.C

EffectName.h defines all of the parameters that are user-adjustable, and EffectName.C constructs the effect and handles all the configuration, then all you do is call EffectName::out(float *efxoutl, float *efxoutr) every PERIOD and it does its thing.  There are some global variables and some other classes that are used by the FX, but if you include those classes and either redefine, or otherwise include the globals, it should be easy.  I would not recommend using global.h directly, but probably better to identify needed global variables and definitions from compiler error messages and add them to your own global.h until you stop getting errors.

The places you have problems will be with these:
Anything with an LFO uses the class EffectLFO.h and .C, so that class needs to be included in your LV2 plugin.

Likewise, there is the AnalogFilter class, and the SVFilter, the RBFilter, and delayline classes, which need to be included where used (like Chorus, Flanger, Echo, and the different Delay things).  There is also the Waveshaper class for anything using distortion (except Valve, but that is a copy of a LADSPA plugin, so you may not be very interested in porting that to LV2, meaning it might be easier to port that from LADSPA to LV2 than from Rakarrack to LV2).

In general, the API to each effect is consistent enough that on wrapper should be able to handle all of them with minor modifications, and including the proper headers and sources.

For example, Compband needs to have Compressor and AnalogFilter in order to work.

I hope that is a start.  I can help with the specifics of most all the FX, so just keep the email thread going as you run into issues.  I'm not very familiar with LV2, so I can't help much on that end, but I can help you understand what each parameter does and how each effect should be treated by its host.

And, as would be obvious from the programmer's perspective, look at the header for each effect you want to port and look at the #include statements.  If you see #include "EffectLFO.h" it will be pretty plain that EffectLFO.h and EffectLFO.C should be in your compiler's search path.

Again, if you can port Compressor.C, that is a good first step.  Then if from that experience you can get Compband to port successfully, then you certainly understand the pattern and you can probably port anything after that.


Take Care,
Transmogrifox



On 09/12/2011 05:51 AM, Jiří Procházka wrote:
Hi,
I am trying to port some effects as lv2 plugins,
unfortunatly I have quite some trouble, because rakarrack code is not
very modular.
Can anyone help me how should I approach it?
I have a wrapper code in src/lv2port directory where I got my makefile,
well see for your self: http://codepad.org/OX8cDEsJ

Also it seems rakarrack is gplv2 licensed and I want to use some gplv3
stuff... would it be possible to double license it either in gplv2+ or
glpv3 or any other gplv3 compatible license?

Best,
Jiri (Anchakor on irc, do you have a channel?)

------------------------------------------------------------------------------ Doing More with Less: The Next Generation Virtual Desktop What are the key obstacles that have prevented many mid-market businesses from deploying virtual desktops? How do next-generation virtual desktops provide companies an easier-to-deploy, easier-to-manage and more affordable virtual desktop model.http://www.accelacomm.com/jaw/sfnl/114/51426474/
_______________________________________________ Rakarrack-users mailing list Rakarrack-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rakarrack-users