fps-plugins.lv2

All your LV2 and LADSPA goodness and more.

Moderators: MattKingUSA, khz

fps
Established Member
Posts: 12
Joined: Sat May 25, 2013 4:34 pm
Has thanked: 1 time
Been thanked: 5 times
Contact:

fps-plugins.lv2

Post by fps »

Hi,

maybe these are useful for someone else. The bundle includes:

  • relative_dynamics: dynamics processing based on the ratio of two envelopes with differing time constants

  • eq_match: an fft-based eq matching plugin

  • stereo_decorrelation: a plugin using an exponentially decaying white noise FIR added to the left channel and its negative added to the right channel to decorrelate the left and right channel. has the nice prooerty that it sums to the identity when mixed down to mono

These are in beta state. Find them here: https://github.com/fps/fps-plugins.lv2

Bug reports and PRs with fixes/enhancements welcome :)

EDIT: Added a README.md and an example for the stereo_decorrelation. Direct link: https://github.com/fps/fps-plugins.lv2/ ... xample.ogg

Kind regards,
fps

Last edited by fps on Fri Jun 09, 2023 8:22 am, edited 1 time in total.
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

Re: fps-plugins.lv2

Post by j_e_f_f_g »

fps wrote:

stereo_decorrelation

That's a useful way to make a stereo image out of a mono signal.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

fps
Established Member
Posts: 12
Joined: Sat May 25, 2013 4:34 pm
Has thanked: 1 time
Been thanked: 5 times
Contact:

Re: fps-plugins.lv2

Post by fps »

j_e_f_f_g wrote: Thu Jun 08, 2023 9:11 pm
fps wrote:

stereo_decorrelation

That's a useful way to make a stereo image out of a mono signal.

Hi, yes! Works quite well with distorted guitars - which is the reason I wrote it :) Maybe I'll find the time to create some demo sounds later today.

User avatar
sunrat
Established Member
Posts: 919
Joined: Wed Jul 22, 2020 2:08 pm
Has thanked: 151 times
Been thanked: 244 times

Re: fps-plugins.lv2

Post by sunrat »

Could I please request build instructions for we mere mortals who are not very proficient in building stuff? I downloaded the tar.gz and ran build.sh thinking that would be the go but it didn't get far, throwing several errors. I could run again and post them if that helps. Debian Bullseye.

fps
Established Member
Posts: 12
Joined: Sat May 25, 2013 4:34 pm
Has thanked: 1 time
Been thanked: 5 times
Contact:

Re: fps-plugins.lv2

Post by fps »

sunrat wrote: Fri Jun 09, 2023 8:43 am

Could I please request build instructions for we mere mortals who are not very proficient in building stuff? I downloaded the tar.gz and ran build.sh thinking that would be the go but it didn't get far, throwing several errors. I could run again and post them if that helps. Debian Bullseye.

Sure. Just run "make" followed by "make install" (you probably need to run this as superuser.) If you want to install to ~/.lv2, then run "INSTALL_DIR=$HOME/.lv2 make install". For make to succeed you need to have some dependencies installed (their respective "development" versions, the particulars depend on your distribution): fftw3(f), libsndfile, lv2.

I also update the README with minimal installation instructions.

User avatar
sunrat
Established Member
Posts: 919
Joined: Wed Jul 22, 2020 2:08 pm
Has thanked: 151 times
Been thanked: 244 times

Re: fps-plugins.lv2

Post by sunrat »

make failed to find the installed lv2-dev from kxstudio so I replaced with the Debian version and got past that error.
Now a different error showing with running make:

Code: Select all

$ make
g++ -std=c++20 -O3 -march=native -mcpu=native -I./vendored -Wall -pedantic dynamics.cc -shared -o lv2/fps-plugins.lv2/dynamics.so
g++: warning: ‘-mcpu=’ is deprecated; use ‘-mtune=’ or ‘-march=’ instead
g++ -std=c++20 -O3 -march=native -mcpu=native -I./vendored -Wall -pedantic eq_match.cc vendored/FFTConvolver/AudioFFT.cpp vendored/FFTConvolver/Utilities.cpp vendored/FFTConvolver/FFTConvolver.cpp -shared -o lv2/fps-plugins.lv2/eq_match.so -lfftw3f -lm
g++: warning: ‘-mcpu=’ is deprecated; use ‘-mtune=’ or ‘-march=’ instead
/usr/bin/ld: /tmp/ccDXvZKr.o: warning: relocation against `_ZTVN12fftconvolver12FFTConvolverE' in read-only section `.text'
/usr/bin/ld: /tmp/ccFbZ1Jo.o: relocation R_X86_64_PC32 against symbol `_ZSt4cerr@@GLIBCXX_3.4' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make: *** [makefile:26: lv2/fps-plugins.lv2/eq_match.so] Error 1
fps
Established Member
Posts: 12
Joined: Sat May 25, 2013 4:34 pm
Has thanked: 1 time
Been thanked: 5 times
Contact:

Re: fps-plugins.lv2

Post by fps »

I'm spoiled by Nixos it seems. I added the relevant pkg-config incantations now, I think. Can you git pull and try again? I'll alternatively add a 1beta3 tag.

Thanks for the reports!

User avatar
sunrat
Established Member
Posts: 919
Joined: Wed Jul 22, 2020 2:08 pm
Has thanked: 151 times
Been thanked: 244 times

Re: fps-plugins.lv2

Post by sunrat »

Different fail now and it's a wall of test so put in pastebin - https://pastebin.com/snr9F2yj

I'm only doing this out of curiosity but would be nice to sort it. Maybe I need a newer OS - Debian Bookworm is released tomorrow.
It's late here in Australia now so I'll leave it for now until tomorrow.

fps
Established Member
Posts: 12
Joined: Sat May 25, 2013 4:34 pm
Has thanked: 1 time
Been thanked: 5 times
Contact:

Re: fps-plugins.lv2

Post by fps »

I fixed that one, too. Let me know tomorrow how it turns out for you! Thanks again!

fps
Established Member
Posts: 12
Joined: Sat May 25, 2013 4:34 pm
Has thanked: 1 time
Been thanked: 5 times
Contact:

Re: fps-plugins.lv2

Post by fps »

Is that the complete error message?

User avatar
Loki Harfagr
Established Member
Posts: 268
Joined: Thu Aug 02, 2018 1:28 pm
Has thanked: 151 times
Been thanked: 53 times

Re: fps-plugins.lv2

Post by Loki Harfagr »

in the makefile try to replace

Code: Select all

 -mcpu

(a bit antic) by

Code: Select all

-mtune=generic

and a strikeload of errors might vanish

fps
Established Member
Posts: 12
Joined: Sat May 25, 2013 4:34 pm
Has thanked: 1 time
Been thanked: 5 times
Contact:

Re: fps-plugins.lv2

Post by fps »

Strange. Does it still happen?

Basslint
Established Member
Posts: 1516
Joined: Sun Jan 27, 2019 2:25 pm
Location: Italy
Has thanked: 385 times
Been thanked: 299 times

Re: fps-plugins.lv2

Post by Basslint »

Hello, are you going to add a free/libre and open source license? If so, we will package this for openSUSE :D

The community of believers was of one heart and mind, and no one claimed that any of his possessions was his own, but they had everything in common. [Acts 4:32]

Please donate time (even bug reports) or money to libre software 🎁

Jam on openSUSE + GeekosDAW!
novalix
Established Member
Posts: 107
Joined: Wed Aug 11, 2021 1:12 pm
Has thanked: 6 times
Been thanked: 39 times

Re: fps-plugins.lv2

Post by novalix »

Hi,

here is what i get on a Debian Bookworm:

Code: Select all

niels@dulcinea:~/src/plugins/fps-plugins.lv2$ make
g++ -std=c++20 -O3 -march=native -mtune=native -I./vendored -Wall -pedantic `pkg-config lv2 sndfile fftw3f --cflags` stereo_decorrelation.cc vendored/FFTConvolver/AudioFFT.cpp vendored/FFTConvolver/Utilities.cpp vendored/FFTConvolver/FFTConvolver.cpp -shared -o lv2/fps-plugins.lv2/stereo_decorrelation.so -fPIC `pkg-config lv2 sndfile fftw3f --libs`
In file included from /usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:34,
                 from /usr/include/c++/12/random:50,
                 from stereo_decorrelation.h:6,
                 from stereo_decorrelation.cc:13:
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:50:17: error: ‘__m128’ does not name a type; did you mean ‘__int128’?
   50 | extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~
      |                 __int128
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:56:17: error: ‘__m128’ does not name a type; did you mean ‘__int128’?
   56 | extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~
      |                 __int128
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:62:17: error: ‘__m128’ does not name a type; did you mean ‘__int128’?
   62 | extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~
      |                 __int128
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:68:17: error: ‘__m128’ does not name a type; did you mean ‘__int128’?
   68 | extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~
      |                 __int128
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:74:17: error: ‘__m128’ does not name a type; did you mean ‘__int128’?
   74 | extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~
      |                 __int128
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:80:17: error: ‘__m128d’ does not name a type
   80 | extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~~
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:86:17: error: ‘__m128d’ does not name a type
   86 | extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~~
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:92:17: error: ‘__m128d’ does not name a type
   92 | extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~~
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:98:17: error: ‘__m128d’ does not name a type
   98 | extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~~
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:104:17: error: ‘__m128d’ does not name a type
  104 | extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~~
/usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:110:17: error: ‘__m128i’ does not name a type
  110 | extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      |                 ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h: In member function ‘void std::normal_distribution<_RealType>::__generate(result_type*, result_type*, _UniformRandomNumberGenerator&, const param_type&) [with _RealType = double]’:
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:70:22: error: ‘__m128i’ does not name a type
   70 |         static const __m128i __mask = _mm_set1_epi64x(__maskval);
      |                      ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:71:22: error: ‘__m128i’ does not name a type
   71 |         static const __m128i __two = _mm_set1_epi64x(0x4000000000000000ull);
      |                      ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:72:22: error: ‘__m128d’ does not name a type
   72 |         static const __m128d __three = _mm_set1_pd(3.0);
      |                      ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:73:15: error: ‘__m128d’ does not name a type
   73 |         const __m128d __av = _mm_set1_pd(__param.mean());
      |               ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:83:13: error: ‘__m128d’ was not declared in this scope; did you mean ‘fftconvolver::__m128d’?
   83 |             __m128d __x;
      |             ^~~~~~~
      |             fftconvolver::__m128d
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/include/xmmintrin.h:1316,
                 from ./vendored/FFTConvolver/Utilities.h:43,
                 from ./vendored/FFTConvolver/FFTConvolver.h:26,
                 from stereo_decorrelation.cc:9:
/usr/lib/gcc/x86_64-linux-gnu/12/include/emmintrin.h:54:16: note: ‘fftconvolver::__m128d’ declared here
   54 | typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
      |                ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:88:19: error: ‘__m128i’ does not name a type
   88 |                   __m128i __i;
      |                   ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:89:19: error: ‘__m128d’ does not name a type
   89 |                   __m128d __d;
      |                   ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:97:47: error: ‘__mask’ was not declared in this scope; did you mean ‘fd_mask’?
   97 |                                               __mask);
      |                                               ^~~~~~
      |                                               fd_mask
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:114:35: error: there are no arguments to ‘_mm_set_epi64x’ that depend on a template parameter, so a declaration of ‘_mm_set_epi64x’ must be available [-fpermissive]
  114 |                         __v.__i = _mm_set_epi64x(__v1, __v2);
      |                                   ^~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:114:35: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:125:45: error: there are no arguments to ‘_mm_set_epi64x’ that depend on a template parameter, so a declaration of ‘_mm_set_epi64x’ must be available [-fpermissive]
  125 |                     __v.__i = _mm_and_si128(_mm_set_epi64x(__v1, __v2),
      |                                             ^~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:126:45: error: ‘__mask’ was not declared in this scope; did you mean ‘fd_mask’?
  126 |                                             __mask);
      |                                             ^~~~~~
      |                                             fd_mask
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:174:31: error: there are no arguments to ‘_mm_set_epi64x’ that depend on a template parameter, so a declaration of ‘_mm_set_epi64x’ must be available [-fpermissive]
  174 |                     __v.__i = _mm_set_epi64x(__v1, __v2);
      |                               ^~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:177:49: error: ‘__two’ was not declared in this scope
  177 |                 __v.__i = _mm_or_si128(__v.__i, __two);
      |                                                 ^~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:178:17: error: ‘__x’ was not declared in this scope; did you mean ‘__v’?
  178 |                 __x = _mm_sub_pd(__v.__d, __three);
      |                 ^~~
      |                 __v
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:178:43: error: ‘__three’ was not declared in this scope
  178 |                 __x = _mm_sub_pd(__v.__d, __three);
      |                                           ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:179:24: error: expected ‘;’ before ‘__m’
  179 |                 __m128d __m = _mm_mul_pd(__x, __x);
      |                        ^~~~
      |                        ;
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:180:51: error: ‘__m’ was not declared in this scope; did you mean ‘__v’?
  180 |                 __le = _mm_cvtsd_f64(_mm_hadd_pd (__m, __m));
      |                                                   ^~~
      |                                                   __v
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:180:38: error: there are no arguments to ‘_mm_hadd_pd’ that depend on a template parameter, so a declaration of ‘_mm_hadd_pd’ must be available [-fpermissive]
  180 |                 __le = _mm_cvtsd_f64(_mm_hadd_pd (__m, __m));
      |                                      ^~~~~~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:187:13: error: ‘__x’ was not declared in this scope; did you mean ‘__f’?
  187 |             __x = _mm_add_pd(_mm_mul_pd(__x, _mm_set1_pd(__mult)), __av);
      |             ^~~
      |             __f
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:187:46: error: there are no arguments to ‘_mm_set1_pd’ that depend on a template parameter, so a declaration of ‘_mm_set1_pd’ must be available [-fpermissive]
  187 |             __x = _mm_add_pd(_mm_mul_pd(__x, _mm_set1_pd(__mult)), __av);
      |                                              ^~~~~~~~~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:187:68: error: ‘__av’ was not declared in this scope
  187 |             __x = _mm_add_pd(_mm_mul_pd(__x, _mm_set1_pd(__mult)), __av);
      |                                                                    ^~~~
/usr/include/x86_64-linux-gnu/c++/12/bits/opt_random.h:189:13: error: there are no arguments to ‘_mm_storeu_pd’ that depend on a template parameter, so a declaration of ‘_mm_storeu_pd’ must be available [-fpermissive]
  189 |             _mm_storeu_pd(__f, __x);
      |             ^~~~~~~~~~~~~
make: *** [makefile:32: lv2/fps-plugins.lv2/stereo_decorrelation.so] Error 1
User avatar
sunrat
Established Member
Posts: 919
Joined: Wed Jul 22, 2020 2:08 pm
Has thanked: 151 times
Been thanked: 244 times

Re: fps-plugins.lv2

Post by sunrat »

novalix wrote: Sat Jun 10, 2023 12:33 am

here is what i get on a Debian Bookworm:
...

Without running diff on it, it appears to be exactly the same as I got on Bullseye.

Post Reply