lv2 1.16.0

lv2 1.16.0 has been released.


  • Aggressively deprecate uri-map and event extensions.
  • Add lv2_validate utility.
  • eg-midigate: Respond to "all notes off" MIDI message.
  • eg-sampler: Add waveform display to UI.
  • Add core/attributes.h utility header.
  • Upgrade build system and fix building with Python 3.7.
  • Install headers to simpler paths.
  • Simplify use of lv2specgen.
  • atom: Add lv2_atom_object_get_typed() for easy type-safe access to object properties.
  • core: Add lv2:MIDIPlugin class.
  • core: Rework port restrictions so that presets can be validated.
  • midi: Fix incorrect range of midi:chunk.
  • options: Relax range of opts:requiredOption and opts:supportedOption
  • patch: Add patch:context property.
  • patch: Add patch:accept property.
  • state: Add state:StateChanged for notification events.
  • time: Clarify time:beat origin.
  • units: Fix outdated port description in documentation.
  • units: Remove overly restrictive domain from units:unit.

lv2 1.14.0

lv2 1.14.0 has been released.


  • eg-scope: Don't feed back UI state updates.
  • eg-sampler: Fix handling of state file paths.
  • eg-sampler: Support thread-safe state restoration.
  • buf-size: Add bufsz:coarseBlockLength feature.
  • buf-size: Add bufsz:nominalBlockLength option.
  • core: Add lv2:enabled designation.
  • core: Add lv2_util.h with lv2_features_data() and lv2_features_query().
  • log: Add lv2_log_logger_set_map() for changing the URI map of an existing logger.
  • state: Add state:threadSafeRestore feature for dropout-free state restoration.
  • state: Add LV2_STATE_ERR_NO_SPACE status flag.
  • time: Define LV2_TIME_PREFIX.
  • ui: Improve documentation.
  • ui: Add missing property labels.
  • worker: Improve documentation.

lv2 1.12.0

lv2 1.12.0 has been released.


  • eg-sampler: Add gain parameter.
  • Fix merging of version histories in specification documentation.
  • eg-sampler: Support patch:Get, and request initial state from UI.
  • Simplify property restrictions by removing redundancy.
  • Improve API documentation.
  • core: Add extern C and visibility attribute to LV2_SYMBOL_EXPORT.
  • core: Relax domain of lv2:minimum lv2:maximum and lv2:default so they can be used to describe properties/parameters as well.
  • core: Add lv2:isSideChain port property.
  • parameters: Add range to parameters so hosts know how to control them.
  • patch: Define patch:Get with no subject to implicitly apply to reciever. This can be used by UIs to get an initial description of a plugin.
  • patch: Add patch:Copy method.
  • units: Fix non-existent port type in examples.
  • units: Add lv2:Parameter to domain of units:unit.

lv2 1.10.0

lv2 1.10.0 has been released.


  • lv2specgen: Display deprecated warning on classes marked owl:deprecated.
  • Upgrade to waf 1.7.16.
  • Fix -Wconversion warnings in headers.
  • atom: Deprecate Blank and Resource in favour of just Object.
  • atom: Add lv2_atom_forge_is_object_type() and lv2_atom_forge_is_blank() to ease backwards compatibility.
  • atom: Add lv2_atom_forge_key() for terser object writing.
  • atom: Add lv2_atom_sequence_clear() and lv2_atom_sequence_append_event() helper functions.
  • core: Clarify lv2_descriptor() and lv2_lib_descriptor() documentation.
  • event: Minor documentation improvements.
  • patch: Add patch:sequenceNumber for associating replies with requests.
  • ui: Add show interface so UIs can gracefully degrade to separate windows if hosts can not use their widget directly.
  • ui: Fix identifier typos in documentation.

lv2 1.8.0

lv2 1.8.0 has been released.


  • Add scope example plugin from Robin Gareus.
  • Install lv2specgen for use by other projects.
  • lv2specgen: Fix links to externally defined terms.
  • atom: Make lv2_atom_*_is_end() arguments const.
  • core: Add lv2:prototype for property inheritance.
  • log: Add missing include string.h to logger.h for memset.
  • ui: Fix LV2_UI_INVALID_PORT_INDEX identifier in documentation.

lv2 1.6.0

lv2 1.6.0 has been released.


  • Upgrade to waf 1.7.11.
  • Fix lv2specgen usage from command line.
  • Fix port indices of metronome example.
  • atom: Fix crash in forge.h when pushing atoms to a full buffer.
  • ui: Add ui:updateRate property.
  • ui: Add idle interface so native UIs and foreign toolkits can drive their event loops.

lv2 1.4.0

lv2 1.4.0 has been released.


  • Add metronome example plugin to demonstrate sample accurate tempo sync.
  • Generate book-style HTML documentation from example plugins.
  • atom: Fix lv2_atom_sequence_end().
  • atom: Remove atom:stringType in favour of owl:onDatatype so generic tools can understand and validate atom literals.
  • atom: Improve atom documentation.
  • buf-size: Fix typo in bufsz:sequenceSize label.
  • core: Add lv2:control for designating primary event-based control ports.
  • core: Reserve minor version 0 for unstable development plugins.
  • core: Add lv2:EnvelopePlugin class.
  • core: Make lv2:Parameter rdfs:subClassOf rdf:Property.
  • core: Set range of lv2:designation to lv2:Designation.
  • event: Fix incorrect return type in lv2_event_get().
  • log: Add logger convenience API.
  • options: Set the range of opts:requiredOption and opts:supportedOption to opts:Option.
  • patch: Add patch:readable and patch:writable for describing available properties.
  • patch: Make patch:Set a compact message for setting one property.
  • state: Add state:loadDefaultState feature so plugins can have their default state loaded without hard-coding default state as a special case.
  • ui: Fix incorrect linker flag in ui:makeSONameResident documentation.

lv2 1.2.0

lv2 1.2.0 has been released.


  • Move all project metadata for extensions (e.g. change log) to separate files to spare hosts from loading them during discovery.
  • Use stricter datatype definitions conformant with the XSD and OWL specifications for better validation.
  • atom: Fix lv2_atom_object_next() on 32-bit platforms.
  • atom: Fix implicit conversions in forge.h that are invalid in C++11.
  • atom: Add lv2_atom_object_body_get().
  • atom: Use consistent label style.
  • atom: Fix outdated documentation in forge.h.
  • buf-size: Initial release.
  • core: Use consistent label style.
  • dynmanifest: Use consistent label style.
  • event: Use more precise domain and range for EventPort properties.
  • event: Make event iterator gracefully handle optional ports.
  • event: Use consistent label style.
  • event: Remove asserts from event-helper.h.
  • midi: Add midi:binding and midi:channel predicates.
  • midi: Remove non-standard midi:Tick message type.
  • midi: Fix definition of SystemExclusive status byte.
  • midi: Add midi:HexByte datatype for status bytes and masks.
  • midi: Use consistent label style.
  • midi: Add C definitions for message types and standard controllers.
  • morph: Initial release.
  • options: Initial release.
  • parameters: Use consistent label style.
  • parameters: Add param:sampleRate.
  • parameters: Add parameters.h of URI defines for convenience.
  • port-groups: Use consistent label style.
  • port-props: Use consistent label style.
  • presets: Add preset banks.
  • presets: Use consistent label style.
  • state: Use consistent label style.
  • time: Use consistent label style.
  • ui: Add types for WindowsUI, CocoaUI, and Gtk3UI.
  • ui: Use consistent label style.
  • ui: Add missing LV2_SYMBOL_EXPORT declaration for lv2ui_descriptor prototype.
  • units: Use consistent label style.
  • units: Remove units:name in favour of rdfs:label.
  • urid: Fix typo in urid:unmap documentation.

lv2 1.0.0

lv2 1.0.0 has been released.


  • Initial release as a unified project. Projects can now simply depend on the pkg-config package 'lv2' for all official LV2 APIs.
  • New extensions: atom, log, parameters, patch, port-groups, port-props, resize-port, state, time, worker.
  • atom: Initial release.
  • core: Add new discovery API which allows libraries to read bundle files during discovery, makes library construction/destruction explicit, and adds extensibility to prevent future breakage.
  • core: Relax the range of lv2:index so it can be used for things other than ports.
  • core: Add lv2:CVPort.
  • core: Remove lv2:Resource, which turned out to be meaningless.
  • core: Fix LV2_SYMBOL_EXPORT and lv2_descriptor prototype for Windows.
  • core: Merge with unified LV2 package.
  • core: Add metadata concept of a designation, a channel or parameter description which can be assigned to ports for more intelligent use by hosts.
  • data-access: Merge with unified LV2 package.
  • dynmanifest: Merge with unified LV2 package.
  • event: Fix incorrect ranges of some properties.
  • event: Fix bug in lv2_event_reserve().
  • event: Merge with unified LV2 package.
  • instance-access: Merge with unified LV2 package.
  • log: Initial release.
  • midi: Add class definitions for various message types.
  • midi: Document how to serialise a MidiEvent to a string.
  • midi: Merge with unified LV2 package.
  • parameters: Initial release.
  • patch: Initial release.
  • port-groups: Initial release.
  • port-props: Initial release.
  • presets: Merge with unified LV2 package.
  • presets: Add pset:preset property for describing the preset currently applied to a plugin instance.
  • presets: Remove pset:appliesTo property, use lv2:appliesTo instead.
  • resize-port: Initial release.
  • state: Initial release.
  • time: Initial release.
  • ui: Add support for referring to ports by symbol.
  • ui: Add ui:portMap for accessing ports by symbol, allowing for UIs to be distributed separately from plugins.
  • ui: Add port protocols and a dynamic notification subscription mechanism, for more flexible communication, and audio port metering without control port kludges.
  • ui: Add ui:parent and ui:resize.
  • ui: Add touch feature to notify the host that the user has grabbed a control.
  • ui: Merge with unified LV2 package.
  • units: Merge with unified LV2 package.
  • units: Add unit for audio frames.
  • units: Add header of URI defines.
  • uri-map: Merge with unified LV2 package.
  • urid: Merge with unified LV2 package.
  • urid: Add feature struct names.
  • worker: Initial release.