LV2 Presets

LV2 plugins support individual presets and banks containing multiple presets. This article describes what I’ve learned about using and creating LV2 presets.

Using LV2 Presets

Selecting a preset is obvious in jalv.gtk and in Ardour. It’s not so obvious in Qtractor: in the Mixer window, right-click the desired plugin, then select Properties… to display the host GUI version of the plugin. The host GUI contains a drop-down list of presets.



It appears that hosts normally sort presets to be in alphanumeric sequence. However, jalv.gtk and Ardour both failed to sort the presets for TAL NoiseMaker; Qtractor sorted them correctly.

Saving Presets

I recently created a bank of presets. I started by saving individual presets, using the Save Preset… feature in jalv.gtk. The presets were saved to directory ~/.lv2/.

I noticed that a new preset saved in jalv.gtk does not appear on the Presets menu until jalv.gtk is restarted.

Each saved preset consists of a subdirectory containing two files: manifest.ttl and another *.ttl file containing the actual preset information. This combination of directory and multiple *.ttl files is called a “bundle.”

It doesn’t appear possible to nest the preset bundles within a subdirectory. Presets only appear to be recognized if the bundle directories are immediate subdirectories of ~/.lv2/. Also note that some programs complain if any non-LV2 files exist in the ~/.lv2/ directory.

Creating a Bank

I recently created some presets for the Obxd synthesizer that I wanted to distribute to others. Rather than distributing individual preset bundles I wanted to combine the presets into one bank bundle. I created two files, manifest.ttl and presets.ttl, as follows:


Each preset’s manifest.ttl file contains a “header” section (one or more lines starting with @prefix) and a group of lines that describe the specific preset. (I seem to have ended up with duplicate sections when I re-saved a preset using the same name; the duplicates can apparently be ignored.)

The manifest.ttl file for a bank consists of one header section plus the individual preset sections for each preset to be included in the bank. For each individual preset, I changed the line with this pattern:

    rdfs:seeAlso <XXX> ;

to add the name of the presets file within the angle brackets. I called the presets file presets.ttl, so the line looked like this:

    rdfs:seeAlso <presets.ttl> ;

The sequence of the presets within this file doesn’t seem to matter; in general, the host sorts the presets into alphanumeric sequence.


The name of this file is arbitrary; all that seems to matter is that it’s properly referenced in manifest.ttl as described above.

Similar to manifest.ttl, presets.ttl consists of a header section (the @prefix lines) followed by individual preset sections from each preset file. In my case, each preset started with an empty pair of angle brackets; I added within the angle brackets the exact name used within angle brackets at the top of each corresponding preset entry in manifest.ttl. In my case I used the original preset file name (including the .ttl suffix) in both places.

Again, the sequence of the presets within this file may not matter.

Tagged with: , , ,
Posted in Instruments

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: