LV2 Plugins - High Level Overview
Created on 2022-05-30T18:47:54-05:00
Bundles
- A "bundle" is a directory which has a name ending in .lv2 and contains the relevant files for the plugin.
- Bundles contain a manifest of all their features called "manifest.ttl"
- There may be other manifest files as well as compiled binaries which come with the package.
- Hosts are expected to look at the manifest.ttl of each .lv2 directory found so they are encouraged to be small and make references to other ttl files in the bundle (in case the plugin is actually used.)
Manifests
- Manifests are in the form of RDF Turtle triplet files.
- Triplets map a "subject" to an "object" via a "predicate."
- This forms an infinitely extensible way to relate any particular piece of structured data to any other piece via arbitrary relationships.
- Manifests describe all features available via the plugin and how to make use of those features.
Implementation
- Manifest specifies which chunks of code are relevant for a particular plugin.
- Host then loads those functions (ex. via dlopen) and calls them.
Important Paths
- /usr/lib/lv2
- /usr/local/lib/lv2
- ~/.local/lib/lv2
Note that some applications are stupid and will read ONLY from /usr/lib/lv2 and will ignore attempts to place them elsewhere or allow you to configure it. Ardour comes to mind.