Has anyone incorporated Gverb into a JUCE project? [SOLVED]

I’m on the hunt for a nice but efficient reverb algorithm. Freeverb sounds terrible (I don’t know why it’s so ubiquitous)

Gverb comes with a good repuation, looks simple to implement, and It’s free.

You can download the source here: https://github.com/highfidelity/gverb

gverb-test.c shows how to use it, and although I can put it into my JUCE project, and everything compiles great. the linker is not happy!

$ make && build/ArifConsoleWithAudioSource 
Compiling Main.cpp
Compiling gverb.c
Compiling gverbdsp.c
Compiling include_juce_audio_basics.cpp
Compiling include_juce_audio_devices.cpp
Compiling include_juce_core.cpp
Compiling include_juce_events.cpp
Linking ArifConsoleWithAudioSource - ConsoleApp
/usr/bin/ld: build/intermediate/Debug/Main_90ebc5c2.o: in function `MyAudioSource::prepareToPlay(int, double)':
/home/arif/JUCE Projects/ArifConsoleWithAudioSource/Builds/LinuxMakefile/../../Source/Main.cpp:22: undefined reference to `gverb_new(int, float, float, float, float, float, float, float, float)'
collect2: error: ld returned 1 exit status
make: *** [Makefile:88: build/ArifConsoleWithAudioSource] Error 1

I’ve checked in the Projucer, and all of the files are there.

Looks like extern “C” is missing in the header file. So the C++ compiler will mangle the function names and cause the link error.

You genius! That fixed it.

(My) JUCE has Gverb now! :slight_smile:

No commercial plugin developer would touch it because it’s licensed under GPL, which means you entire project must be open sourced.

That would explain why it’s relatively unknown and unused.

Yes, although I’m a million miles away, I do need to learn about licensing.

A quick thought, a license is fundamentally different from a patent, right? So if I rewrote the code (I don’t like much about how its code is structured), then it would considered new code, my code, my intellectual property, and thus, I would be free to license my version of the code, however I want?

No, that’s not how it works. Your code would still just be a modified version of their code, and thus fall under the same license.

You would need to re-implement the whole thing from scratch, so not line of code from the original is used.

If one could do what you suggest, that would make all licenses meaningless, as the smallest modification would basically invalidate it.

It often appears in DAWs, frameworks etc because it can be implemented easily and it has a permissive license.