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.
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.