LV2

URI:
http://lv2plug.in/ns/lv2core
Revision:
4 (2009-08-16)
Maintainer(s):
Steve Harris
Dave Robillard
Namespaces:
doaphttp://usefulinc.com/ns/doap#
lv2http://lv2plug.in/ns/lv2core#
owlhttp://www.w3.org/2002/07/owl#
rdfhttp://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfshttp://www.w3.org/2000/01/rdf-schema#
xsdhttp://www.w3.org/2001/XMLSchema#

About this Document

This document describes "LV2" (http://lv2plug.in/ns/lv2core), an LV2 related specification. Comments are welcome, please direct discussion to devel@lists.lv2plug.in.

See also:

Contents

  1. Description
  2. Index
  3. Documentation
  4. References

1. Description

An audio processing plugin specification

2. Index

Classes
AllpassPlugin, AmplifierPlugin, AnalyserPlugin, AudioPort, BandpassPlugin, ChorusPlugin, CombPlugin, CompressorPlugin, ControlPort, ConverterPlugin, DelayPlugin, DistortionPlugin, DynamicsPlugin, EQPlugin, ExpanderPlugin, Feature, FilterPlugin, FlangerPlugin, GatePlugin, GeneratorPlugin, HighpassPlugin, InputPort, InstrumentPlugin, LimiterPlugin, LowpassPlugin, MixerPlugin, ModulatorPlugin, MultiEQPlugin, OscillatorPlugin, OutputPort, ParaEQPlugin, PhaserPlugin, PitchPlugin, Plugin, Point, Port, PortProperty, Resource, ReverbPlugin, ScalePoint, SimulatorPlugin, Specification, SpectralPlugin, Template, UtilityPlugin, WaveshaperPlugin, basicXHTML,
Properties
default, documentation, index, maximum, minimum, name, optionalFeature, port, portProperty, requiredFeature, revision, scalePoint, symbol,
Instances
connectionOptional, enumeration, hardRTCapable, inPlaceBroken, integer, isLive, lv2core, reportsLatency, sampleRate, toggled,

3. Reference

Class lv2:AllpassPlugin

Allpass
Sub-class of
lv2:FilterPlugin

Class lv2:AmplifierPlugin

Amplifier
Sub-class of
lv2:Plugin

Class lv2:AnalyserPlugin

Analyser
Any plugin that analyses input to output some useful information.
Sub-class of
lv2:UtilityPlugin

Class lv2:AudioPort

Audio port
Ports of this type will be connected to an array of length SampleCount conforming to the 32bit IEEE-754 floating point specification.
Sub-class of
lv2:Port

Class lv2:BandpassPlugin

Bandpass
Sub-class of
lv2:FilterPlugin

Class lv2:ChorusPlugin

Chorus
Sub-class of
lv2:ModulatorPlugin

Class lv2:CombPlugin

Comb
Sub-class of
lv2:FilterPlugin

Class lv2:CompressorPlugin

Compressor
Sub-class of
lv2:DynamicsPlugin

Class lv2:ControlPort

Control port
Ports of this type will be connected to a pointer to a single value conforming to the 32bit IEEE-754 floating point specification.
Sub-class of
lv2:Port

Class lv2:ConverterPlugin

Converter
Any plugin that converts some form of input into a different form of output.
Sub-class of
lv2:UtilityPlugin

Class lv2:DelayPlugin

Delay
Plugins that intentionally delay their input signal as an effect.
Sub-class of
lv2:Plugin

Class lv2:DistortionPlugin

Distortion
Sub-class of
lv2:Plugin

Class lv2:DynamicsPlugin

Dynamics Processor
Plugins that alter the envelope or dynamic range of the processed audio.
Sub-class of
lv2:Plugin

Class lv2:EQPlugin

Equaliser
Sub-class of
lv2:FilterPlugin

Class lv2:ExpanderPlugin

Expander
Sub-class of
lv2:DynamicsPlugin

Class lv2:Feature

Feature
An additional feature which a plugin may use or require.
In range of
lv2:optionalFeature
lv2:requiredFeature

Class lv2:FilterPlugin

Filter
Sub-class of
lv2:Plugin

Class lv2:FlangerPlugin

Flanger
Sub-class of
lv2:ModulatorPlugin

Class lv2:GatePlugin

Gate
Sub-class of
lv2:DynamicsPlugin

Class lv2:GeneratorPlugin

Generator
Any plugin that generates sound internally, rather than processing its input.
Sub-class of
lv2:Plugin

Class lv2:HighpassPlugin

Highpass
Sub-class of
lv2:FilterPlugin

Class lv2:InputPort

Input port
Ports of this type will be connected to a pointer to some value, which will be read by the plugin during their run method.
Sub-class of
lv2:Port

Class lv2:InstrumentPlugin

Instrument
Any plugin that is intended to be played as a musical instrument.
Sub-class of
lv2:GeneratorPlugin

Class lv2:LimiterPlugin

Limiter
Sub-class of
lv2:DynamicsPlugin

Class lv2:LowpassPlugin

Lowpass
Sub-class of
lv2:FilterPlugin

Class lv2:MixerPlugin

Mixer
A plugin which mixes some number of inputs into some number of outputs.
Sub-class of
lv2:UtilityPlugin

Class lv2:ModulatorPlugin

Modulator
Sub-class of
lv2:Plugin

Class lv2:MultiEQPlugin

Multiband
Sub-class of
lv2:EQPlugin

Class lv2:OscillatorPlugin

Oscillator
Sub-class of
lv2:GeneratorPlugin

Class lv2:OutputPort

Output port
Ports of this type will be connected to a pointer to some value, which will be written to by the plugin during their run method.
Sub-class of
lv2:Port

Class lv2:ParaEQPlugin

Parametric
Sub-class of
lv2:EQPlugin

Class lv2:PhaserPlugin

Phaser
Sub-class of
lv2:ModulatorPlugin

Class lv2:PitchPlugin

Pitch Shifter
Sub-class of
lv2:SpectralPlugin

Class lv2:Plugin

Plugin
The class which represents an LV2 plugin. Plugins SHOULD have a doap:license property whenever possible. The doap:name property should be at most a few words in length using title capitalization, e.g. "Tape Delay Unit". Use doap:shortdesc or doap:description for more detailed descriptions.
Sub-class of
lv2:Template
Restriction on property rdf:type

A Plugin MUST have at least one rdf:type that is lv2:Plugin.

owl:hasValue
lv2:Plugin
Restriction on property doap:name

A Plugin MUST have at least one doap:name that is a string with no language tag.

owl:someValuesFrom
xsd:string

Class lv2:Point

Port value point
Used to describe interesting values in a Port's range. To be valid it requires two properties: rdfs:label and rdf:value. There are 3 specially defined Points in the LV2 specification (default, minimum, and maximum), though future extensions may define more.

Class lv2:Port

Port
The class which represents an LV2 port. In order for it to be used by a host it MUST have at least the following properties: rdf:type (with object one of lv2:Port, lv2:InputPort, lv2:OutputPort) rdf:type (more specific port class, see below) lv2:index lv2:symbol lv2:name All LV2 port descriptions MUST have a property rdf:type where the object is one of lv2:Port lv2:InputPort or lv2:OutputPort. Additionally there MUST be at least one other rdf:type property which more specifically describes type of the port (e.g. lv2:AudioPort). Hosts that do not support a specific port class MUST NOT instantiate the plugin, unless that port has the connectionOptional property set (in which case the host can simply "connect" that port to NULL). If a host is interested in plugins to insert in a certain signal path (e.g. stereo audio), it SHOULD consider all the classes of a port to determine which ports are most suitable for connection (e.g. by ignoring ports with additional classes the host does not recognize). A port has two identifiers - a (numeric) index, and a (textual) symbol. The index can be used as an identifier at run-time, but persistent references to ports (e.g. in a saved preset) MUST use the symbol. A symbol is guaranteed to refer to the same port on all plugins with a given URI. An index does NOT necessarily refer to the same port on all plugins with a given URI (i.e. the index for a port may differ between plugin binaries).
Sub-class of
lv2:Resource
Restriction on property rdf:type

A Port MUST have at least one rdf:type with object either lv2:Port, lv2:InputPort, or lv2:OutputPort.

Restriction on property rdf:type

A Port MUST have at least two rdf:type properties with objects that are some subclass of lv2:Port (one for lv2:Port, lv2:InputPort, or lv2:OutputPort, and another to describe the specific data type, e.g. lv2:AudioPort).

owl:minCardinality
2
Restriction on property lv2:index

A port MUST have a single lv2:index which is of type xsd:decimal (e.g. a literal integer in Turtle).

owl:someValuesFrom
xsd:decimal
owl:cardinality
1
Restriction on property lv2:symbol

A port MUST have a single lv2:symbol which is of type xsd:string with no language tag.

owl:someValuesFrom
xsd:string
Restriction on property lv2:name

A port MUST have at least one lv2:name which is of type xsd:string.

owl:someValuesFrom
xsd:string
In domain of
lv2:index
lv2:name
lv2:scalePoint
lv2:portProperty
In range of
lv2:port

Class lv2:PortProperty

Port property
A port propety - a useful piece of information that allows a host to make more sensible decisions (e.g. to provide a better interface).
In range of
lv2:portProperty

Class lv2:Resource

An LV2 Resource (e.g. plugin, specification, or any other LV2 related thing
In domain of
lv2:revision
lv2:documentation
lv2:symbol
lv2:optionalFeature
lv2:requiredFeature

Class lv2:ReverbPlugin

Reverb
Sub-class of
lv2:Plugin
lv2:SimulatorPlugin
lv2:DelayPlugin

Class lv2:ScalePoint

A single lv2:float Point (for control inputs)
Sub-class of
lv2:Point
In range of
lv2:scalePoint

Class lv2:SimulatorPlugin

Simulator
Plugins that aim to duplicate the effect of some environmental effect or musical equipment.
Sub-class of
lv2:Plugin

Class lv2:Specification

An LV2 specification (i.e. this specification, or an LV2 "extension"). Specification data, like plugin data, is distributed in standardized bundles so hosts may discover all present LV2 data. See http://lv2plug.in/docs for more details.
Sub-class of
lv2:Resource

Class lv2:SpectralPlugin

Spectral Processor
Sub-class of
lv2:Plugin

Class lv2:Template

An abstract plugin-like resource that may not actually be an LV2 plugin (e.g. may not actually have a plugin binary). A Template is a Resource that may have ports, and otherwise mimic the structure of a plugin. This should be subclassed by extensions that define such things.
Sub-class of
lv2:Resource
In domain of
lv2:port

Class lv2:UtilityPlugin

Utility
Includes things like mathematical functions and non-musical delays.
Sub-class of
lv2:Plugin

Class lv2:WaveshaperPlugin

Waveshaper
Sub-class of
lv2:DistortionPlugin

Class lv2:basicXHTML

A very basic subset of XHTML for use with lv2:documentation, intended to be reasonable for hosts to support for styled inline documentation. A literal with this data type is an XHTML 1.0 fragment containing only tags from the following XHTML modules: text, hypertext, list, basic tables, image, presentation. See the XHTML and XHTML Modularization specifications for details. A literal with this data type must be legal to insert as the body of a <div> tag (free text is allowed). If only basicXHTML documentation is given but a host has no facilities for handling tags, simply stripping tags and inserting newlines after appropriate tags will yield a somewhat readable plain text version of the documentation.
rdfs:seeAlso
http://www.w3.org/TR/xhtml1/
http://www.w3.org/TR/xhtml-modularization/

Property lv2:default

Default value
The default value that the host SHOULD set this port to when there is no other information available.
Sub-property of
lv2:scalePoint
rdfs:subPropertyOf
lv2:scalePoint

Property lv2:documentation

documentation
Relates a Plugin to some text/audio/video documentation either online or included with the plugin package. The value of this property may be either a URL, or a literal of any type. Literal documentation SHOULD be either plain text, or lv2:basicXHTML. More advanced documentation should be linked to instead.
Domain
lv2:Resource

Property lv2:index

index
Specifies the index of the port, passed as an argument to the connect port function. The index uniqely identifies the port on an instance of the plugin.
Domain
lv2:Port
Range
xsd:nonNegativeInteger

Property lv2:maximum

Maximum value
A hint to the host for the maximum useful value that the port will use. This is a "soft" limit - the plugin is required to gracefully accept all values in the range of lv2:float.
Sub-property of
lv2:scalePoint
rdfs:subPropertyOf
lv2:scalePoint

Property lv2:minimum

Minimum value
A hint to the host for the minimum useful value that the port will use. This is a "soft" limit - the plugin is required to gracefully accept all values in the range of lv2:float.
Sub-property of
lv2:scalePoint
rdfs:subPropertyOf
lv2:scalePoint

Property lv2:name

name
A display name for labeling the Port in a user interface. This property is required for Ports, but MUST NOT be used by the host for port identification. The plugin author may change the values of this property without changing the Plugin URI.
Domain
lv2:Port

Property lv2:optionalFeature

Optional feature
Signifies that a plugin or other resource supports a certain features. If the host supports this feature, it MUST pass its URI and any additional data to the plugin in the instantiate() function. The plugin MUST NOT fail to instantiate if an optional feature is not supported by the host. This predicate may be used by extensions for any type of subject.
Domain
lv2:Resource
Range
lv2:Feature

Property lv2:port

port
Relates a Template or Plugin to the Ports it contains
Domain
lv2:Template
Range
lv2:Port

Property lv2:portProperty

Port property
Relates Ports to PortProperties. The PortProperty may be ignored without catastrophic effects, though it may be useful e.g. for providing a sensible interface for the port.
Domain
lv2:Port
Range
lv2:PortProperty

Property lv2:requiredFeature

Required feature
Signifies that a plugin or other resource requires a certain feature. If the host supports this feature, it MUST pass its URI and any additional data to the plugin in the instantiate() function. The plugin MUST fail to instantiate if a required feature is not present; hosts SHOULD always check this before attempting to instantiate a plugin (i.e. discovery by attempting to instantiate is strongly discouraged). This predicate may be used by extensions for any type of subject.
Domain
lv2:Resource
Range
lv2:Feature

Property lv2:revision

revision
The revision of an LV2 Resource. If a plugin's port indices change, the revision of the plugin MUST be increased. Note that if port symbols change or are removed, the plugin URI MUST be changed, the revision acts as a 'minor version' to distinguish otherwise compatible revisions of a plugin. A plugin that has changed indices MUST have a lv2:revision property, if a plugin has no revision property it is assumed to be 0. Anything that refers to a specific revision of a plugin (e.g. a serialisation that depends on specific port indices) MUST refer to the plugin by URI along with the revision. This property may be used for other objects, in this case it should be used in a similar way to represent a 'minor version', and NOT as a major version to distinguish incompatible objects (use the URI for that).
Domain
lv2:Resource
Range
xsd:nonNegativeInteger

Property lv2:scalePoint

Scale point
Relates a Port to its ScalePoints.
Domain
lv2:Port
Range
lv2:ScalePoint

Property lv2:symbol

symbol
A short name used as a machine and human readable identifier. The first character must be one of _, a-z or A-Z and subsequenct characters can be from _, a-z, A-Z and 0-9. A language tag MUST NOT be used on this property. The symbol uniquely identifies the port on a plugin with a given URI (i.e. the plugin author MUST change the plugin URI if a port symbol is changed or removed).
Domain
lv2:Resource

Instance lv2:connectionOptional

Optionally connected port
Indicates that this port does not have to be connected to valid data by the host. If it is to be disconnected then the port MUST set to NULL with a call to the connectPort method.

Instance lv2:enumeration

Enumeration
Indicates that a port's only reasonable values are the scale points defined for that port. Though a host SHOULD NOT allow a user to set the value of such a port to anything other than a scale point. A plugin MUST operate reasonably even if such a port has an input that is not a scale point, preferably by simply choosing the largest enumeration value less than or equal to the actual input value (i.e. round the input value down).

Instance lv2:hardRTCapable

Hard realtime capable
Indicates that the plugin is capable of running not only in a conventional host but also in a "hard real-time" environment. To qualify for this the plugin MUST satisfy all of the following: (1) The plugin must not use malloc(), free() or other heap memory management within its Audio class functions. All new memory used in Audio class functions must be managed via the stack. These restrictions only apply to the Audio class functions. (2) The plugin will not attempt to make use of any library functions in its Audio class functions, with the exceptions of functions in the ANSI standard C and C maths libraries, which the host is expected to provide. (3) The plugin will not access files, devices, pipes, sockets, IPC or any other mechanism that might result in process or thread blocking within its Audio class functions. (4) The plugin will take an amount of time to execute a run() call approximately of form (A+B*SampleCount) where A and B depend on the machine and host in use. This amount of time may not depend on input signals or plugin state. The host is left the responsibility to perform timings to estimate upper bounds for A and B. The plugin will also take an approximately constant amount of time to execute a connect_port() call.

Instance lv2:inPlaceBroken

in-place broken
Indicates that the plugin may cease to work correctly if the host elects to use the same data location for both audio input and audio output. Plugins that will fail to work correctly if ANY input buffer for a port of the class lv2:AudioPort is set to the same location as ANY output buffer for a port of the same class (with connect_port()) MUST require this Feature. Doing so should be avoided as it makes it impossible for hosts to use the plugin to process audio "in-place".

Instance lv2:integer

Integer
Indicates that a port's reasonable values are integers (eg. a user interface would likely wish to provide a stepped control allowing only integer input). A plugin MUST operate reasonably even if such a port has a non-integer input.

Instance lv2:isLive

Has a live (realtime) dependency
Indicates that the plugin has a real-time dependency (e.g. queues data from a socket) and so its output must not be cached or subject to significant latency, and calls to the run method should be done in rapid succession. This property is not related to "hard real-time" execution requirements (see lv2:hardRTCapable).

Instance lv2core

Instance lv2:reportsLatency

Latency reporting port
Indicates that the port is used to express the processing latency incurred by the plugin, expressed in samples. The latency may be affected by the current sample rate, plugin settings, or other factors, and may be changed by the plugin at any time. Where the latency is frequency dependent the plugin may choose any appropriate value. If a plugin introduces latency it MUST provide EXACTLY ONE port with this property set which informs the host of the "correct" latency. In "fuzzy" cases the value output should be the most reasonable based on user expectation of input/output alignment (eg. musical delay/echo plugins should not report their delay as latency, as it is an intentional effect).

Instance lv2:sampleRate

Sample rate
Indicates that any bounds specified should be interpreted as multiples of the sample rate. For instance, a frequency range from 0Hz to the Nyquist frequency (half the sample rate) could be requested by this property in conjunction with lv2:minimum 0.0 and lv2:maximum 0.5. Hosts that support bounds at all MUST support this property.

Instance lv2:toggled

Toggled
Indicates that the data item should be considered a Boolean toggle. Data less than or equal to zero should be considered "off" or "false", and data above zero should be considered "on" or "true".

4. References

IETF RFC 2119
RFC 2119: Key words for use in RFCs to Indicate Requirement Levels . Internet Engineering Task Force, 1997.


Automatically generated from lv2.ttl by lv2specgen at 2009-11-12 01:12 UTC

This document is content-negotiated. If you request it with Accept: application/x-turtle you will get the description in Turtle. Also supported: application/rdf+xml, application/json, text/plain