jcelerier / guitarixlib

Guitarix DSPs
GNU Lesser General Public License v3.0
0 stars 1 forks source link

Notes to Help You #1

Open frink opened 2 years ago

frink commented 2 years ago

First off, I wanted to say that I'm glad you're doing this because Guitarix code is messy for actually sharing and reusing FAUST portable code. I think bringing everything to a fresh library will be good for everyone. Here are a few things that might be helpful in your endeavor to separate FAUST from the rest of Guitarix and create a useful library.

A lot of the DSP code is not pure FAUST... They include c++ code with ffunction calls and fconstant declarations with FAUST specific implementations. It may be helpful to look at the gen_tube_tables script which calls tube_transfer.py to build the lookup tables for valve.h which are then included in guitarix.lib for further processing. Basically everything in the DSP folder gets used somehow.

Guitarix prevents relicensing under LGPL... It seems to me that if you removed abgate and zita stuff you could rightly license this GPL 2.0 or 3.0 but LGPL 3.0 would still be a stretch since it is more permissive than GPL 2.0. See the license convolution below from the Guitarix COPYING file in trunk:

The code written for Guitarix is licensed under "GPL version 2 or later", but there are some source files / libraries which we use that are licensed under "GPL version 3 or later" or "LGPL version 3 or later", so that Guitarix as a whole must be conveyed under "GPL version 3 or later".

LGPLV3+: src/plugins/abgate.cc (by Antanas Bružas)

GPLV3+ : zita-resampler V1.1, zita-convolver V3 (by Fons Adriaensen fons@linuxaudio.org)

All other files of this project are licensed under GPLV2+. License conditions written into file headers cover the respective files but not the whole project.

Hopefully that helps you get everything running. I look forward to watching your progress on this.

Blessings on your coding travels!

jcelerier commented 2 years ago

Hi, thanks a lot !

Guitarix prevents relicensing under LGPL...

Personally I'm fine with everything being under GPL, my own work is at least GPLv3+ and often AGPL. In any case I don't really intend to touch at the actual DSPs as it is really not my field of expertise, I just want them to be easily useable from other Faust-based systems

Regarding the ffunction calls, we had some work last weeks in order to enable ffunction calls from faust's LLVM backend. My initial plan was to also jit-compile the C++ code but it seems that everyone in the world uses ffunction for this kind of tables and @sletz mentioned that Faust now had a waveform feature which could be better suited to represent such things, so that's something I put in my bucket list for investigation.

frink commented 2 years ago

Moving things to FAUST tables should work. Also the ffunctions may no longer be needed if you can express these functions with math primitives. I've not dug deep into guitarix code recently so I'm not sure.

frink commented 2 years ago

I noticed about half of this has already made its way into the Official Faust Libraries. Namely tubes and tone stacks.