falkTX / rubberband

audio time-stretching and pitch-shifting library and utility program
GNU General Public License v2.0
6 stars 2 forks source link

merge LV2 plugin upstream #2

Closed Be-ing closed 2 years ago

Be-ing commented 3 years ago

The upstream repo already has the LADSPA plugin code. Perhaps the LV2 plugin should be upstream too? Then the LADSPA plugin may be dropped upstream.

falkTX commented 3 years ago

Be my guest. The main issue is that it needs to be added to the cmake, which I dont understand/know how to do. So feel free to grab the changes and submit upstream with the needed cmake tweaks to make it build all together, I would appreciate that a lot actually.

Be-ing commented 3 years ago

Cool. We're working on CMake support upstream to get Rubberband building in vcpkg for Mixxx.

KannebTo commented 3 years ago

BTW, is there any documentation on how to build and install the rubberband LV2 plugin? manifest.ttl refers to rubberband.so.

Ah, now i found out:

Be-ing commented 3 years ago

Upstream recently switched the build system to Meson.

Be-ing commented 3 years ago

Upstream Rubberband is dual licensed GPL with proprietary licenses available for purchase. @falkTX would you be okay with giving upstream permission to apply the same license to your changes?

FWIW, I do feel this is different than a clueless company taking over a 20 year old community project, immediately making a bunch of highly questionable moves, and imposing a CLA. Rubberband was almost entirely written by Chris Cannam and his work not only with Rubberband but also QM-DSP and VAMP has been very valuable for many community projects.

falkTX commented 3 years ago

You can take my code changes and do whatever you want with them. I basically just converted the ladspa stuff into lv2, it was not even hard work, just menial stuff for converting.

I kinda gave up on rubberband as a plugin though, performance is really subpar.

Be-ing commented 3 years ago

performance is really subpar

Yeah, we've been looking for alternatives for Mixxx. I tried SBSMS in Tenacity but it sounds much worse than Rubberband and processed slower than real time. I also tried Paulstretch in Tenacity but that only works well at extreme pitch ratios. For DJing the sound quality matters within about +/- 25%, although most DJs use +/- 8% (same as Technics 1200 turntables) or +/- 16%. At those ratios Paulstretch does not sound good. If you know of any other timestretching libraries, please share.

falkTX commented 3 years ago

soundtouch is another common one for this, but dont know if it is good or not.

Be-ing commented 3 years ago

Mixxx already has an option to switch between SoundTouch and Rubberband. SoundTouch does not sound nearly as good as Rubberband but it is way easier on the CPU.

Be-ing commented 2 years ago

As of Rubberband 2.0.1, there is an LV2 plugin shipped upstream. It is not the same code as the plugin from this fork.