Quickly/Easily Getting More LV2 Plugins

This topic is in the same general direction as this great post, which, if followed successfully, gets you LOTS (300+) more effects/plugins to play with (though not all of them work right out of the box):

The above method is a bit involved, and I wondered if I could achieve something similar, but with less leg-work, as it were.


More than 200 Plugins, Quick!

The most direct method I’ve found to get proper software for your system installed, is to install from the packages available in the repositories on your system, with a package manager.

Checking apt for lv2 plugins

We can query the apt repositories in a roundabout way for available lv2 plugins:

sudo apt-get update
apt-cache search lv2 | grep -Pi "lv2.*plugin|plugin.*lv2"

You can take a look at what’s available yourself when you are running through this.
At the time of writing, there are 33 packages in the list.

Install the lv2 plugins

Now that we know there’s a bunch packages with lv2 plugins available, we can get them installed with some help from awk and some command substitution:

  • Note: This command installs a broad range of packages, some of which just contain example plugins. See the Notes section at the end for a stricter grep/install command
sudo apt-get install $(apt-cache search lv2 | grep -Pi "lv2.*plugin|plugin.*lv2" | awk '{print $1}')

Fix the pathing with symlinks

After getting the packages installed, we have only one problem left to handle:
The debian packages install the lv2 plugins to /usr/lib/lv2 , but MODEP expects them to be in /usr/local/modep/.lv2 .

I wrote a short script, sys_lv2_to_modep_lv2.sh, to symlink all the system LV2 directories to where MODEP expects to find the things. It is available on my github.

You can download the script onto your pi (curl, scp, wincsp, etc), then make sure it’s executable, and then run it.
Any directory under /usr/lib/lv2 which does not exist under /usr/local/modep/.lv2 will be symlinked into the MODEP LV2 dir.

# download, scp, or winscp the above script onto the pi
# change directory to where ever the file is downloaded to, and:
chmod 755 ./sys_lv2_to_modep_lv2.sh
./sys_lv2_to_modep_lv2.sh

When running the script, you may be prompted to enter your password for some sudo actions (making the symlinks), as the directories we are working with are not writable as your regular user.

Reboot

After all the above is said and done, you should be able to reboot your pi, and when the web GUI comes back up, you should see a plethora of new pedals to play with.

Most of the plugins that get added in this way do not have anything more than a basic tin-can looking interface. They display on the board with Inputs, Outputs, and an On/Off switch, but nothing else.

To get to the knobs of these pedals, you can click the gear icon above it, and do everything you would expect… fiddle with knobs and switches, adjust ranges, assign things to MIDI CC, etc.

Afterward

There’s lots of new things to play with; I’ve just been scraping the surface since yesterday.

One pretty excellent effect I have found so far is a plugin from Steve Harris, “ViNyl (Vinyl Effect)” - WONDERFUL for getting some great lo-fi noise into the signal.

All the steps above could be rolled in to one handy bash script, but I felt like it was better to illustrate some of the logic along the way.

Notes

  • Grep/install strictness

The approach that I followed on my Pi, and documented above, added some plugins that are just “examples”, and meant more for the folks who develop these plugins, rather than the folks that want to use them on a pedalboard.

We can exclude this range of packages with another grep statement:

apt-cache search lv2 | grep -Pi "lv2.*plugin|plugin.*lv2" | grep -Piv "^lib|library|example|dummy|specification"

And then the install command becomes:

sudo apt-get install $(apt-cache search lv2 | grep -Pi "lv2.*plugin|plugin.*lv2" | grep -Piv "^lib|library|example|dummy|specification" | awk '{print $1}') 

Rock on!

13 Likes

Thanks for writing this up, really excited to get some more plugins. I just ran the script and am getting a bunch of these that I am investigating:

ln: failed to create symbolic link ‘/usr/local/modep/.lv2/decay-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/dc_remove-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/crossover_dist-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/const-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/comb-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/comb_splitter-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/chebstortion-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/butterworth-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/bode_shifter-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/bode_shifter_cv-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/bandpass_iir-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/bandpass_a_iir-swh.lv2’: No such file or directory
^Cln: failed to create symbolic link ‘/usr/local/modep/.lv2/analogue_osc-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/amp-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/am_pitchshift-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/allpass-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/alias-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/a_law-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/lcr_delay-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/latency-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/karaoke-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/inv-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/impulse-swh.lv2’: No such file or directory
ln: failed to create symbolic link ‘/usr/local/modep/.lv2/hilbert-swh.lv2’: No such file or directory

Fixed it, the directory changed to /usr/modep/lv2.

Here is a PR > https://github.com/whofferbert/modep-etcetera/pull/1

2 Likes

so what would the correct script be?

Here is the updated script you can run if you are having the same issue I was.

https://raw.githubusercontent.com/whofferbert/modep-etcetera/812a7d2c2109ac4d5d76dfdb7f6e0befc113c38f/sys_lv2_to_modep_lv2.sh (raw version, for copy/pasting or straight downloading)

Hi there,

Thanks for this post, I am nearly there but failing at the last hurdle.

I can’t get the script to run, I get the following errors when running the last command: ./sys_lv2_to_modep_lv2.sh
(I have tried both scripts)

./sys_lv2_to_modep_lv2.sh: line 6: syntax error near unexpected token newline' ./sys_lv2_to_modep_lv2.sh: line 6: <!DOCTYPE html’

probably something basic I’ve done wrong as a Linux noob.

Thanks!

The file may have downloaded incorrectly, try removing it (rm sys_lv2_to_modep_lv2.sh) and then simply paste the below contents (note that the lv2 path has been updated below to the latest location) by doing:

nano sys_lv2_to_modep_lv2.sh

#!/bin/bash
# William Hofferbert
# symlink system LV2 into MODEP lv2 dir

sys_lv2_dir=/usr/lib/lv2
modep_lv2_dir=/usr/modep/lv2 # <--- This variable has been updated

# for every plugin
for sys_lv2 in $(ls -1tr $sys_lv2_dir) ; do
  # link into modep if it's not there already
  if [ ! -e $modep_lv2_dir/$sys_lv2 ] ; then
    sudo ln -s $sys_lv2_dir/$sys_lv2 $modep_lv2_dir/$sys_lv2
  fi
done

Then hit Ctrl+x, y to save and exit.

Then you have to enable the execute permission:

chmod +x sys_lv2_to_modep_lv2.sh

And finally:

./sys_lv2_to_modep_lv2.sh

1 Like

Worked a treat! Thanks

1 Like