-
Notifications
You must be signed in to change notification settings - Fork 26
Home
LV2 is a platform-agnostic Free Software plugin specification with a liberal license. It defines a minimal yet extensible C API for plugin code and a format for plugin "bundles". LV2 separates static semantic metadata from code, so information about installed plugins can be discovered without loading any modules or executing any third-party code. A property-centric design combined with audio, control, "control voltage" (audio-rate control), and "atom" message (MIDI/OSC/control/GUI/etc.) ports for plugin control from UIs, other code or the outside world. Extensibility allows almost any feature to be possible within LV2.
"LV2 is what I call a 'click' technology (like LISP or RDF), it seems insane until it "clicks" and you get it. You really need that little enlightenment experience to be able to work with it well (and especially to be able to work on it)." --drobilla.net : Writing an LV2 Book
-
LV2 homepage
- Why LV2? - outline and overview of LV2 benefits
- LV2 - Wikipedia
- Open-Source Audio Plug-In Formats: LV2 - quick overview video by unfa.
- Sonoj 2018: Plugin Formats: An explanation of various formats and why they exist - longer overview video by falkTX.
- LV2 Achievement of GMPI Requirements
- drobilla.net : LV2: The good, bad, and ugly - Nov 11 2019
- drobilla.net : Cleaning Up the LV2 Extension Mess - Nov 15 2019
- drobilla.net : On the LV2 Stack, Dependencies, and Incrementalism - Oct 15 2022
This is page is a WIP overview of the LV2 standards, bundles and tools available. If you have some information to list, or something is incorrect, please do make a change.
GitHub tags to use or check: lv2, lv2-plugin, lv2-plugins, lv2-host
Donations for drobilla: Github, Patreon
- LV2 Devel mailing-list
- IRC: #lv2, #lad (libre/Linux audio developers), #lau (users), #jack, #opensourcemusicians on Libera.Chat (webchat)
- Forum: LinuxMusicians.com: Plugins, Effects and Instruments
- Developing
- Programming LV2 Music Production Plugins From Scratch - YouTube playlist by B.Music
- harryhaaren: Writing LV2 plugins : An LV2 Overview
- MOD: Create LV2 Plugin Series (Part 1)
- https://wiki.moddevices.com/wiki/How_To_Build_and_Deploy_LV2_Plugin_to_MOD_Duo
- http://ll-plugins.nongnu.org/lv2pftci - slightly outdated though still informative (code)
- LV2オーディオプラグイン開発ガイド - book in Japanese by Atsushi Eno
See also the frameworks section.
-
Programming LV2 Plugins (alternative layout) - "This is a series of well-documented example plugins that demonstrate the various features of LV2. Starting with the most basic plugin possible, each adds new functionality and explains the features used from a high level perspective." (rust-lv2 - A "translation" of the LV2 Book into Rust.)
- lv2-examples - Official LV2 examples.
-
eg-amp.lv2 - Simple example of a basic LV2 plugin with no additional features.
- https://github.com/badosu/BadAmp - Implementation of the LV2 amp plugin at LV2 Book. Many different GUIs are implemented, the idea is to compare the different GUI implementations for each toolkit.
- mod-eg-amp-dpf - UI for eg-amp using DPF.
- https://github.com/lvtk/eg-amp-goui.lv2 - UI for eg-amp written in Go.
- eg-midigate.lv2 - MIDI input and control of audio, with options and readable labels.
- eg-fifths.lv2 - Simple MIDI event reading and writing.
- eg-metro.lv2 - Demonstrates tempo synchronisation by clicking on every beat.
- eg-params.lv2 - Basic mechanism for parameters and control port state.
- eg-sampler.lv2 - Loads a .wav file and plays it on a MIDI node input event.
- eg-scope.lv2 - Waveform of an incoming audio signal using Cairo GUI.
-
https://github.com/osamc-lv2-workshop/lv2-workshop - Documentation and C++ code for a workshop on creating LV2 plug-ins by OSAMC.
- https://github.com/osamc-lv2-workshop/simplegain - A simple audio volume gain plugin
- https://github.com/osamc-lv2-workshop/simpledelay - A simple audio delay with feedback.
- https://github.com/osamc-lv2-workshop/simplesaw - An example plugin producing a sawtooth wave.
- https://github.com/osamc-lv2-workshop/simplesynth - A simple sawtooth wave synthesizer.
- https://github.com/osamc-lv2-workshop/faustsimplesynth - A simple sawtooth wave synthesizer implemented in Faust.
- https://github.com/osamc-lv2-workshop/simplefmsynth - A simple 2-Op FM synthesizer plugin.
- https://github.com/SpotlightKid/faustfilters - Virtual-analog filters from the FAUST standard library packaged as multi-format plugins via DPF.
- mod-lv2-examples - MOD examples.
- mod-eg-synth-dpf
- property-example - How to use LV2 parameter properties as control values.
- https://github.com/YruamaLairba/yru-simple-LV2-C - Simple-echo, simple-tremolo, simple-flanger in C.
- https://gitlab.com/ColinKinloch/simple.lv2 - Simple set of LV2 plugins in C.
- https://gitlab.com/gabrbedd/lv2-amp-example-c
- https://gitlab.com/gabrbedd/lv2-amp-example-cpp
- https://gitlab.com/gabrbedd/lv2-sampler-example
- https://gitlab.com/stazed/lv2-example - An example C++ LV2 for testing.
- https://github.com/YruamaLairba/rust-lv2-more-examples - Examples showing how to use the rust-lv2 framework.
- https://github.com/YruamaLairba/yru-rust-lv2-plugins - Personal plugin realisation using the rust-lv2 framework.
- https://github.com/oswald2/lv2plugins - Some plugins in LV2 format for Linux, for learning the Rust language.
- https://github.com/ul/simple-amplifier - A very simple example of LV2 plugin built in Zig.
-
LV2 Specifications / Modules API Reference - Reference Documentation for each module/extension.
- LV2 - git repo, "contains specifications (C headers and Turtle files), documentation generation tools, and example plugins."
- File List - list and descriptions of header files.
- lv2specgen - a documentation generator for LV2 specifications.
- Data Structures - list of data structures with brief descriptions.
- Data Fields - list of struct and union fields with links to the struct/union documentation for each field.
RDF is a very simple yet powerful way to codify information about data and its relations. A chunk of RDF data is essentially an edge-labelled directed graph database. RDF is only an abstract data model, it doesn't have any one particular syntax for text representations. A modern way of representing RDF is the Turtle syntax, and LV2 plugins use this to store metadata in files ending .ttl. The primary data for an LV2 bundle is be in a file called manifest.ttl though further .ttl files can be referenced.
"The main usefulness [of Turtle] for LV2 is within the host. You can easily/quickly find all the plugins with some particular kind of input port and so on." "... just a dumb syntactic veneer for triples." --drobilla
- W3C RDF Primer — Turtle version
- RDF and Turtle Serialization - 15m syntax overview video.
- Wikipedia: Turtle (syntax)
- RDF 1.1 Turtle - Terse RDF Triple Language - full specification, W3C Recommendation, 25 February 2014
- schemas.lv2 - third-party vocabularies used in the LV2 specifications.
In the example below, first the shortcut/namespace prefixes for the lv2, doap and spdx ontologies are declared. Next, every plugin must have its own URI. Then the 4 following lines declare that this resource is of the type lv2:Plugin, has a shared library with the filename silence.so, is known under the name Silence and is licensed under the GNU GPL 3+. These 4 properties are mandatory for an LV2 plugin - if a plugin does not have all of them a host might not load it.
@prefix lv2: <http://lv2plug.in/ns/lv2core#>.
@prefix doap: <http://usefulinc.com/ns/doap#>.
@prefix spdx: <http://spdx.org/rdf/terms#>.
<http://example.org/lv2/wikipediaexample/silence>
a lv2:Plugin;
lv2:binary <silence.so>;
doap:name "Silence";
doap:license spdx:GPL-3.0-or-later;
rdfs:comment "This is an example plugin that includes an example plugin description."
lv2:port [
a lv2:AudioPort, lv2:OutputPort;
lv2:index 0;
lv2:symbol "output";
lv2:name "Output";
].
The rest of the file describes the plugin's input and output ports. The plugin only above has one single port with the name Output, the symbol output, the index 0 and the types lv2:AudioPort and lv2:OutputPort. Every port must have all these properties, with the rest of the file describing the plugin's input and output ports. Every port symbol must be unique and a valid C identifier, and the indices must start at 0 and be contiguous - you can't have a port with index 4 unless you also have ports with indices 3, 2, 1 and 0. The indices will be used in the shared library to identify the ports.
If the manifest.ttl file contains a lot of data this can hard to manage; instead we can just have the bare minimum in manifest.ttl, so the host knows that this bundle contains that plugin, what the binary is, and a reference to another RDF file that the host can load if it wants to know more about that plugin.
<http://example.org/lv2/wikipediaexample/silence>
a lv2:Plugin ;
lv2:binary <silence.so> ;
rdfs:seeAlso <silence.ttl> .
Turtle has a syntax for translating values, an example of which can be seen in the noise-repellent ttl;
doap:name "Noise repellent",
"Repelente de ruido"@es ,
"Répulseur de bruit"@fr ;
A plugin URI is a unique reference to the "form" of ports and abilities that plugin provides. All plugin versions with the same URI are compatible by definition. Replacing a resource with a newer version of that resource MUST NOT break anything. If a change violates this rule, then the URI of the resource (which serves as the major version) MUST be changed.
lv2:binary <silence.so>;
The lv2:binary value of an lv2:Plugin MUST be noted in the bundle's manifest.ttl file and MUST be a URI that resolves to a shared library object containing the lv2_descriptor() or lv2_lib_descriptor() function.
This property may be used similarly by extensions to relate other resources to their implementations.
If multiple binary files are declared, suggested host behaviour is to try and execute each in turn, though this is not official.
Plugins communicate via "ports", which can transmit any type of data. Data is processed by first "connecting" each port to a buffer, then repeatedly calling a plugin's run() method to process blocks of data.
All LV2 port descriptions MUST have a rdf:type
that is one of:
lv2:Port
lv2:InputPort
-
lv2:OutputPort
.
Additionally there MUST be at least one other rdf:type
which more precisely describes type of the port:
displayPriority
- Indicates how important a port is to controlling the plugin.
A lv2:ControlPort
is connected to a pointer to a single value of C type float. This value is fixed and valid for the duration of the call to run(). Thus the "control rate" is determined by the block size, which is controlled by the host (and not necessarily constant).
lv2:AudioPort
- Ports of this type will be connected to an array of length sample_count with elements of C type float.
Audio ports contain arrays with one float element per sample, allowing a block of audio to be processed in a single call to run().
lv2:port [
a lv2:AudioPort, lv2:InputPort;
lv2:index 4;
lv2:symbol "input_4";
lv2:name "Mixer Channel 4";
].
Control data at audio rate.
- LinuxMusicians.com: On JACK/LV2 CV - forum post regarding the CV port type etc.
A unit can also be noted for hosts to optionally display or calculate with.
lv2:port [
a lv2:CVPort, lv2:InputPort;
lv2:index 1;
lv2:symbol "osc1_freq";
lv2:name "Osc A Freq";
lv2:maximum "0"
lv2:maximum "20000"
units:unit units:hz
].
N.b. the older AMS LV2 modules use a float between 0 and 1 and -1 and 1, and the newer MOD Devices LV2 modules use a float in a range from 10 down to -10 (to represent Eurorack voltage).
The MOD Devices vocabulary notes it's requirements: "Ports with the type mod:CVPort MUST define their minimum and maximum values. and those need to be within the possible 3 cases: - Unipolar mode (minimum: -10, maximum: 0), Bipolar mode (minimum: -5, maximum: +5), + Unipolar mode (minimum: 0, maximum: +10).
- LAC 2014: Video: "LV2 Atoms: A Data Model for Real-Time Audio Plugins" by David Robillard
- LV2 Atoms: A Data Model for Real-Time Audio Plugins - PDF
- drobilla.net : LV2 atom and state serialisation
- harryhaaren: LV2 and Atom communication
Here is an example of an Atom that contains every currently defined Atom type, serialised to Turtle by sratom:
[]
rdf:value [
a eg:Object ;
eg:one "1"^^xsd:int ;
eg:two "2"^^xsd:long ;
eg:three "3.0"^^xsd:float ;
eg:four "4.0"^^xsd:double ;
eg:true true ;
eg:false false ;
eg:path </foo/bar> ;
eg:uri eg:value ;
eg:urid eg:value ;
eg:string "hello" ;
eg:langlit "bonjour"@fra ;
eg:typelit "value"^^eg:Type ;
eg:blank [
a eg:Object ;
] ;
eg:tuple [
a atom:Tuple ;
rdf:value (
"foo"
true
) ;
] ;
eg:vector [
a atom:Vector ;
rdf:value (
"1"^^xsd:int
"2"^^xsd:int
"3"^^xsd:int
"4"^^xsd:int
) ;
] ;
].
Examples of AtomSequences for plugin <-> UI communication:
- EQ10Q equalizer
- x42 Sisco oscilliscope
Tools and guides:
- forge.h
- util.h
- Sratom - a library for serialising LV2 atoms to and from RDF/Turtle.
- OMK ser_atom.lv2 - general purpose LV2 atom forge serializer.
- OMK netatom.lv2 - utility header for (de)serializing LV2 atoms in binary form.
- LV2 forge and Tempo syncronization
MIDI is done with the atom extension coupled with just MIDI raw bytes, the same way you use { 0x90, 64, 100 } etc.
The midigate plugin can be useful as a reference.
In particular:
-
you add in a port as "atom sequence" (which is basically a buffered sequence of atoms, 64bit aligned):
const LV2_Atom_Sequence* control;
-
you parse through the atom events during run/process, and handle those that have a "MidiEvent" tag:
LV2_ATOM_SEQUENCE_FOREACH (self->control, ev) {
if (ev->body.type == self->uris.midi_MidiEvent) {
const uint8_t* const msg = (const uint8_t*)(ev + 1);
switch (lv2_midi_message_type(msg)) {
case LV2_MIDI_MSG_NOTE_ON:
++self->n_active_notes;
break;
case LV2_MIDI_MSG_NOTE_OFF:
if (self->n_active_notes > 0) {
--self->n_active_notes;
}
break;
...
Those midi utility functions come from https://github.com/lv2/lv2/blob/master/lv2/midi/midi.h but you don't need to use them of course, just makes things a bit more convenient for new plugins.
Here is an example of MIDI atoms, serialised to Turtle by sratom:
[]
rdf:value [
eg:seq [
a atom:Sequence ;
rdf:value (
[
atom:frameTime 1 ;
rdf:value "901A01"^^midi:MidiEvent ;
] [
atom:frameTime 3 ;
rdf:value "902B02"^^midi:MidiEvent ;
]
) ;
] ;
] .
No-one has yet released work on relaying MPE or Note Expression information between hosts and plugins.
- https://github.com/atsushieno/lv2-midi2 - "experimental attempt to extend LV2 to add support for MIDI 2.0, which would look like existing MIDI 1.0 support through Atom. There is not of much implementation within this extension feature itself. It resembles how the existing MIDI 1.0 support is done. In LV2, most of the existing work (packet processing) is done through LV2 Atom API. So far I have imported my cmidi2 library (which is also experimental UMP processing library) to make it possible for LV2 developers."
- osc.lv2 - Open Sound Control Extension for the LV2 Plugin Specification.
- eteroj.lv2 - Open Sound Control inside LV2 plugin graphs
"nobody cares about Morph and it's not in a state that really belongs in the "recommended standard" list (sorry, flagrant abuse of power on my part there)" --drobilla
-
LV2 + midnam (Robin Gareus, Nov 2016)
- lv2midnam MIDI Naming
- gmsynth.lv2
- drumgizmo
- sfizz [1]
- a-fluidsynth (of Ardour)
- avldrums - hardcoded
- Carla
- https://gitlab.com/OpenMusicKontrollers/mapper.lv2 - Concurrent lock-free implementation of the LV2 URID extension
- drobilla.net : Host-generated LV2 file choosers
- Using LV2 atom:Path (or how to get files safely in a plugin without a GUI)
- drobilla.net : LV2 plugin transport synchronisation
- OMK timely.lv2 - utility header for time-based LV2 plugins.
- harryhaaren: Writing LV2 GUI's: Making it look snazzy
- LV2 (theoretically) supports multiple UIs per plugin instance. - Synthpod
- Feature request: support for multiple UIs - Jalv
- Ardour: LV2 options for UI theme
- [LV2] RFC: ui:requestParameter feature - David Robillard, Feb 16
"I wouldn't say general GUI frameworks are inherently not suitable for plugins, but virtually all of them (in particular Gtk and Qt) aren't because of the [below] problems. (Some of which, in some cases, are sort of surmountable, maybe, but that's sort of beside the point)" --drobilla, #lv2, July 20
"1) meshing with the event loop of the host, 2) global state, 3) dynamic linker conflicts. "general purpose" UI toolkits own the whole application event loop by default and it's extra legwork to make them work with the host having its own already. When you add to the fact that there's no "de facto" cross-toolkit event loop on linux the way there is on windows or macos, you end up with something like suil which has to handle the messy details of specific combinations of plugin/host toolkit interop" --wrl, #lv2, July 20
- [LV2] plea to plugin UI devs - regarding the major problem when a plugin uses Qt or GTK, Robin Gareus, Mar 16
"Please avoid big toolkits and be careful with C++
"gtk2 + gtk3 cannot exist in the same memory-space, likewise Qt4 + Qt5. This means a gtk2 host cannot load plugins with a gtk3 GUI, nor can you load a Qt4 plugin at the same time as plugin using a Qt5 GUI.
"While gtk and Qt allows for nicely portable applications, that is definitely not true for plugin GUIs. fltk is not trivial either. There are all sorts of edge-cases: e.g. relocating the library (dependent paths, modules), static initialization/unloading and ABI compatibility...
"The latter also extends to dependencies direct or indirect. A recent example is sigc++ gcc4/gcc5 ABI incompatibility (gtkmm uses sigc++)."
Related to plugins:
- Suil - lightweight library for loading and wrapping LV2 plugin UIs.
-
Pugl - a minimal portable API for OpenGL GUIs. API
- lvtk/go-pugl - Go bindings for Pugl
- osch/lua-lpugl - a minimal Lua-API for building GUIs
- johannes-mueller/pugl-sys - a rust wrapper for Pugl
- johannes-mueller/pugl-ui - Rust stub crate for GUI-toolkits using pugl
- johannes-mueller/jilar - Johannes' pugl-ui widget set for LV2 plugins
-
https://github.com/brummer10/Xputty - A damn tiny abstraction Layer to create X11 window/widgets with cairo surfaces.
- Xgain_x11ui.c
- https://github.com/brummer10/knobmake - create horizontal knob frames with cairo
- https://github.com/brummer10/XUiDesigner - drag-n-drop X11 LV2 GUI design tool for libxputty, with FAUST support
- sinsynth_gui.cpp
-
OpenAV AVTK
- AVTK - the UI Toolkit behind OpenAV Software - PDF by Harry Van Haaren
-
https://gitlab.com/OpenMusicKontrollers/d2tk - performant, dyamic, immediate-mode GUI tool kit in C which partially renders on-change only by massively hashing-and-cashing of vector drawing instructions and on-demand rendered sprites.
- https://gitlab.com/OpenMusicKontrollers/d2tk.lv2 - Example LV2 plugin bundle for d2tk based GUIs
-
https://github.com/x42/robtk - Robin's LV2 UI ToolKit. x42. Robin doesn't recommend using.
- https://github.com/domohawk/rtkgain - example LV2 plugin for robtk
- LV2 JACK wrapper
- https://github.com/alex-tee/ztoolkit - (Ztk) is a GUI toolkit for LV2 plugins heavily inspired by GTK, used by Zrythm
-
MRuby-Zest - used by ZynAddSubFX
- LAC 2018: MRuby-Zest: a Scriptable Audio GUI Framework - video of talk by Mark McCurry.
-
https://github.com/sjaehn/BWidgets - Widget toolkit based on Cairo and PUGL, used by BSEQuencer, etc.
- https://github.com/sjaehn/BAmp - Simple amplifier LV2 plugin using BWidgets GUI.
- https://github.com/geontime/redkite - small GUI toolkit, used by Geonkick
- OMK widgets.lv2 - LV2 widgets plugins
- https://github.com/original-male/ntk - fork of FLTK 1.3.0, adds graphics rendering via Cairo, transparent/overlapping widgets, internals streamlining, further and improved widgets, used by Non-DAW
- https://github.com/sadko4u/lsp-tk-lib - Graphical toolkit library used by Linux Studio Plugins Project.
-
https://github.com/hecrj/iced - A cross-platform GUI library for Rust, inspired by Elm
- https://github.com/BillyDM/iced_audio - An extension to the Iced GUI library with useful widgets for audio applications
- https://github.com/steinbergmedia/vstgui - used in sfizz
Other projects:
-
https://github.com/Immediate-Mode-UI/Nuklear - a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain.
- https://git.open-music-kontrollers.ch/lv2/nuk.lv2/about - Example LV2 plugin bundle for the nuklear GUI
- oui-blendish - layouting and handling input + NanoVG drawing functions imitating the Blender 2.5 UI look.
-
https://github.com/memononen/nanovg - Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.
-
https://github.com/jpcima/skeleton.lv2 - Quick-start template for LV2 plugins with GUI
- https://github.com/ocornut/imgui - bloat-free graphical user interface library for C++.
-
https://github.com/jpcima/skeleton.lv2 - Quick-start template for LV2 plugins with GUI
- https://github.com/wrl/rutabaga - a toolkit for developing user interfaces with openGL.
- Yue - library for creating native cross-platform GUI apps.
- LittlevGL - embedded GUI Library.
- nana - cross-platform GUI applications with modern C++11 style.
- https://github.com/andlabs/libui - Simple and portable (but not inflexible) GUI library in C.
- GLV GUI Toolkit - a GUI building toolkit written in C++ for Linux, OSX, and Win32.
- SDL-widgets - a GUI toolkit on top of the SDL libraries, written in C++.
- https://github.com/lvtk/cefui - CEF3 powered LV2 UI
- https://github.com/moddevices/modgui-embed - allows regular hosts to see MODGUIs as if they were LV2 X11 UIs.
- https://github.com/x42/sofd - Simple Open File Dialog for X11 without toolkit.
- https://github.com/brummer10/XFileSelect - A simple file select dialog
- https://github.com/btzy/nativefiledialog-extended - small C library with that portably invokes native file open, folder select and save dialogs
- https://github.com/x42/system_under_test.lv2 - Empty LV2 template to test processing
- https://github.com/x42/debug.lv2 - Test/Debug plugin (X11, linux only)
- https://github.com/drobilla/glamp.lv2 - LV2 plugin for testing GLFW UIs.
- https://git.cuprictea.org/vkpugltest - Vulkan
- https://github.com/ventosus/alluis.lv2 - plugin to test various LV2 UI toolkits.
- https://github.com/ventosus/customui.lv2 - plugin to test custom LV2 UI.
- https://github.com/x42/host-sync-test.lv2 - plugin for timing information test.
- https://github.com/x42/host-synth-test.lv2 - instrumentation tool, LV2 synth to test MIDI alignment in hosts
- https://github.com/x42/lv2vst
- https://gitlab.com/drobilla/mda-lv2/-/tree/master/lvz
- https://github.com/DISTRHO/juce/blob/main/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp
- LV2 Worker - allows scheduling of work to be performed in another thread.
"This extension allows plugins to schedule work that must be performed in another thread. Plugins can use this interface to safely perform work that is not real-time safe, and receive the result in the run context. The details of threading are managed by the host, allowing plugins to be simple and portable while using resources more efficiently."
- Prototype thread extension by x42 · Pull Request #33 · lv2/lv2 - inform plugins to set-up correct realtime schedule priorities for required background threads.
"the Data Access and Instance Access extensions are really just parts of the same thing and should live together" --drobilla
-
Dynamic Manifest - write plugin libraries where data is dynamically generated at runtime (e.g. API wrappers).
- Dynamic Manifest API
- NASPRO - allow you to use plugins developed for other plugin standards in LV2 hosts.
"The LV2 API, on its own, cannot be used to write plugin libraries where data is dynamically generated at runtime (e.g. API wrappers), since LV2 requires needed information to be provided in one or more static data (RDF) files. This API addresses this limitation by extending the LV2 API."
"it's a pretty ugly solution, and the caveats of using it currently aren't very clear." --drobilla
Usually if something is really interesting it ends up becoming official. That was the case with for example lv2:enabled
, a designation we can place on control ports so the plugin can know it is under "bypass" mode, and more lately, properties were added for UIs; ui:scaleFactor
, ui:foregroundColor
and ui:backgroundColor
. A few hosts already had support for these before they became official spec.
Further extensions have been implemented by one or more hosts.
- Ingen - Ingen is a modular audio processing environment. This vocabulary describes an Ingen configuration, and is used in both the control protocol and saved files. Conceptually, Ingen represents a tree of objects, each of which has a path (like /main/in or /main/osc/out) and a set of properties.
A basic audio thru example. Also used by MOD Devices to save 'Pedalboard' session graphs for sharing online.
- lv2bankpatch MIDI Bank/Patch Notifications - LV2 extension to allow a synth to inform a host about the current used MIDI bank/program.
- lv2automate Self-Automation - Support for plugins to write automation data via Atom Events
- Plugin-provided bypass - A port with the designation "processing#enable" must control a plugin's internal bypass mode.
- lv2routing plugin port/routing control - This is a "feature" to simplify per port meta-data of http://lv2plug.in/ns/ext/port-groups/port-groups.html#source
-
lv2inlinedisplay Inline-Display - Support for displaying a miniaturized generic view directly in the host's GUI. Requires the use of Instance Access.
- Code: Ardour, Carla, Synthpod, x42/robtk, LSP Plugins
- lv2license License-Report - Allow for commercial LV2 to report their licensing status.
- KXStudio External UI - subclass of http://lv2plug.in/ns/extensions/ui/#UI just like http://lv2plug.in/ns/extensions/ui/#GtkUI is. It defines LV2UI_Widget pointer/handle as a pointer to LV2_External_UI_Widget
- KXStudio LV2 Control Input Port Change Request - an LV2 Extension for allowing plugins to request changes on their own control input ports.
- KXStudio Programs - allows a host to access plugin-side midi-mapped programs (ala DSSI style, but for LV2). It is not the same as LV2 Presets, which defines host-side presets where the plugin has no control or role whatsoever.
"the program stuff I should leave a note to not use" --falktx
- KXStudio Realtime-Safe Memory Pool - LV2 realtime safe memory pool extension definition.
"rtmempool is something only ever used in zynadd, another dead project" --falktx
- OMK espressivo.lv2 - LV2 plugin bundle to handle expressive events.
- OMK xpress.lv2 - Utility header for expression based LV2 plugins.
- OMK canvas.lv2 - LV2 canvas extension.
- MOD - properties for describing MOD Devices related data.
"This is a vocabulary for describing extra plugin data specific to MOD software and devices."
-
MOD GUI - In MOD Devices, every plugin has a real pedal like representation in a web based environment, with several plugins in a pedalboard. For this, each plugin must have its html code that allows the browser to properly render it.
- mod-sdk - SDK to implement the MOD gui interface
- MOD SDK - MOD Wiki
The SDK's goal is to allow LV2 plugin developers to implement the MOD Graphical User Interface extension using a template wizard to easily create a plugin GUI without the need to write any line of code, test the plugins and deploy them into a MOD device.
- https://wiki.moddevices.com/wiki/Preparing_the_Bundle - In this page you will learn how to add the features of the MODGUI extension to an existing LV2 plugin bundle. This is a very mechanical procedure and all you need to know is how to edit some text files in a plain text editor, such as notepad. No programming skills are needed.
- mod-hmi-widgets.lv2 - for control of LEDs, rotary dial feedback, etc.
- lv2kit - Meta-repository for building all LV2 libraries at once
- Sord - lightweight C library for storing RDF data in memory.
- Serd - lightweight C library for RDF syntax which supports reading and writing Turtle, TRiG, NTriples, and NQuads.
- props.lv2 - utility header for property based LV2 plugins.
- LVTK - an API for writing LV2 Plugins in C++.
- https://github.com/MartinPreinfalk/lv2cpp - C++ LV2 audio plugin development library.
- https://github.com/milasudril/lv2plug - Lightweight LV2 interface wrapper
- plugingizmo - plugin wrapper classes used by DrumGizmo.
- https://github.com/rerdavies/lv2cairo - C++ toolkit for implement LV2 Plugins with Cario/X11 user interfaces.
- https://github.com/RustAudio/rust-lv2 - A safe, fast, and ergonomic Rust library to create LV2 plugins for audio processing or synthesis, on any platform.
- https://github.com/bepzi/lv2-sys - Unsafe Rust bindings to the LV2 audio plugin standard.
- https://github.com/poidl/lv2 - Minimal LV2 interface for Rust
- https://github.com/rtbo/lv2-rs - LV2 audio plugins in safe Rust
- https://github.com/poidl/lv2_raw - Exposes the raw LV2 interface to Rust
- https://github.com/allen-marshall/lv2-se-bundle - Rust library for reading/writing LV2 bundle RDF data.
- https://rust-audio.discourse.group/c/ecosystem/lv2/17 - discussion forum
- https://github.com/lvtk/go - LV2 related Go bindings and packages.
- https://github.com/lvtk/go-lv2 - Go bindings for LV2.
- https://github.com/fps/lv2-horst - simple plugin host exposing plugins as jack clients. Features python bindings.
- https://github.com/psilord/lv2-ecl - LV2 plugins in Embeddable Common-Lisp
- https://github.com/agraef/pure-lang/tree/master/pure-lv2 - generic LV2 plugin wrapper for Pure.
- https://github.com/ziglibs/zig-lv2 - A toolkit for LV2 plugin authors written in Zig.
-
DPF - DISTRHO Plugin Framework. Allows developers to create plugins with custom UIs using a simple C++ API. DPF can build for LADSPA, DSSI, LV2 and VST formats.
- https://distrho.github.io/DPF/group__PluginMacros.html
- Let's make some plugins! - video of LAC 2016 talk by falkTX.
- https://github.com/DISTRHO/DPF/tree/master/examples
- https://github.com/DISTRHO/gl-examples - examples and test code for the DPF UI toolkit.
- https://github.com/DISTRHO/DPF-Plugins/tree/master/plugins
- https://github.com/DISTRHO/DISTRHO-Ports/tree/master/ports
- https://github.com/DISTRHO/DISTRHO-Ports-Extra/tree/master/ports
- https://github.com/SpotlightKid/cookiecutter-dpf-effect - cookiecutter project template for DPF.
- https://github.com/SpotlightKid/cookiecutter-dpf-faust - cookiecutter project template for DPF using FAUST.
- https://github.com/lucianoiam/dpf-webui - rough code for embedding a CEF web view in a DPF plugin.
-
JUCE - got LV2 target and hosting support in JUCE 7
- https://github.com/lvtk/jlv2 - A JUCE module which provides a LV2PluginFormat for hosting, pre alpha.
- SA_Toolkit - C plugin framework/toolkit with LV2 target support
- mod-plugin-builder - toolchain and libraries used in MOD Devices.
- Dplug - Make audio plug-ins with D (support VST2 / VST3 / AU / AAX / LV2, macOS/Windows/Linux).
-
https://github.com/danilobellini/audiolazy - Expressive Digital Signal Processing (DSP) package for Python
- https://github.com/danilobellini/lz2lv2 - LV2 plugin code generator from AudioLazy/Python code.
- https://github.com/danilobellini/lz-plugins-lv2
- https://bitbucket.org/agraef/faust-lv2 - LV2 plugin architecture for the FAUST programming language.
- https://git.open-music-kontrollers.ch/lv2/mephisto.lv2 - a Just-in-Time FAUST compiler embedded in an LV2 plugin.
- https://github.com/x37v/pdlv2 - turns Pure Data patches into LV2 plugins.
- https://github.com/pierreguillot/Camomile - a plugin with Pure Data embedded that offers to load and to control patches inside a digital audio workstation.
- https://github.com/hotguac/Sprola - a DSL with the purpose of simplifying the creation of an audio plugin in the LV2 format. Other plugin targets and GUI creation is out of the project's scope.
- https://github.com/bgribble/mfp - Music For Programmers, a graphical patching language, patches can be saved as LV2 plugins
- https://github.com/bipscript/bipscript - a scripting language for creating music with LV2 features
- dkbuilder - from circuit to LV2 plugin / simulate a Poweramp.
- iPlug2 (ALPHA)
- Cabbage (ALPHA)
-
lv2ls - list all LV2 plugins installed locally.
- To output plugin uri and name together;
IFS=$'\n' arr=($(lv2ls)) && IFS=$'\n' arr2=($(lv2ls -n)) && for (( i=0; i<${#arr[*]}; ++i)); do printf "%s %s\n" "${arr[$i]}" "${arr2[$i]}"; done
- To output plugin uri and name together;
- lv2info - print information about an installed LV2 plugin.
- lv_plugin_uris.py - print URIs associated with an LV2 plugin
- lv2_list_plugin_presets.py - list all preset URIs of an LV2 plugin with the given URI
- https://gitlab.com/Jofemodo/preset2lv2 - converts several native preset formats to an LV2 bundle containing one or more banks
- carxp2lv2presets.py - Export plugin settings from a Carla project file (.carxp) as LV2 preset bundles
- https://gitlab.com/lv2/lv2 - you only need lv2 header if you're just building plugins
- https://github.com/DISTRHO/PawPaw - a Cross-Platform build scripts setup for static libraries and audio plugins
- https://github.com/lvtk/ttl2c - Turtle to header conversion utility for LV2 Plugin developers.
- https://github.com/fps/lv2-ttl2c - A small python script to generate code from a LV2 plugin bundle manifest
- lv2-ttl-generator - small tool creates the needed .ttl files out of the plug-in binaries (.so) for the .lv2 bundle
- https://github.com/polyeffects/lv2_to_dict - dodgy hack script to convert an LV2 TTL to a python dictionary because TTL is harder for me to parse than json or dicts.
- https://github.com/fps/lv2-generator.sh - A small collection of bash scripts to make creating simple lv2 plugins easier
- manifest_gen.scm - returns the manifest.ttl for a plugin, written in LISP.
- https://github.com/x42/lv2toweb - create XHTML documentation for LV2 plugins.
- https://github.com/nettings/lv2rdf2html - automatic generation of generic HTML/jQuery web GUIs for LV2 plugins based on RDF metadata.
- https://github.com/moddevices/python-rdfmodel - library to extract structured data from LV2 TTL files
- https://github.com/steveb/firce - Genenerates LV2 Impulse Response plugins from audio files
- https://github.com/SmoothProcess/lvhelp - Helps simplify the making of LV2 plugins with c++20 by minimizing duplication.
- https://github.com/aleksrutins/lv2-template - A template for creating an LV2 plugin with C++ and Meson.
- https://github.com/christosku/modgen - container and Python script to build plugins from Max/MSP gen~ exports for MOD Audio devices
-
sord_validate - Validate RDF data, checks that all used properties are actually defined, and that the domain and range of properties is explicitly correct. Given an appropriate schema, this is enough to validate against most of the standard XSD datatypes.
- Validating LV2 Data
- lv2_validate - Validate the given ttl files against the installed LV2 spec using sord_validate.
-
lv2lint - check whether a given LV2 plugin is up to the specification.
for uri in $(lv2ls | grep example.org/lv2/plugin); do lv2lint $uri; done
- lv2-plugin-checker - outputs basic plugin information.
- Torture tester - a program to help with testing of LADSPA and LV2 plugins.
- falkTX/lv2-state-test - A simple and dumb lv2 plugin to test host state support.
- lv2bench
- lv2bm - a benchmark tool for LV2 plugins, inspired in the lv2bench of lilv utils and the Torture tester.
- LiamLombard/level-tester.lv2 - Simple LV2 audio plugin which logs input levels.
- x42/nodelay.lv2 - audio delay line with latency reporting.
- x42/mididebug.lv2 - MIDI message generator.
- jpcima/midifuzz - MIDI Fuzzer to test plugin robustness
-
Lilv - host library.
- Lilv API Reference - a simple yet powerful C API for using LV2 plugins.
- Lilv Python Reference - Python interface.
- https://github.com/moddevices/lilvlib - build script for lilvlib and its python3-lilv dependency.
- https://github.com/adsr/lv2h
- https://github.com/harryhaaren/Lv2Host - simple class that will load a LV2 plugin.
- https://github.com/atsushieno/lilv-sharp - lilv C# binding (very immature) you cannot really generate the sources without fixed lilv.
- https://github.com/pombredanne/rust-lilv - Rust bindings for lilv, a library for simple use of LV2 plugins
- https://github.com/wmedrano/lilv-sys-rs - FFI for lilv, a C library to make the use of LV2 plugins simple.
- https://github.com/savonet/ocaml-lilv - OCaml bindings to the lilv library for using LV2 plugins.
- https://github.com/agraef/pure-lang/tree/master/pure-lilv - provides a Pure module for Lilv.
-
Jalv - real-time JACK host which supports MIDI, embedded GUIs, presets, state saving, and other features. There are several Jalv executables: jalv, jalv.gtk, jalv.gtk3, jalv.gtkmm, jalv.qt4, and jalv.qt5.
- jalv_select - little app to select LV2 plugins for run with jalv.
-
mod-host - LV2 host for Jack controllable via socket or command line.
- https://github.com/cskau/lil-t - setting a Raspberry Pi (Zero) up as a soft-synth device
- carla-single - single plugin of Carla
- x42/jackwrapper.c - a minimal LV2 host.
- https://github.com/giuliomoro/lv2host - an LV2 host with Bela example.
-
https://github.com/burillo-se/lv2host-go - A simple LV2Host written in C++ with bindings in C and Go.
- https://github.com/burillo-se/lv2hostconfig - Config parser for LV2 host
- https://github.com/jayden-chan/pipewire-orchestrator - support for running LV2 plugins with JACK and controlling them with MIDI
- lv2apply - apply an LV2 plugin to an audio file.
- LV2proc - a simple command line effect processor using LV2 plugins.
- lv2file - a simple program which you can use to apply effects to your audio files.
- Audacity - a free, easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems.
- ecasound - a software package designed for multitrack audio processing.
- GStreamer - multimedia framework
- https://github.com/elk-audio/sushi - headless plugin host for ELK Audio OS.
-
Ingen - a modular graph based audio processing system for JACK and LV2 based systems.
- LAC 2015: "Ingen: A Meta-Modular Plugin Environment" - video of talk by David Robillard
- Ingen: A Meta-Modular Plugin Environment - PDF by David E. Robillard.
- drobilla.net : Ingen as LV2 in Ardour
-
Carla - fully-featured audio plugin host, both a stand-alone programme and an LV2 plugin, graph and rack modes, support for many audio drivers, plugin and soundfont formats, as well as sessions, MIDI and OSC control.
- LAC 2018: Carla Plugin Host Feature overview and workflows - video of talk by Filipe Coelho.
-
Synthpod - fills the gap between textual (e.g. SuperCollider) and visual flow (e.g. Pure Data) paradigms, for live performances or general audio and event filtering, runs stand-alone or as a plugin, allows non-linear patching where only strictly linear connections are supported (e.g. as in most DAWs).
- Using Synthpod to build a Morse Code Practice Oscillator - short demo.
-
mod-ui - Web-based interface for the MOD.
- mod-app - MOD desktop application.
- mod-live-usb - MOD platform as bootable Live-USB image.
-
Element - modular plugin host with graph and mixer.
- Element turorials - video playlist.
-
Guitarix - a virtual guitar amplifier for Linux running on Jack Audio Connection Kit. It is free as in speech and free as in beer.
- [Guitarix] - Built in Cabs vs IR's - short overview video.
- Calvo - TUI rack host using Jalv+Node.js
- pd-lv2plugin - an LV2 plugin host for Pure Data.
- Ossia Score - an interactive sequencer for the intermedia arts.
- Ardour - DAW. Record, Edit, and Mix on Linux, macOS and Windows.
- Qtractor - an Audio/MIDI multi-track sequencer application written in C++ with the Qt framework.
- MusE - a MIDI/Audio sequencer with recording and editing capabilities.
- LMMS - Lv2 extension plan - support in progress
- Zrythm - a highly automated and intuitive digital audio workstation
- Traverso-DAW - a digital audio workstation designed to be an extension of your creativity and workflow.
- Harrison-Mixbus - a full-featured digital audio workstation for recording, editing, mixing, and mastering your music.
- Advanced Gtk+ Sequencer - play, capture and create music, with MIDI, piano roll, automation and wave form editor, sampler, soundfonts and virtual instruments.
- REAPER - multitrack audio and MIDI recording, editing, processing, mixing and mastering toolset.
- Any DAW that supports VST2 by using Carla as a plugin.
- Any DAW that supports VST2 by using x42/lv2vst.
- Any DAW that supports VST2/VST3/AU/AAX by using Element as a plugin.
- ffmpeg
- vlc-lv2 - LV2 Audio Plugin Host for VLC.
- Cinelerra GG Infinity
- Liquidsoap - a swiss-army knife for multimedia streaming.
- obs-lv2 - LV2 host for OBS Studio (alpha).
Windows hosts include Ardour, Mixbus, Carla and Ingen (no-precompiled binary). Possibly Audacity.
- https://github.com/atsushieno/cerbero/tree/aap - "has some hidden gems, namely the following forks;"
- https://github.com/atsushieno/aap-lv2-guitarix - Guitarix plugin for AAP, using aap-lv2
- https://github.com/atsushieno/aap-lv2-sfizz - sfizz plugin for AAP using aap-lv2
- https://github.com/atsushieno/aap-lv2-fluidsynth - fluidsynth AAP plugin based on aap-lv2
- https://github.com/atsushieno/aap-juce-ports - Android Audio Plugin ports from desktop JUCE hosts and plugins
-
MOD Devices - MOD Duo / MOD Duo X.
- Mod Duo X: A Portable Open-Source Powerhouse - video by Benn Jordan (The Flashbulb)
- Pedalboards - MOD Devices
- LAC 2016: Publishing your LV2 plugins to the MOD Cloud
- MOD-DOCKER - a MOD DUO emulator using Docker.
- MODEP - a MOD DUO emulator for Raspberry Pi.
- LAC 2018: MOD: building a sustainable Linux Audio based business
-
Poly Effects - Poly Digit / Poly Beebo
- Poly Digit and Beebo Pedals: Modular Multi-touch Mania - video by Benn Jordan (The Flashbulb)
- Zynthian (GitHub) - open synth platform.
- Pedal Pi - DIY programmable guitar pedal using a Raspberry Pi Zero.
- pitracker - baremetal MIDI player/LV2 synth host for the Raspberry Pi.
These lists are not exhaustive.
- DISTRHO Ports - cross-platform audio plugins.
- x42-plugins - professional audio processing units.
- sadko4u/lsp-plugins - tuned audio dsp plugins.
- GxPlugins.lv2 - a set of extra plugins from the Guitarix project.
- mod-utilities - MOD utility LV2 plugins.
- zamaudio/zam-plugins
- swh-lv2 - port of the SWH plugins.
- ssj71/infamousPlugins
- Teliasopia Plugins
- ArtyFX - artistic real-time audio effects from OpenAV.
- ycollet/psi-plugins - psi-plugins from bsjones, uses the ntk widget library.
- ssj71/rkrlv2 - Rakarrack effects ported to LV2.
- MDA-LV2 - port of the MDA plugins by Paul Kellett.
- caps-lv2 - port for the CAPS Audio Plugin Suite.
- moddevices/tap-lv2 - port of the TAP (Tom's Audio Processing) plugins.
- linuxmao-org/njl-lv2 - port of Nick Lambs njl plugins.
- linuxmao-org/shiru-plugins - port of Shiru's plugins, using DPF.
- https://github.com/remaincalm/dpfports - remaincalm effects suite ported to DPF environment.
- DISTRHO ndc Plugs - DPF'ied ports of some plugins from Niall Moody.
- https://github.com/falkTX/invada-studio-plugins-lv2
- https://github.com/klem23/noise_factory - plugins for digital music on Linux.
- Calf Studio Gear
- https://wiki.linuxaudio.org/apps/all/lv2
- https://wiki.thingsandstuff.org/Effects etc.
Precompiled LV2 plugins for Windows and macOS are available from DISTRHO, Zam, x42 (trial), Open Music Kontrollers, and come bundled with Carla, Ardour, as well as the non-free XT plugins with Harrison Mixbus.
- OpenMusicKontrollers/sherlock.lv2 - visualizing LV2 atom, MIDI and OSC events.
- OpenMusicKontrollers/tracker.lv2 - A simple tracker for LV2 events
- OpenMusicKontrollers/moony.lv2 - realtime Lua as programmable glue in LV2.
- https://github.com/jessecrossen/csynth - An LV2 soft-synth instrument where the patches are C++ code.
- OpenMusicKontrollers/vm.lv2 - programmable virtual machine LV2 plugin.
- OpenMusicKontrollers/router.lv2 - an atom/audio/CV router LV2 plugin bundle.
- x42/plumbing.lv2 - small set of plugins for routing audio and MIDI data.
- OpenMusicKontrollers/notes.lv2 - store arbitrary notes/metadata/memos about your project.
- Philipp91/lv2mpris - forwarding control commands to MPRIS players
- x42/mclk.lv2 - MIDI Clock and MIDI realtime-message generator.
- OpenMusicKontrollers/link.lv2 - Ableton Link LV2 plugin bundle.
See the JACK/LV2 CV thread on LinuxMusicians.com for more details.
- blablack/ams-lv2 - port of Alsa Modular Synth internal modules into LV2.
- Fomp - an LV2 port of the MCP, VCO, FIL, and WAH plugins by Fons Adriaensen.
- BLOP-LV2 - port of the BLOP LADSPA plugins by Mike Rawes.
- moddevices/mod-cv-plugins
- BramGiesen/cv-lfo-blender-lv2 https://github.com/moddevices/mod-cv-plugins
- BramGiesen/audio-to-cv-pitch-lv2 - converts audio to CV pitch (1 volt per Octave)
- moddevices/mod-cv-plugins
- ZLFO - fully featured LFO for CV-based automation
- Uhhyou LV2 CVPort Plugins
- omins.lv2 - collection of plugins aimed at modular synthesizers.
- The Infamous Envelope Follower - audio to MIDI or CV.
- linuxmao-org/vcf-lv2 - port of Matthias Nagorni's VCF plugins.
- x42/controlfilter.lv2 - LV2 Control Port Parameter Filters - modular synth blocks
- polyeffects/cv_to_cc.lv2
- synthv1 - old-school 4-oscillator subtractive polyphonic synthesizer with stereo fx.
- https://github.com/thunderox/Minaton - A monophonic, subtractive, beefy analogue style bass and lead synth.
- amsynth - easy-to-use with a classic subtractive synthesizer topology.
- thunderox/triceratops - A polyphonic virtual analogue synthesizer plugin.
- nicoroulet/RaffoSynth - Minimoog emulator, Rust
- padthv1 - old-school polyphonic additive synthesizer with stereo fx.
- The Infamous Cellular Automaton Synth
- IterativeSinCluster - an additive synthesizer, computes 512 sine waves for each note to make tone cluster.
- x42/gmsynth.lv2 - a General MIDI sample player plugin.
- openAV-Sorcer - polyphonic wavetable synth.
- SGuitar - simple guitar rompler in format of LV2 plugin.
- ZynAddSubFX - fully featured open source software synthesizer.
- Yoshimi - a software audio synthesizer, originally forked from ZynAddSubFX.
- Helm - polyphonic synth with lots of modulation.
- Surge - previously sold as a commercial product, very powerful.
- timowest/rogue - multimode softsynth.
- Dexed - DX7 emulator.
- ssj71/reMID.lv2 - implementation of a MOS8580 6581 SID chip.
- zynayumi/zynayumi - based on ayumi, a highly precise emulation of the YM2149.
- https://github.com/atsushieno/ayumi-lv2 - an LV2 plugin implementation of ayumi.
- jpcima/ADLplug - FM Chip Synthesizer — OPL & OPN.
- linuxmao-org/VL1-emulator - emulation of a Casio VL-Tone VL1 based on code by PolyValens
- DISTRHO/Nekobi - Simple single-oscillator synth based on the Roland TB-303.
-
x42/setBfree - tonewheel organ.
- https://github.com/vallsv/setbfree-controller.lv2 - LV2 controller to tune setBFree synthetizer
- sampov2/foo-yc20 - Faust implementation of a 1969 designed Yamaha combo organ, the YC-20.
- Jools64/Hammond-Novachord - attempts to emulate the sound of the Hammond Novachord.
- DISTRHO/Kars - simple karplus-strong plucked string synth.
- jpcima/string-machine - Digital model of electronic string ensemble instrument
- timowest/flute-lv2 - waveguide based physical flute model.
- linuxmao-org/WaveNetVA - feed-forward WaveNet for black-box virtual analog modeling, implemented using JUCE.
- Pianoteq 6 - commercial physically modelled virtual instruments.
- Tunefish - LV2 port of Tunefish virtual analog synthesizer
- Synth2 -virtual-analog synth reproducing synth1 in D.
- jeremysalwen/So-synth-LV2 - ports of 50m30n3's synthesizers.
- linuxmao-org/Minicomputer - makes experimental electronic sounds for industrial, glitch and IDM.
- falkTX/Paraphrasis - spectral modelling synthesizer.
- milasudril/happychords - for producing electronic dance hooks.
- magnusjonsson/qin - for plucking and striking sounds.
- Themaister/airsynth - simple polyphonic softsynth.
- shanipribadi/bytes - four oscillators, 1-bit wavetables and hard sync.
- brummer10/Xmonk.lv2 - simple sound generator to have some fun with.
- ryukau/SyncSawSynth - a synthesizer with up to 10th order PTR sawtooth oscillator.
- ryukau/TrapezoidSynth - a monophonic synthesizer equipped with trapezoid oscillator made from a 5th order PTR ramp function.
- The Newtonator
- https://github.com/switryk/punk-console.lv2 - Atari Punk Console LV2 plugin
- linuxmao-org/EVALUA - based on evaluation of math expressions, similar to the one-liner generative music C programs.
- https://github.com/riban-bw/lv2 - selection of LV2 plugins for Zynthian (and other LV2 hosts).
- https://github.com/DISTRHO/OneKnob-Series - stupidly simple but well-polished and visually pleasing audio plugins
- Auburn Sounds - commercial
- Cut Through Recordings - commercial
- Geonkick - percussion synthesizer.
- ryukau/WaveCymbal - a banded wave-guide synthesizer and an attempt to make cymbal sounds.
- ryukau/FDNCymbal - sounds like hitting a metal plate.
- Stegosaurus - drum synth.
- x42/testsignal.lv2 - test-signals with 9 operation modes. C
- upachler/lv2-signal-gen - generates a sine wave with variable frequency. Rust.
- jkbd/lv2osc - simple LV2 osc example in C++.
- CAPS Click - A sample-accurate metronome.
- live-cue - for triggering long samples.
- handrumr.lv2 - config stored as JSON.
- samplv1 - an old-school all-digital polyphonic sampler synthesizer with stereo fx.
- drumkv1 - an old-school all-digital drum-kit sampler synthesizer with stereo fx.
- openAV-Fabla - drum sampler plugin instrument.
- ninjas2 - rewrite of Ninjas sample slicer.
- beatslash-lv2 (has CV support)
- LinuxSampler - SoundFont sampler with high stability, efficiency and very low latency.
- DrumGizmo - an open source, multichannel, multilayered, cross-platform drum plugin and stand-alone application.
- https://github.com/nicklan/drmr - sampler plugin that (currently) plays hydrogen drum kits
- hydrumkit - a simple LV2 sampler that reads Hydrogen drumkits.
- Composite Sampler - IDI-controllable sampler, best suited for drum samples and supports Hydrogen drumkits
- https://github.com/klem23/helium - for playing Hydrogen drumkits
- https://github.com/falkTX/FluidPlug - SoundFonts as LV2 plugins via FluidSynth
- https://github.com/brummer10/Fluida.lv2 - Fluidsynth as LV2 plugin
- https://github.com/jmage619/jmage-sampler - plays samples in SFZ or JMZ format, stored in memory.
- x42 ALV Drumkits - drum sample player plugin dedicated to Glen MacArthur's AVLdrums.
- sfizz - SFZ sampler.
- simsam - A simple sampler LV2 plug-in based on SFZ files
- https://github.com/atsushieno/aqua - experimental sfz ARIA extensions converter to HTML and LV2 UI implementation
- https://github.com/ssj71/loopor - Looper plugin specifically for the Mod Duo pedal board.
- https://github.com/moddevices/sooperlooper-lv2-plugin - LV2 version of the old LADSPA SooperLooper plugin.
- https://gitlab.com/OpenMusicKontrollers/orbit.lv2 - LV2 Event Looper.
- https://github.com/devcurmudgeon/alo - primarily targeted at the MOD Duo.
- GxLiveLooper.lv2 - a basic, 4 tape loop machine, to record/play loops forward or backwards.
- OMK Midi Matrix - An LV2 MIDI channel matrix patcher
- x42 Onset Trigger - audio to MIDI, for kick drum doubling or replacement.
- https://github.com/metachronica/audio-dsp-midi-trigger - generates MIDI notes by detected audio signal peaks.
- x42 Midifilter.lv2 - a collection of MIDI data filters.
- https://github.com/SpotlightKid/midiomatic - collection of MIDI filter, generator and processor plugins.
- x42 Rule Based MIDI Filter - rule based MIDI mapper.
- https://github.com/blablack/midimsg-lv2 - collection of basic plugins to translate MIDI messages to usable values.
- https://github.com/morbidrsa/humanizer.lv2 - adds a random value between -20 and 20 to velocity with with probability of 50%.
- ZChordz - maps the chords of a whole Minor or Major scale onto the white keys of a piano keyboard, comes with Zrythm.
- QMidiArp - A MIDI Arpeggiator, Step Sequencer and Controller LFO
- https://github.com/moddevices/mod-arpeggiator-lv2 - an LV2 arpeggiator from BramGiesen of MOD Devices
- https://github.com/johanberntsson/simple-arpeggiator-lv2
- https://github.com/taylordotfish/midislide - allows you to use slide notes with plugins that accept MIDI input.
- https://github.com/Volcomix/guitarswitch - enable Guitar articulations on Midi notes.
- https://github.com/brummer10/XKeyboard.lv2 - simple LV2 MIDI keyboard
- x42 stepseq.lv2 - simple step sequencer for moddevices.com.
- BSEQuencer - multi channel MIDI step sequencer.
- MOD Phrase-Sequencer.lv2 / Step-Sequencer.lv2
- https://github.com/x42/midigen.lv2 - LV2 MIDI Test Sequence Generator.
- https://github.com/paulfd/batteur - backing drum machine that can be controlled using a single switch
- https://github.com/x42/xfade.lv2 - stereo cross-fading 2 x 2 input channels to 2 output channels.
- x42 blance.lv2 - stereo balance control with optional per channel delay.
- x42 stereoroute.lv2 - versatile stereo to mono downmix utility.
- https://github.com/sonejostudios/LiveFader - a very simple stereo passive volume fader.
- https://github.com/sonejostudios/StereoKnot - simple stereo through with volume slider.
- https://github.com/sonejostudios/AudioThrough16 - very simple 16-channel audio through.
- https://github.com/sonejostudios/StereoSwitch - stereo switch (send stereo signal to output A or to output B).
- https://github.com/sonejostudios/ABswitchStereo - Stereo source comparison tool.
- https://github.com/sonejostudios/Mixer4x - simple 4-channel stereo mixer.
- https://github.com/sonejostudios/LiveMixer - Stereo Mixer Strip with 2 Aux Sends (post Fader).
- https://github.com/sonejostudios/XYMatrix - XY surround matrix for one source (mono Input) with 4 Outputs (Left, Right, Surround Left, Surround Right) and Position Lock.
- https://github.com/moddevices/mod-volume-lv2 - mono and stereo signal volume plugins.
- https://github.com/moddevices/mod-audio-mixer-lv2 - 4 channel mixer plugin in mono and stereo
- https://github.com/MrBollie/bolliefader.lv2 - Stereo Fader Plugin for MOD Duo
- https://github.com/taylordotfish/ampmod - a customizable amplifier plugin intended to be used with automation.
- https://github.com/unclechu/lv2-stereo-mixer - for stereo-signal manipulation.
- https://github.com/johnflynnjohnflynn/BalanceGain - Stepped gain audio plugin for Balance Mastering.
- https://github.com/johnflynnjohnflynn/BalanceWidth - Stepped stereo width plugin for Balance Mastering.
- https://github.com/ycollet/vopa - Volume Panning Midi CC controllable LV2 plugin.
- https://github.com/x42/mixtri.lv2 - a matrix mixer and trigger processor intended to be used with the oscilloscope.
- https://github.com/x42/matrixmixer.lv2 - matrixmixer.lv2 is a matrix mixer.
- https://github.com/Houston4444/plujain-channelb - a mono switchbox with one input and two outputs.
- https://github.com/Houston4444/plujain-plugins - utility plugins for fading between channels.
- https://github.com/io7m/xswitch - Audio switch LV2 plugin
- https://github.com/jeremysalwen/kn0ck0ut-LV2 - takes two mono 44.1KHz inputs and spectrally subtracts one from the other to create 'acapellas'.
- https://github.com/sboukortt/intersect-lv2 - given a stereo audio stream, “expands” it to three channels.
- https://github.com/kronihias/ambix - cross-platform Ambisonic plug-ins.
- https://github.com/nettings/sm.lv2 - A simple speaker management LV2 plugin with global master volume and per-channel trim, delay, and low-shelf.
- https://gitlab.com/OpenMusicKontrollers/monitors.lv2
- https://github.com/brummer10/XMixer.lv2 - A simple 4 in 1 Mixer
- K-Meter - implementation of a K-System meter according to Bob Katz’ specifications., supports mono, stereo and 5.1 surround sound signals, average reads either RMS or ITU BS.1770-1 levels.
- traKmeter - loudness meter for tracking and levels (gain staging).
- x42 Meters - collection of audio-level meters with GUI in LV2 plugin format.
- x42 Scope - simple audio oscilloscope with variable time scale, triggering, cursors and numeric readout.
- x42 Spectrogram
- Wolf Spectrum - real-time 2D spectrogram plugin (LV2, VST and JACK).
- DISTRHO glBars - an OpenGL bars visualization plugin.
- DISTRHO ProM - LV2 plugin of ProjectM
- https://github.com/brummer10/XWaveView.lv2 - simple scope LV2 plugin
- https://github.com/brummer10/screcord.lv2 - a capture plugin.
- https://github.com/tdufret/jamRecord.lv2 - jam session recorder to only keep on file the last x minutes of a jam.
- https://github.com/taylordotfish/freeze - for freezing tracks in a digital audio workstation—that is, temporarily rendering a track as audio to reduce CPU/DSP load.
- https://github.com/onkelDead/tascam.lv2 - LV2 plugin to control Tascam US-16x08 interface via cutsom alsa driver
- x42 Instrument Tuna - musical instrument tuner with strobe characteristics in LV2 plugin format.
- https://github.com/badosu/simple_filter.lv2 - 2nd order Butterworth Filter. C.
- https://github.com/nilninull/bs2b-lv2 - Bauer stereophonic-to-binaural DSP library.
- https://github.com/pdesaulniers/wolf-shaper - waveshaper plugin w/ spline-based graph editor.
- https://github.com/taylordotfish/waveshaper - powerful LV2 waveshaper plugin.
- https://github.com/johannes-mueller/envolvigo - transient designer plugin in LV2 format, made with rust-lv2.
- https://github.com/sjaehn/BShapr - beat / envelope shaper.
- https://github.com/sjaehn/BSlizr - sequenced audio slicing ("step sequencer effect").
- https://github.com/jeremysalwen/Stutter-LV2
- https://github.com/BramGiesen/ringModulator_lv2 - A simple LV2 ringmodulator plugin
- https://github.com/jpcima/stone-phaser - classic analog phaser effect, made with DPF and Faust
- https://github.com/jkbd/scannervibrato - tonewheel organ Chorus/Vibrato modulation.
- https://github.com/Houston4444/plujain-ramp - rhythmic tremolo.
- x42 Whirl Speaker - imitate the sound and properties of the electromechanical rotating speaker.
- The Infamous Power Cut - tape stop effect.
- The Infamous Power Up - tape start effect.
- https://github.com/St3pan0va/p0ss3ss0r-lv2 - effect with a unique audio engine.
- https://github.com/Anchakor/Ankh-Plugins - distortion, 3-band distortion, 4-band compressor plugins.
- https://github.com/olegkapitonov/Kapitonov-Plugins-Pack - Set of plugins for guitar sound processing.
- https://github.com/danilobellini/hexd-plugins-lv2 - simple LV2 plugins written in C based on the hexd.h macros.
- The Infamous Stuck - clone of the electro-harmonix freeze.
- The Infamous Duffer
- The Infamous Lush Life
- https://github.com/adct-the-experimenter/import-audio-DAW-BAE - export audio to Binaural Audio Editor sound tracks from your favourite DAW.
- linuxmao-org/surge-fx - Surge FX as a separate plugin, built with JUCE.
- moltenot/lv2-widener - introduces random noise into the phase of an audio signal
- fps/state-variable-filter.lv2
- https://github.com/sadko4u/tamgamp.lv2 - a guitar amp simulator
- https://github.com/JWBverheesen/cabinet-simulator - a cabinet simulator
- https://github.com/VeJa-Plugins/Cabinet-Simulator
- https://github.com/VeJa-Plugins/Bass-Cabinets
- https://github.com/VeJa-Plugins/Marshall-1960 - with selectable microphones, distance towards the speaker and axis angle
- https://github.com/moddevices/mod-cabsim-IR-loader - cabsim that can load Impulse Responses
- x42 Compressor - dynamic audio range compressor inspired by Adriaensen's zita-dc1.
- x42 Digital Peak Limiter - look-ahead digital peak limiter based on Fons Adriaensen's DPL-1.
- Molot - port of the Molot Lite compressor.
- Auburn Sounds Couture - Transient Designer
- mzuther/Squeezer - flexible general-purpose compressor with a touch of citrus
- https://github.com/VeJa-Plugins/Compressor - simple up / downwards compressor
- https://github.com/youxkei/jimtel - limiter plugin written in Rust
- x42 Equalizer - x42-eq (aka fil4.lv2)
- EQ10Q
- https://github.com/brummer10/GxMatchEQ.lv2 - matching equalizer, applies EQ curve from one source to a other source.
- https://github.com/brummer10/MelMatchEQ.lv2 - profiling equalizer, using a 26 step Mel Frequency Band.
- https://github.com/QuentinFAIDIDE/FutureLowCut - Old Low-Cut LV2 Audio Filter Plugin
- https://github.com/QuentinFAIDIDE/FutureEqualizer - equalizer with a funny harmonic boost function.
- https://github.com/moltenot/lv2-tilteq -Tilt Equalizer plugin
- abGate - LV2 noise gate plugin
- VeJa Noise-Gate - simple noisegate
- https://github.com/lucianodato/noise-repellent - broadband noise reduction.
- https://github.com/lucianodato/speech-denoiser - speech denoise based on RNNoise library.
- https://github.com/werman/noise-suppression-for-voice - based on Xiph's RNNoise
- https://github.com/brummer10/GxDenoiser2.lv2 - cascaded moving average filter to suppress input noise on the MOD DUO
- https://github.com/michaelwillis/dragonfly-reverb - a concert hall reverb and a room reverb.
- DISTRHO/MVerb
- kushview/roboverb - Interstellar Reverb.
- Panagement - Binaural Realistic Reverb
- linuxmao-org/fogpad - reflections can be frozen, filtered, pitch shifted and ultimately disintegrated
- https://github.com/ipatix/lv2-psx-reverb - Emulate the PSX sound in your music software.
- https://github.com/Dougal-s/Aether - An algorithmic reverb LV2 based on Cloudseed
- Anchakor/ir.lv2 - impulse response (convolution) plugin (for reverb and cabinet simulation).
- x42 Convo.lv2 - no frills zero latency convolution engine (deprecated).
- x42 Zeroconvo.lv2 - two variants: zero configuration options (IRs are only available via presets), zero latency and user-loadable IRs with gain controls.
- polyeffects/polyconvo.lv2 - zeroconvolv2 to allow patch file setting and gain control
- MrBollie/bolliedelay.lv2
- MrBollie/bolliedelayxt.lv2
- ryukau/SevenDelay - 7th order lagrange fractional delay, 7 times oversampled.
- linuxmao-org/regrader - delay repeats degrade in resolution
- GxReverseDelay.lv2 - digital reverse delay lv2 plugin
- MrBollie/bollieretain.lv2 - sound retainer.
- https://github.com/Umcaruje/tfchorus - port of TF Chorus.
- https://github.com/SpotlightKid/ykchorus - based on DSP code by Togu Audio Line (TAL).
- https://github.com/jpcima/ensemble-chorus - digital model of electronic string ensemble chorus.
- https://github.com/pdesaulniers/misstortion - LV2 fork of Misstortion which does its best to be like Logic's Clip Distortion.
- https://github.com/grejppi/bitrot
- https://github.com/blablack/deteriorate-lv2 - a set of plugins to deteriorate the sound quality.
- https://github.com/x42/bitfilter.lv2
- https://github.com/jpcima/quadrafuzz - Multi-band fuzz distortion plugin
- https://github.com/LiamLombard/DS1.lv2 - Simulates a Boss DS1 distortion pedal.
- The Infamous Hip2b
- The Infamous Cheap Distortion
- Jk-drive - basic wave shaping distortion with 2x oversampling, produces both even and odd order hamonic distortion.
- https://github.com/fps/clipping.lv2 - Some clipping plugins
- https://github.com/unclechu/lv2-ladspa-bit-crusher
- https://github.com/flappix/pepperpeter - Peppery LV2 distortion plugin
- https://github.com/jatinchowdhury18/AnalogTapeModel - Physical modelling signal processing for analog tape recording.
- https://github.com/sjaehn/BAngr - Multi-dimensional dynamically distorted staggered multi-bandpass LV2 plugin
- https://github.com/hannesbraun/delta-limiter - A weird distortion and lowpass plugin
- x42 Auto Tune.lv2 - an auto-tuner based on Fons Adriaensen's zita-at1.
- Auburn Sounds Graillon - Free autotune with spectral pitch-shifting.
- https://github.com/jeremysalwen/TalentedHack - port of Tom Baran's Autotalent with added features and improved performance.
- VocProc - pitch shifting (with or without formant correction), vocoding, automatic pitch correction and harmonizing of singing voice.
- The Infamous EWham - version of a pitch shifter.
- https://github.com/moddevices/mod-pitchshifter - pitch Shifter developed by mod team.
- https://github.com/x42/repitch.lv2 - Counterbalance pitch when vari-speeding
- https://github.com/dsheeler/harmonizer.lv2 - note detection using aubio.
- https://github.com/Studio-Link/overlay-lv2 - Studio Link - Linux LV2 VoIP/AoIP Plugin.
- DebianMultimedia/Policy/LV2 - Debian Wiki - describes the packaging of LV2 core specification within the Debian GNU/Linux distribution and the policy requirements for packaged LV2 hosts, plugins and extensions.
From late 2006, nedko worked on probably the first (now defunct) LV2 host zynjacku and the (also defunct) zynadd.lv2 plugin. ll-plugins were one of the very first plugins, with its custom MIDI spec. Ardour, Carla and Ingen are the oldest hosts that are still actively developed today. The LV2core documentation was first published 2008-02-10, LV2 "version 8", aka 1.0.0. The pre-Git SVN history was not migrated.
- LWN.net: LV2 Released - Wed, 09 Jan 2008
- LV2 1.0 released, what’s next? - interview with drobilla in 2012.
- drobilla.net : New LV2 host implementation stack
- Sonoj 2019: Past, Present and Future of the JACK Audio Connection Kit - talk by Filipe Coelho (falkTX)
- Linux support [help wanted] · Issue #105 · iPlug2/iPlug2 - regarding framework support for LV2 vs VST3 vs VST2
- fontaudio - font icon toolkit with LV2 glyph
- The examples still use GTK which is not recommended these days
- No changing number of ports after starting an LV2 plugin
- No control ramp extension (yet)
- The order that hosts handle multiple plugin UIs is undefined
- User directory is $HOME/.lv2, not $HOME/.local/lib/lv2
- Turtle, though very human-readable compared to XML, still puts some developers off. JSON-LD may be a way to make things more familiar without any deep breakage of the LV2 ecosystem.
- Most plugins don't maintain a Turtle web presence for their uri., so data isn't "Linked" like the semantic web
- Differing host UX affects how plugins develop. Some routing graphs show control ports, some don't
- There exist differing conventions regarding CV normalisation (AMS vs MOD)
- Relational/semantic aspect of plugin metadata isn't leveraged (use of properties like minimum, maximum and unit)