@COMMENT@

Reference

ClassesPropertiesInstances

Classes

AllpassPlugin

Class
LabelAllpass Plugin
Subclass ofFilterPlugin

A filter that changes the phase relationship between frequency components.

AmplifierPlugin

Class
LabelAmplifier Plugin
Subclass ofDynamicsPlugin

A plugin that primarily changes the volume of its input.

AnalyserPlugin

Class
LabelAnalyser Plugin
Subclass ofUtilityPlugin

A plugin that analyses its input and emits some useful information.

AudioPort

Class
LabelAudio Port
Subclass ofPort

A port connected to an array of float audio samples.

Ports of this type are connected to a buffer of float audio samples, which the host guarantees have sample_count elements in any call to LV2_Descriptor::run().

Audio samples are normalized between -1.0 and 1.0, though there is no requirement for samples to be strictly within this range.

BandpassPlugin

Class
LabelBandpass Filter Plugin
Subclass ofFilterPlugin

A filter that attenuates frequencies outside of some band.

CVPort

Class
LabelCV Port
Subclass ofPort

A port connected to an array of float control values.

Ports of this type have the same buffer format as an AudioPort, except the buffer represents audio-rate control data rather than audio. Like a ControlPort, a CV port SHOULD have properties describing its value, in particular minimum, maximum, and default.

Hosts may present CV ports to users as controls in the same way as control ports. Conceptually, aside from the buffer format, a CV port is the same as a control port, so hosts can use all the same properties and expectations.

In particular, this port type does not imply any range, unit, or meaning for its values. However, if there is no inherent unit to the values, for example if the port is used to modulate some other value, then plugins SHOULD use a normalized range, either from -1.0 to 1.0, or from 0.0 to 1.0.

It is generally safe to connect an audio output to a CV input, but not vice-versa. Hosts must take care to prevent data from a CVPort port from being used as audio.

Channel

Class
LabelChannel
Subclass ofDesignation

An individual channel, such as left or right.

A specific channel, for example the left channel of a stereo stream. A channel may be audio, or another type such as a MIDI control stream.

ChorusPlugin

Class
LabelChorus Plugin
Subclass ofModulatorPlugin

An effect that mixes significantly delayed copies of its input.

CombPlugin

Class
LabelComb FilterPlugin
Subclass ofFilterPlugin

A filter that adds a delayed version of its input to itself.

CompressorPlugin

Class
LabelCompressor Plugin
Subclass ofDynamicsPlugin

A plugin that reduces the dynamic range of its input.

ConstantPlugin

Class
LabelConstant Plugin
Subclass ofGeneratorPlugin

A plugin that emits constant values.

ControlPort

Class
LabelControl Port
Subclass ofPort

A port connected to a single `float`.

ConverterPlugin

Class
LabelConverter Plugin
Subclass ofUtilityPlugin

A plugin that converts its input into a different form.

DelayPlugin

Class
LabelDelay Plugin
Subclass ofPlugin
Superclass ofReverbPlugin

An effect that intentionally delays its input as an effect.

Designation

Class
LabelDesignation
Subclass ofrdf:Property
Superclass ofChannel
Parameter

A designation which defines the meaning of some data.

A designation is metadata that describes the meaning or role of something. By assigning a designation to a port using designation, the port's content becomes meaningful and can be used more intelligently by the host.

DistortionPlugin

Class
LabelDistortion Plugin
Subclass ofPlugin
Superclass ofWaveshaperPlugin

A plugin that adds distortion to its input.

DynamicsPlugin

Class
LabelDynamics Plugin
Subclass ofPlugin
Superclass ofAmplifierPlugin
CompressorPlugin
EnvelopePlugin
ExpanderPlugin
GatePlugin
LimiterPlugin

A plugin that alters the envelope or dynamic range of its input.

EQPlugin

Class
LabelEqualiser Plugin
Subclass ofFilterPlugin
Superclass ofMultiEQPlugin
ParaEQPlugin

A plugin that adjusts the balance between frequency components.

EnvelopePlugin

Class
LabelEnvelope Plugin
Subclass ofDynamicsPlugin

A plugin that applies an envelope to its input.

ExpanderPlugin

Class
LabelExpander Plugin
Subclass ofDynamicsPlugin

A plugin that expands the dynamic range of its input.

ExtensionData

Class
LabelExtension Data
In range ofextensionData

Additional data defined by an extension.

This is additional data that a plugin may return from LV2_Descriptor::extension_data(). This is generally used to add APIs to extend that defined by LV2_Descriptor.

Feature

Class
LabelFeature
In range ofoptionalFeature
requiredFeature

An additional feature which may be used or required.

FilterPlugin

Class
LabelFilter Plugin
Subclass ofPlugin
Superclass ofAllpassPlugin
BandpassPlugin
CombPlugin
EQPlugin
HighpassPlugin
LowpassPlugin

An effect that manipulates the frequency spectrum of its input.

FlangerPlugin

Class
LabelFlanger Plugin
Subclass ofModulatorPlugin

An effect that mixes slightly delayed copies of its input.

FunctionPlugin

Class
LabelFunction Plugin
Subclass ofUtilityPlugin

A plugin whose output is a mathmatical function of its input.

GatePlugin

Class
LabelGate Plugin
Subclass ofDynamicsPlugin

A plugin that attenuates signals below some threshold.

GeneratorPlugin

Class
LabelGenerator Plugin
Subclass ofPlugin
Superclass ofConstantPlugin
InstrumentPlugin
OscillatorPlugin

A plugin that generates new sound internally.

HighpassPlugin

Class
LabelHighpass Filter Plugin
Subclass ofFilterPlugin

A filter that attenuates frequencies below some cutoff.

InputPort

Class
LabelInput Port
Subclass ofPort

A port connected to constant data which is read during `run()`.

InstrumentPlugin

Class
LabelInstrument Plugin
Subclass ofGeneratorPlugin

A plugin intended to be played as a musical instrument.

LimiterPlugin

Class
LabelLimiter Plugin
Subclass ofDynamicsPlugin

A plugin that limits its input to some maximum level.

LowpassPlugin

Class
LabelLowpass Filter Plugin
Subclass ofFilterPlugin

A filter that attenuates frequencies above some cutoff.

MIDIPlugin

Class
LabelMIDI Plugin
Subclass ofPlugin

A plugin that primarily processes MIDI messages.

Markdown

Class
LabelMarkdown
owl:onDatatype xsd:string

A string in Markdown syntax.

This datatype is typically used for documentation in Markdown syntax.

Generally, documentation with this datatype should stay as close to readable plain text as possible, but may use core Markdown syntax for nicer presentation. Documentation can assume that basic extensions like codehilite and tables are available.

MixerPlugin

Class
LabelMixer Plugin
Subclass ofUtilityPlugin

A plugin that mixes some number of inputs into some number of outputs.

ModulatorPlugin

Class
LabelModulator Plugin
Subclass ofPlugin
Superclass ofChorusPlugin
FlangerPlugin
PhaserPlugin

An effect that modulats its input as an effect.

MultiEQPlugin

Class
LabelMultiband EQ Plugin
Subclass ofEQPlugin

A plugin that adjusts the balance between a fixed set of frequency components.

OscillatorPlugin

Class
LabelOscillator Plugin
Subclass ofGeneratorPlugin

A plugin that generates output with an oscillator.

OutputPort

Class
LabelOutput Port
Subclass ofPort

A port connected to data which is written during `run()`.

ParaEQPlugin

Class
LabelParametric EQ Plugin
Subclass ofEQPlugin

A plugin that adjusts the balance between configurable frequency components.

Parameter

Class
LabelParameter
Subclass ofDesignation
rdf:Property

A property that is a plugin parameter.

A parameter is a designation for a control.

A parameter defines the meaning of a control, not the method of conveying its value. For example, a parameter could be controlled via a ControlPort, messages, or both.

A ControlPort can be associated with a parameter using designation.

PhaserPlugin

Class
LabelPhaser Plugin
Subclass ofModulatorPlugin

An effect that periodically sweeps a filter over its input.

PitchPlugin

Class
LabelPitch Shifter Plugin
Subclass ofSpectralPlugin

A plugin that shifts the pitch of its input.

Plugin

Class
LabelPlugin
Subclass ofPluginBase
Superclass ofDelayPlugin
DistortionPlugin
DynamicsPlugin
FilterPlugin
GeneratorPlugin
MIDIPlugin
ModulatorPlugin
ReverbPlugin
SimulatorPlugin
SpatialPlugin
SpectralPlugin
UtilityPlugin
In range ofappliesTo

An LV2 plugin.

To be discovered by hosts, plugins MUST explicitly have an rdf:type of Plugin in their bundle's manifest, for example:

<http://example.org/my-plugin> a lv2:Plugin .

Plugins should have a doap:name property that is at most a few words in length using title capitalization, for example Tape Delay Unit.

Restriction on doap:name
owl:someValuesFrom rdf:PlainLiteral
A plugin MUST have at least one untranslated doap:name.
Restriction on port
owl:allValuesFrom Port
All ports on a plugin MUST be fully specified lv2:Port instances.

PluginBase

Class
LabelPlugin Base
Superclass ofPlugin
In domain ofport

Base class for a plugin-like resource.

An abstract plugin-like resource that may not actually be an LV2 plugin, for example that may not have a binary. This is useful for describing things that share common structure with a plugin, but are not themselves an actul plugin, such as presets.

Point

Class
LabelPoint
Superclass ofScalePoint

An interesting point in a value range.

  • A Point MUST have at least one rdfs:label which is a string.

  • A Point MUST have exactly one rdf:value with a type that is compatible with the type of the corresponding Port.

Port

Class
LabelPort
Subclass ofPortBase
Superclass ofAudioPort
CVPort
ControlPort
InputPort
OutputPort
In domain ofportProperty

An LV2 plugin port.

All LV2 port descriptions MUST have a rdf:type that is one of Port, InputPort or OutputPort. Additionally, there MUST be at least one other rdf:type which more precisely describes type of the port, for example AudioPort.

Hosts that do not support a specific port class MUST NOT instantiate the plugin, unless that port has the connectionOptional property set.

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 (for example in presets or save files) MUST use the symbol. Only the symbol is guaranteed to refer to the same port on all plugins with a given URI, that is the index for a port may differ between plugin binaries.

Restriction on name
owl:minCardinality 1
A port MUST have at least one lv2:name.

PortBase

Class
LabelPort Base
Superclass ofPort
In range ofport

Base class for a port-like resource.

Similar to PluginBase, this is an abstract port-like resource that may not be a fully specified LV2 port. For example, this is used for preset "ports" which do not specify an index.

Restriction on symbol
owl:cardinality 1
A port MUST have exactly one lv2:symbol.

PortProperty

Class
LabelPort Property
In range ofportProperty

A particular property that a port has.

ReverbPlugin

Class
LabelReverb Plugin
Subclass ofDelayPlugin
Plugin
SimulatorPlugin

An effect that adds reverberation to its input.

ScalePoint

Class
LabelScale Point
Subclass ofPoint
In range ofscalePoint

A single `float` Point for control inputs.

SimulatorPlugin

Class
LabelSimulator Plugin
Subclass ofPlugin
Superclass ofReverbPlugin

A plugin that aims to emulate some environmental effect or musical equipment.

SpatialPlugin

Class
LabelSpatial Plugin
Subclass ofPlugin

A plugin that manipulates the position of audio in space.

Specification

Class
LabelSpecification
Subclass ofdoap:Project

An LV2 specifiation.

An LV2 specification typically contains a vocabulary description, C headers to define an API, and any other resources that may be useful. Specifications, like plugins, are distributed and installed as bundles so that hosts may discover them.

SpectralPlugin

Class
LabelSpectral Plugin
Subclass ofPlugin
Superclass ofPitchPlugin

A plugin that alters the spectral properties of audio.

Symbol

Class
LabelSymbol
In range ofsymbol
owl:onDatatype xsd:string

A short restricted name used as a strong identifier.

The first character of a symbol must be one of _, a-z or A-Z, and subsequent characters may additionally be 0-9. This is, among other things, a valid C identifier, and generally compatible in most contexts which have restrictions on string identifiers, such as file paths.

UtilityPlugin

Class
LabelUtility Plugin
Subclass ofPlugin
Superclass ofAnalyserPlugin
ConverterPlugin
FunctionPlugin
MixerPlugin

A utility plugin that is not a typical audio effect or generator.

WaveshaperPlugin

Class
LabelWaveshaper Plugin
Subclass ofDistortionPlugin

An effect that alters the shape of input waveforms.

Properties

appliesTo

Property
Labelapplies to
RangePlugin
TypeObject Property

The plugin this resource is related to.

This is primarily intended for discovery purposes: bundles that describe resources that work with particular plugins (like presets or user interfaces) SHOULD specify this in their manifest.ttl so the host can associate them with the correct plugin. For example:

<thing>
    a             ext:Thing ;
    lv2:appliesTo <plugin> ;
    rdfs:seeAlso  <thing.ttl> .

Using this pattern is preferable for large amounts of data, since the host may choose whether/when to load the data.

binary

Property
Labelbinary
Rangeowl:Thing
TypeObject Property

The binary of this resource.

The value of this property must be the URI of a shared library object, typically in the same bundle as the data file which contains this property. The actual type of the library is platform specific.

This is a required property of a Plugin which MUST be included in the bundle's manifest.ttl file. The binary of a Plugin is the shared object containing the lv2_descriptor() or lv2_lib_descriptor() function. This probably may also be used similarly by extensions to relate other resources to their implementations (it is not implied that a binary on an arbitrary resource is an LV2 plugin library).

default

Property
Labeldefault
TypeDatatype Property

The default value for this control.

The host SHOULD set the port to this value initially, and in any situation where the port value should be cleared or reset.

designation

Property
Labeldesignation
Rangerdf:Property
TypeObject Property

The designation that defines the meaning of this input or output.

This property is used to give a port's contents a well-defined meaning. For example, if a port has the designation eg:gain, then the value of that port represents the eg:gain of the plugin instance.

Ports should be given designations whenever possible, particularly if a suitable designation is already defined. This allows the host to act more intelligently and provide a more effective user interface. For example, if the plugin has a BPM parameter, the host may automatically set that parameter to the current tempo.

documentation

Property
Labeldocumentation
Rangerdfs:Literal
TypeAnnotation Property
See also http://www.w3.org/TR/xhtml-basic/

Extended documentation.

Relates a Resource to extended documentation.

LV2 specifications are documented using this property with an Markdown datatype.

If the value has no explicit datatype, it is assumed to be a valid XHTML Basic 1.1 fragment suitable for use as the content of the <body> element of a page.

XHTML Basic is a W3C Recommendation which defines a simplified subset of XHTML intended to be reasonable to implement with limited resources, for exampe on embedded devices. See XHTML Basic, Section 3 for a list of valid tags.

enabled

Property
Labelenabled
Rangexsd:int
TypeDatatype Property

Whether processing is currently enabled (not bypassed).

If this value is greater than zero, the plugin processes normally. If this value is zero, the plugin is expected to bypass all signals unmodified. The plugin must provide a click-free transition between the enabled and disabled (bypassed) states.

Values less than zero are reserved for future use (such as click-free insertion/removal of latent plugins), and should be treated like zero (bypassed) by current implementations.

extensionData

Property
Labelextension data
RangeExtensionData
TypeObject Property

Extension data provided by a plugin or other binary.

If a plugin has a value for this property, it must be a URI that defines the extension data. The plugin should return the appropriate data when LV2_Descriptor::extension_data() is called with that URI as a parameter.

freeWheeling

Property
Labelfree-wheeling
Rangexsd:boolean
TypeDatatype Property

Whether processing is currently free-wheeling.

If true, this means that all processing is happening as quickly as possible, not in real-time. When free-wheeling there is no relationship between the passage of real wall-clock time and the passage of time in the data being processed.

index

Property
Labelindex
Rangexsd:unsignedInt
TypeDatatype Property

A non-negative zero-based 32-bit index.

latency

Property
Labellatency
Rangexsd:nonNegativeInteger
TypeDatatype Property

The latency introduced, in frames.

maximum

Property
Labelmaximum
TypeDatatype Property

The maximum value for this control.

This is a soft limit: the plugin is required to gracefully accept all values in the range of a port's data type.

microVersion

Property
Labelmicro version
Rangexsd:nonNegativeInteger
TypeDatatype Property

The micro version of this resource.

Releases of plugins and extensions MUST be explicitly versioned. Correct version numbers MUST always be maintained for any versioned resource that is published. For example, after a release, if a change is made in the development version in source control, the micro version MUST be incremented (to an odd number) to distinguish this modified version from the previous release.

This property describes half of a resource version. For detailed documentation on LV2 resource versioning, see minorVersion.

minimum

Property
Labelminimum
TypeDatatype Property

The minimum value for this control.

This is a soft limit: the plugin is required to gracefully accept all values in the range of a port's data type.

minorVersion

Property
Labelminor version
Rangexsd:nonNegativeInteger
TypeDatatype Property

The minor version of this resource.

This, along with microVersion, is used to distinguish between different versions of the same resource, for example to load only the bundle with the most recent version of a plugin. An LV2 version has a minor and micro number with the usual semantics:

  • The minor version MUST be incremented when backwards (but not forwards) compatible additions are made, for example the addition of a port to a plugin.

  • The micro version is incremented for changes which do not affect compatibility at all, for example bug fixes or documentation updates.

Note that there is deliberately no major version: all 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.

Plugins and extensions MUST adhere to at least the following rules:

  • All versions of a plugin with a given URI MUST have the same set of mandatory (not connectionOptional) ports with respect to symbol and rdf:type. In other words, every port on a particular version is guaranteed to exist on a future version with same symbol and at least those rdf:types.

  • New ports MAY be added without changing the plugin URI if and only if they are connectionOptional and the minor version is incremented.

  • The minor version MUST be incremented if the index of any port (identified by its symbol) is changed.

  • All versions of a specification MUST be compatible in the sense that an implementation of the new version can interoperate with an implementation of any previous version.

Anything that depends on a specific version of a plugin (including referencing ports by index) MUST refer to the plugin by both URI and version. However, implementations should be tolerant where possible.

When hosts discover several installed versions of a resource, they SHOULD warn the user and load only the most recent version.

An odd minor or micro version, or minor version zero, indicates that the resource is a development version. Hosts and tools SHOULD clearly indicate this wherever appropriate. Minor version zero is a special case for pre-release development of plugins, or experimental plugins that are not intended for stable use at all. Hosts SHOULD NOT expect such a plugin to remain compatible with any future version. Where feasible, hosts SHOULD NOT expose such plugins to users by default, but may provide an option to display them.

name

Property
Labelname
Rangexsd:string
TypeDatatype Property

A display name for labeling in a user interface.

Unlike symbol, this is unrestricted, may be translated, and is not relevant for compatibility. The name is not necessarily unique and MUST NOT be used as an identifier.

optionalFeature

Property
Labeloptional feature
RangeFeature
TypeObject Property

An optional feature that is supported if available.

To support this feature, the host MUST pass its URI and any additional data to the plugin in LV2_Descriptor::instantiate().

The plugin MUST NOT fail to instantiate if an optional feature is not supported by the host.

port

Property
Labelport
DomainPluginBase
RangePortBase
TypeObject Property

A port (input or output) on this plugin.

portProperty

Property
Labelport property
DomainPort
RangePortProperty
TypeObject Property

A property of this port hosts may find useful.

States that a port has a particular PortProperty. This may be ignored without catastrophic effects, though it may be useful, for example to provide a sensible user interface for the port.

project

Property
Labelproject
Rangedoap:Project
TypeObject Property

The project this is a part of.

This property provides a way to group plugins and/or related resources. A project may have useful metadata common to all plugins (such as homepage, author, version history) which would be wasteful to list separately for each plugin.

Grouping via projects also allows users to find plugins in hosts by project, which is often how they are remembered. For this reason, a project that contains plugins SHOULD always have a doap:name. It is also a good idea for each plugin and the project itself to have an symbol property, which allows nice quasi-global identifiers for plugins, for example myproj.superamp which can be useful for display or fast user entry.

prototype

Property
Labelprototype
TypeObject Property

The prototype to inherit properties from.

This property can be used to include common properties in several descriptions, serving as a sort of template mechanism. If a plugin has a prototype, then the host must load all the properties for the prototype as if they were properties of the plugin. That is, if :plug prototype :prot, then for each triple :prot p o, the triple :plug p o should be loaded.

This facility is useful for distributing data-only plugins that rely on a common binary, for example those where the internal state is loaded from some other file. Such plugins can refer to a prototype in a template LV2 bundle which is installed by the corresponding software.

requiredFeature

Property
Labelrequired feature
RangeFeature
TypeObject Property

A required feature that must be available to run.

To support this feature, the host MUST pass its URI and any additional data to the plugin in LV2_Descriptor::instantiate().

The host MUST check this property before attempting to instantiate a plugin, and not attempt to instantiate plugins which require features it does not support. The plugin MUST fail to instantiate if a required feature is not supported by the host. Note that these rules are intentionally redundant for resilience: neither host nor plugin should assume that the other does not violate them.

scalePoint

Property
Labelscale point
RangeScalePoint
TypeObject Property

A scale point of a port or parameter.

shortName

Property
Labelshort name
Rangexsd:string
TypeDatatype Property

A short display name for labeling in a user interface.

This is the same as name, with the additional requirement that the value is shorter than 16 characters.

symbol

Property
Labelsymbol
RangeSymbol
rdf:PlainLiteral
TypeDatatype Property

The symbol that identifies this resource in the context of its parent.

The value of this property MUST be a valid Symbol, and MUST NOT have a language tag.

A symbol is a unique identifier with respect to the parent, for example a port's symbol is a unique identifiers with respect to its plugin. The plugin author MUST change the plugin URI if any port symbol is changed or removed.

Instances

connectionOptional

Instance
Labelconnection optional
TypePortProperty

The property that this port may be connected to NULL.

This property means that the port does not have to be connected to valid data by the host. To leave a port unconnected, the host MUST explicitly connect the port to NULL.

control

Instance
Labelcontrol
TypeChannel

The primary control channel.

This should be used as the designation of ports that are used to send commands and receive responses. Typically this will be an event port that supports some protocol, for example MIDI or LV2 Atoms.

enumeration

Instance
Labelenumeration
TypePortProperty

Control port scale points represent all useful values.

Indicates that all the rasonable values for a port are defined by scalePoint properties. For such ports, a user interface should provide a selector that allows the user to choose any of the scale point values by name. It is recommended to show the value as well if possible.

Note that this is only a hint, and that the plugin MUST operate reasonably even if such a port has a value that does not correspond to a scale point.

hardRTCapable

Instance
Labelhard real-time capable
TypeFeature

Plugin is capable of running in a hard real-time environment.

This feature indicates that the plugin is capable of running in a hard real-time environment. This should be the case for most audio processors, so most plugins are expected to have this feature.

To support this feature, plugins MUST adhere to the following in all of their audio class functions (LV2_Descriptor::run() and LV2_Descriptor::connect_port()):

  • There is no use of malloc(), free() or any other heap memory management functions.

  • There is no use of any library functions which do not adhere to these rules. The plugin may assume that the standard C math library functions are safe.

  • There is no access to files, devices, pipes, sockets, system calls, or any other mechanism that might result in the process or thread blocking.

  • The maximum amount of time for a run() call is bounded by some expression of the form A + B * sample_count, where A and B are platform specific constants. Note that this bound does not depend on input signals or plugin state.

inPlaceBroken

Instance
Labelin-place broken
TypeFeature

Plugin requires separate locations for input and output.

This feature indicates that the plugin may not work correctly if the host elects to use the same data location for both input and output. Plugins that will fail to work correctly if ANY input port is connected to the same location as ANY output port MUST require this feature. Doing so should be avoided whenever possible since it prevents hosts from running the plugin on data in-place.

integer

Instance
Labelinteger
TypePortProperty

Control port values are treated as integers.

Indicates that all the reasonable values for a port are integers. For such ports, a user interface should provide a stepped control that only allows choosing integer values.

Note that this is only a hint, and that the plugin MUST operate reasonably even if such a port has a non-integer value.

isLive

Instance
Labelis live
TypeFeature

Plugin has a real-time dependency.

This feature is for plugins that have time-sensitive internals, for example communicating in real time over a socket. It indicates to the host that its input and output must not be cached or subject to significant latency, and that calls to LV2_Descriptor::run() should be made at a rate that roughly corresponds to wall clock time (according to the sample_count parameter).

Note that this feature is not related to hard real-time execution requirements (see hardRTCapable).

isSideChain

Instance
Labelis side-chain
TypePortProperty

Signal for port should not be considered a main input or output.

Indicates that a port is a sidechain, which affects the output somehow but should not be considered a part of the main signal chain. Sidechain ports SHOULD be connectionOptional, and may be ignored by hosts.

reportsLatency

Instance
Labelreports latency
TypePortProperty
owl:deprecated true
Deprecated

Control port value is the plugin latency in frames.

This property 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. In fuzzy cases the value should be the most reasonable one based on user expectation of input/output alignment. For example, musical delay plugins should not report their delay as latency, since it is an intentional effect that the host should not compensate for.

This property is deprecated, use a designation of latency instead, following the same rules as above:

<http://example.org/plugin>
    lv2:port [
        a lv2:OutputPort , lv2:ControlPort ;
        lv2:designation lv2:latency ;
        lv2:symbol "latency" ;
    ]

sampleRate

Instance
Labelsample rate
TypePortProperty

Control port bounds are interpreted as multiples of the sample rate.

Indicates that any specified bounds should be interpreted as multiples of the sample rate. For example, a frequency range from 0 Hz to the Nyquist frequency (half the sample rate) can be specified by using this property with minimum 0.0 and maximum 0.5. Hosts that support bounds at all MUST support this property.

toggled

Instance
Labeltoggled
TypePortProperty

Control port value is considered a boolean toggle.

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.

@COMMENT@

Reference

Instances

Instances

map

Instance
Labelmap
Typelv2:Feature

A feature to map URI strings to integer URIDs.

To support this feature, the host must pass an LV2_Feature to LV2_Descriptor::instantiate() with URI LV2_URID__map and data pointed to an instance of LV2_URID_Map.

unmap

Instance
Labelunmap
Typelv2:Feature

A feature to unmap URIDs back to strings.

To support this feature, the host must pass an LV2_Feature to LV2_Descriptor::instantiate() with URI LV2_URID__unmap and data pointed to an instance of LV2_URID_Unmap.

@COMMENT@

Reference

ClassesPropertiesInstances

Classes

Conversion

Class
LabelConversion
In domain offactor
to
In range ofconversion
prefixConversion

A conversion from one unit to another.

Restriction on to
owl:cardinality 1
A conversion MUST have exactly 1 units:to property.

Unit

Class
LabelUnit
In domain ofconversion
prefixConversion
render
symbol
In range ofto
unit

A unit for a control value.

Properties

conversion

Property
Labelconversion
DomainUnit
RangeConversion
TypeObject Property

A conversion from this unit to another.

factor

Property
Labelconversion factor
DomainConversion
TypeDatatype Property

The factor to multiply the source value by in order to convert to the target unit.

prefixConversion

Property
Labelprefix conversion
Sub-property ofconversion
DomainUnit
RangeConversion
TypeObject Property

A conversion from this unit to another with the same base but a different prefix.

render

Property
Labelunit format string
DomainUnit
Rangexsd:string
TypeDatatype Property

A printf format string for rendering a value (e.g., "%f dB").

symbol

Property
Labelunit symbol
DomainUnit
Rangexsd:string
TypeDatatype Property

The abbreviated symbol for this unit (e.g., "dB").

to

Property
Labelconversion target
DomainConversion
RangeUnit
TypeObject Property

The target unit this conversion converts to.

unit

Property
Labelunit
RangeUnit
TypeObject Property

The unit used by the value of a port or parameter.

Instances

bar

Instance
Labelbars
TypeUnit
render %f bars
symbol bars

Musical bars or measures.

beat

Instance
Labelbeats
TypeUnit
render %f beats
symbol beats

Musical beats.

bpm

Instance
Labelbeats per minute
TypeUnit
prefixConversion
factor 0.0166666666
to hz
render %f BPM
symbol BPM

Beats Per Minute (BPM), the standard unit for musical tempo.

cent

Instance
Labelcents
TypeUnit
conversion
factor 0.01
to semitone12TET
render %f ct
symbol ct

Cents (hundredths of semitones).

cm

Instance
Labelcentimetres
TypeUnit
conversion
factor 0.3937
to inch
prefixConversion
factor 0.01
to m
prefixConversion
factor 10
to mm
prefixConversion
factor 0.00001
to km
render %f cm
symbol cm

Centimetres (hundredths of metres).

coef

Instance
Labelcoefficient
TypeUnit
conversion
factor 100
to pc
render * %f
symbol

A scale coefficient where 1 is unity, or 100 percent.

db

Instance
Labeldecibels
TypeUnit
render %f dB
symbol dB

Decibels, a logarithmic relative unit where 0 is unity.

degree

Instance
Labeldegrees
TypeUnit
render %f deg
symbol deg

An angle where 360 degrees is one full rotation.

frame

Instance
Labelaudio frames
TypeUnit
render %f frames
symbol frames

Audio frames or samples.

hz

Instance
Labelhertz
TypeUnit
prefixConversion
factor 0.001
to khz
prefixConversion
factor 0.000001
to mhz
render %f Hz
symbol Hz

Hertz, or inverse seconds, the SI derived unit for frequency.

inch

Instance
Labelinches
TypeUnit
conversion
factor 0.0254
to m
render %f"
symbol in

An inch, defined as exactly 0.0254 metres.

khz

Instance
Labelkilohertz
TypeUnit
prefixConversion
factor 1000
to hz
prefixConversion
factor 0.001
to mhz
render %f kHz
symbol kHz

Kilohertz (thousands of Hertz).

km

Instance
Labelkilometres
TypeUnit
conversion
factor 0.62138818
to mile
prefixConversion
factor 1000
to m
prefixConversion
factor 100000
to cm
prefixConversion
factor 1000000
to mm
render %f km
symbol km

Kilometres (thousands of metres).

m

Instance
Labelmetres
TypeUnit
conversion
factor 39.37
to inch
prefixConversion
factor 100
to cm
prefixConversion
factor 1000
to mm
prefixConversion
factor 0.001
to km
render %f m
symbol m

Metres, the SI base unit for length.

mhz

Instance
Labelmegahertz
TypeUnit
prefixConversion
factor 1000000
to hz
prefixConversion
factor 0.001
to khz
render %f MHz
symbol MHz

Megahertz (millions of Hertz).

midiNote

Instance
LabelMIDI note
TypeUnit
render MIDI note %d
symbol note

A MIDI note number.

mile

Instance
Labelmiles
TypeUnit
conversion
factor 1609.344
to m
render %f mi
symbol mi

A mile, defined as exactly 1609.344 metres.

min

Instance
Labelminutes
TypeUnit
conversion
factor 60.0
to s
render %f mins
symbol min

Minutes (60s of seconds and 60ths of an hour).

mm

Instance
Labelmillimetres
TypeUnit
conversion
factor 0.03937
to inch
prefixConversion
factor 0.001
to m
prefixConversion
factor 0.1
to cm
prefixConversion
factor 0.000001
to km
render %f mm
symbol mm

Millimetres (thousandths of metres).

ms

Instance
Labelmilliseconds
TypeUnit
prefixConversion
factor 0.001
to s
render %f ms
symbol ms

Milliseconds (thousandths of seconds).

oct

Instance
Labeloctaves
TypeUnit
conversion
factor 12.0
to semitone12TET
render %f octaves
symbol oct

Octaves, relative musical pitch where +1 octave doubles the frequency.

pc

Instance
Labelpercent
TypeUnit
conversion
factor 0.01
to coef
render %f%%
symbol %

Percentage, a ratio as a fraction of 100.

s

Instance
Labelseconds
TypeUnit
conversion
factor 0.0166666666
to min
prefixConversion
factor 1000
to ms
render %f s
symbol s

Seconds, the SI base unit for time.

semitone12TET

Instance
Labelsemitones
TypeUnit
conversion
factor 0.083333333
to oct
render %f semi
symbol semi

A semitone in the 12-tone equal temperament scale.

@COMMENT@

Reference

ClassesProperties

Classes

Position

Class
LabelPosition
Superclass ofRate
Time
In range ofposition

A point in time and/or the speed at which time is passing.

A point in time and/or the speed at which time is passing. A position is both a point and a speed, which precisely defines a time within a timeline.

Rate

Class
LabelRate
Subclass ofPosition
In domain ofbeatUnit
beatsPerBar
beatsPerMinute
framesPerSecond
speed

The rate of passage of time.

The rate of passage of time in terms of one unit with respect to another.

Time

Class
LabelTime
Subclass ofPosition
In domain ofbar
barBeat
beat
frame

A point in time in some unit/dimension.

Properties

bar

Property
Labelbar
DomainTime
Rangexsd:long
TypeDatatype Property

A musical bar or measure.

barBeat

Property
Labelbeat within bar
DomainTime
Rangexsd:float
TypeDatatype Property

The beat number within the bar, from 0 to beatsPerBar.

beat

Property
Labelbeat
DomainTime
Rangexsd:double
TypeDatatype Property

The global running beat number.

This is not the beat within a bar like barBeat, but relative to the same origin as bar and monotonically increases unless the transport is repositioned.

beatUnit

Property
Labelbeat unit
DomainRate
Rangexsd:nonNegativeInteger
TypeDatatype Property

The note value that counts as one beat.

Beat unit, the note value that counts as one beat. This is the bottom number in a time signature: 2 for half note, 4 for quarter note, and so on.

beatsPerBar

Property
Labelbeats per bar
DomainRate
Rangexsd:float
TypeDatatype Property

The number of beats in one bar.

beatsPerMinute

Property
Labelbeats per minute
DomainRate
Rangexsd:float
TypeDatatype Property

Tempo in beats per minute.

frame

Property
Labelframe
DomainTime
Rangexsd:long
TypeDatatype Property

A time stamp in audio frames.

framesPerSecond

Property
Labelframes per second
DomainRate
Rangexsd:float
TypeDatatype Property

Frame rate in frames per second.

position

Property
Labelposition
RangePosition
TypeObject Property

A musical position.

speed

Property
Labelspeed
DomainRate
Rangexsd:float
TypeDatatype Property

The rate of the progress of time as a fraction of normal speed.

The rate of the progress of time as a fraction of normal speed. For example, a rate of 0.0 is stopped, 1.0 is rolling at normal speed, 0.5 is rolling at half speed, -1.0 is reverse, and so on.

@COMMENT@

Reference

ClassesPropertiesInstances

Classes

Atom

Class
LabelAtom
Superclass ofBool
Chunk
Literal
Number
Object
Property
Sequence
String
Tuple
URID
Vector
cType LV2_Atom

Abstract base class for all atoms.

An LV2_Atom has a 32-bit size and type, followed by a body of size bytes. Atoms MUST be 64-bit aligned.

All concrete Atom types (subclasses of this class) MUST define a precise binary layout for their body.

The type field is the URI of an Atom type mapped to an integer. Implementations SHOULD gracefully pass through, or ignore, atoms with unknown types.

All atoms are POD by definition except references, which as a special case have type 0. An Atom MUST NOT contain a Reference. It is safe to copy any non-reference Atom with a simple memcpy, even if the implementation does not understand type. Though this extension reserves the type 0 for references, the details of reference handling are currently unspecified. A future revision of this extension, or a different extension, may define how to use non-POD data and references. Implementations MUST NOT send references to another implementation unless the receiver is explicitly known to support references (e.g. by supporting a feature).

The special case of a null atom with both type and size 0 is not considered a reference.

AtomPort

Class
LabelAtom Port
Subclass oflv2:Port
In domain ofbufferType

A port which contains an Atom.

Ports of this type are connected to an LV2_Atom with a type specified by bufferType.

Output ports with a variably sized type MUST be initialised by the host before every run() to an Chunk with size set to the available space. The plugin reads this size to know how much space is available for writing. In all cases, the plugin MUST write a complete atom (including header) to outputs. However, to be robust, hosts SHOULD initialise output ports to a safe sentinel (e.g. the null Atom) before calling run().

Blank

Class
LabelBlank
Subclass ofObject
cType LV2_Atom_Object
owl:deprecated true
Deprecated

An anonymous collection of properties without a URI.

This class is deprecated. Use Object with ID 0 instead.

An Object where the LV2_Atom_Object::id is a blank node ID (NOT a URI). The ID of a Blank is valid only within the context the Blank appears in. For ports this is the context of the associated run() call, i.e. all ports share the same context so outputs can contain IDs that correspond to IDs of blanks in the input.

Bool

Class
LabelBool
Subclass ofAtom
cType LV2_Atom_Bool
owl:onDatatype xsd:boolean

An Int where 0 is false and any other value is true.

Chunk

Class
LabelChunk
Subclass ofAtom
owl:onDatatype xsd:base64Binary

A chunk of memory with undefined contents.

This type is used to indicate a certain amount of space is available. For example, output ports with a variably sized type are connected to a Chunk so the plugin knows the size of the buffer available for writing.

The use of a Chunk should be constrained to a local scope, since interpreting it is impossible without context. However, if serialised to RDF, a Chunk may be represented directly as an xsd:base64Binary string, for example:

[] eg:someChunk "vu/erQ=="^^xsd:base64Binary .

Double

Class
LabelDouble
Subclass ofNumber
cType LV2_Atom_Double
owl:onDatatype xsd:double

A native `double`.

Event

Class
LabelEvent
cType LV2_Atom_Event

An atom with a time stamp prefix in a sequence.

An Event is typically an element of an Sequence. Note that this is not an Atom type since it begins with a timestamp, not an atom header.

Float

Class
LabelFloat
Subclass ofNumber
cType LV2_Atom_Float
owl:onDatatype xsd:float

A native `float`.

Int

Class
LabelInt
Subclass ofNumber
cType LV2_Atom_Int
owl:onDatatype xsd:int

A native `int32_t`.

Literal

Class
LabelLiteral
Subclass ofAtom
cType LV2_Atom_Literal

A UTF-8 string literal with optional datatype or language.

This type is compatible with rdfs:Literal and is capable of expressing a string in any language or a value of any type. A Literal has a datatype and lang followed by string data in UTF-8 encoding. The length of the string data in bytes is size - sizeof(LV2_Atom_Literal), including the terminating NULL character. The lang field SHOULD be a URI of the form <http://lexvo.org/id/iso639-3/LANG> or <http://lexvo.org/id/iso639-1/LANG> where LANG is a 3-character ISO 693-3 language code, or a 2-character ISO 693-1 language code, respectively.

A Literal may have a datatype or a lang, but never both.

For example, a Literal can be Hello in English:

void set_to_hello_in_english(LV2_Atom_Literal* lit) {
     lit->atom.type     = map(expand("Literal"));
     lit->atom.size     = 14;
     lit->body.datatype = 0;
     lit->body.lang     = map("http://lexvo.org/id/iso639-1/en");
     memcpy(LV2_ATOM_CONTENTS(LV2_Atom_Literal, lit),
            "Hello",
            sizeof("Hello"));  // Assumes enough space
}

or a Turtle string:

void set_to_turtle_string(LV2_Atom_Literal* lit, const char* ttl) {
     lit->atom.type     = map(expand("Literal"));
     lit->atom.size     = 64;
     lit->body.datatype = map("http://www.w3.org/2008/turtle#turtle");
     lit->body.lang     = 0;
     memcpy(LV2_ATOM_CONTENTS(LV2_Atom_Literal, lit),
            ttl,
            strlen(ttl) + 1);  // Assumes enough space
}

Long

Class
LabelLong
Subclass ofNumber
cType LV2_Atom_Long
owl:onDatatype xsd:long

A native `int64_t`.

Number

Class
LabelNumber
Subclass ofAtom
Superclass ofDouble
Float
Int
Long

Base class for numeric types.

Object

Class
LabelObject
Subclass ofAtom
Superclass ofBlank
Resource
cType LV2_Atom_Object

A collection of properties.

An Object is an atom with a set of properties. This corresponds to an RDF Resource, and can be thought of as a dictionary with URID keys.

An LV2_Atom_Object body has a uint32_t id and type, followed by a series of Property bodies (LV2_Atom_Property_Body). The LV2_Atom_Object_Body::otype field is equivalent to a property with key rdf:type, but is included in the structure to allow for fast dispatching.

Code SHOULD check for objects using lv2_atom_forge_is_object() or lv2_atom_forge_is_blank() if a forge is available, rather than checking the atom type directly. This will correctly handle the deprecated Resource and Blank types.

When serialised to RDF, an Object is represented as a resource, for example:

eg:someObject
    eg:firstPropertyKey "first property value" ;
    eg:secondPropertyKey "first loser" ;
    eg:andSoOn "and so on" .

Path

Class
LabelPath
Subclass ofURI
owl:onDatatype URI

A local file path.

A Path is a URI reference with only a path component: no scheme, authority, query, or fragment. In particular, paths to files in the same bundle may be cleanly written in Turtle files as a relative URI. However, implementations may assume any binary Path (e.g. in an event payload) is a valid file path which can passed to system functions like fopen() directly, without any character encoding or escape expansion required.

Any implemenation that creates a Path atom to transmit to another is responsible for ensuring it is valid. A Path SHOULD always be absolute, unless there is some mechanism in place that defines a base path. Since this is not the case for plugin instances, effectively any Path sent to or received from a plugin instance MUST be absolute.

Property

Class
LabelProperty
Subclass ofAtom
cType LV2_Atom_Property

A property of an Object.

An LV2_Atom_Property has a URID key and context, and an Atom value. This corresponds to an RDF Property, where the key is the predicate and the value is the object.

The context field can be used to specify a different context for each property, where this is useful. Otherwise, it may be 0.

Properties generally only exist as part of an Object. Accordingly, they will typically be represented directly as properties in RDF (see Object). If this is not possible, they may be expressed as partial reified statements, for example:

eg:someProperty
    rdf:predicate eg:theKey ;
    rdf:object eg:theValue .

Resource

Class
LabelResource
Subclass ofObject
cType LV2_Atom_Object
owl:deprecated true
Deprecated

A named collection of properties with a URI.

This class is deprecated. Use Object directly instead.

An Object where the id field is a URID, that is, an Object with a URI.

Sequence

Class
LabelSequence
Subclass ofAtom
cType LV2_Atom_Sequence

A sequence of events.

A flat sequence of Event, that is, a series of time-stamped Atoms.

LV2_Atom_Sequence_Body.unit describes the time unit for the contained atoms. If the unit is known from context (e.g. run() stamps are always audio frames), this field may be zero. Otherwise, it SHOULD be either units:frame or units:beat, in which case ev.time.frames or ev.time.beats is valid, respectively.

If serialised to RDF, a Sequence has a similar form to Vector, but for brevity the elements may be assumed to be Event, for example:

eg:someSequence
    a atom:Sequence ;
    rdf:value (
        [
            atom:frameTime 1 ;
            rdf:value "901A01"^^midi:MidiEvent
        ] [
            atom:frameTime 3 ;
            rdf:value "902B02"^^midi:MidiEvent
        ]
    ) .

Sound

Class
LabelSound
Subclass ofVector
cType LV2_Atom_Vector

A Vector of Float which represents an audio waveform.

The format of a Sound is the same as the buffer format for lv2:AudioPort (except the size may be arbitrary). An Sound inherently depends on the sample rate, which is assumed to be known from context. Because of this, directly serialising an Sound is probably a bad idea, use a standard format like WAV instead.

String

Class
LabelString
Subclass ofAtom
Superclass ofURI
cType LV2_Atom_String
owl:onDatatype xsd:string

A UTF-8 string.

The body of an LV2_Atom_String is a C string in UTF-8 encoding, i.e. an array of bytes (uint8_t) terminated with a NULL byte ('\0').

This type is for free-form strings, but SHOULD NOT be used for typed data or text in any language. Use Literal unless translating the string does not make sense and the string has no meaningful datatype.

Tuple

Class
LabelTuple
Subclass ofAtom

A sequence of atoms with varying type and size.

The body of a Tuple is simply a series of complete atoms, each aligned to 64 bits.

If serialised to RDF, a Tuple SHOULD have the form:

eg:someVector
     a atom:Tuple ;
     rdf:value (
         "1"^^xsd:int
         "3.5"^^xsd:float
         "etc"
     ) .

URI

Class
LabelURI
Subclass ofString
Superclass ofPath
owl:onDatatype xsd:anyURI

A URI string.

This is useful when a URI is needed but mapping is inappropriate, for example with temporary or relative URIs. Since the ability to distinguish URIs from plain strings is often necessary, URIs MUST NOT be transmitted as String.

This is not strictly a URI, since UTF-8 is allowed. Escaping and related issues are the host's responsibility.

URID

Class
LabelURID
Subclass ofAtom
cType LV2_Atom_URID

An unsigned 32-bit integer ID for a URI.

A URID is typically generated with the LV2_URID_Map provided by the host .

Vector

Class
LabelVector
Subclass ofAtom
Superclass ofSound
cType LV2_Atom_Vector

A homogeneous sequence of atom bodies with equivalent type and size.

A homogeneous series of atom bodies with equivalent type and size.

An LV2_Atom_Vector is a 32-bit child_size and child_type followed by size / child_size atom bodies.

For example, an Vector containing 42 elements of type Float:

struct VectorOf42Floats {
    uint32_t size;        // sizeof(LV2_Atom_Vector_Body) + (42 * sizeof(float);
    uint32_t type;        // map(expand("Vector"))
    uint32_t child_size;  // sizeof(float)
    uint32_t child_type;  // map(expand("Float"))
    float    elems[42];
};

Note that it is possible to construct a valid Atom for each element of the vector, even by an implementation which does not understand child_type.

If serialised to RDF, a Vector SHOULD have the form:

eg:someVector
     a atom:Vector ;
     atom:childType atom:Int ;
     rdf:value (
         "1"^^xsd:int
         "2"^^xsd:int
         "3"^^xsd:int
         "4"^^xsd:int
     ) .

Properties

beatTime

Property
Labelbeat time
Rangexsd:decimal
TypeDatatype Property

A time stamp in beats.

bufferType

Property
Labelbuffer type
DomainAtomPort
Rangerdfs:Class
TypeObject Property

An atom type that a port may be connected to.

Indicates that an AtomPort may be connected to a certain Atom type. A port MAY support several buffer types. The host MUST NOT connect a port to an Atom with a type not explicitly listed with this property. The value of this property MUST be a sub-class of Atom. For example, an input port that is connected directly to an LV2_Atom_Double value is described like so:

<plugin>
    lv2:port [
        a lv2:InputPort , atom:AtomPort ;
        atom:bufferType atom:Double ;
    ] .

This property only describes the types a port may be directly connected to. It says nothing about the expected contents of containers. For that, use supports.

cType

Property
LabelC type
Domainrdfs:Class
Rangelv2:Symbol
TypeDatatype Property

The C type that describes the binary representation of an Atom type.

childType

Property
Labelchild type
TypeObject Property

The type of children in a container.

frameTime

Property
Labelframe time
Rangexsd:decimal
TypeDatatype Property

A time stamp in audio frames.

supports

Property
Labelsupports
Rangerdfs:Class
TypeObject Property

A supported atom type.

This property is defined loosely, it may be used to indicate that anything supports an Atom type, wherever that may be useful. It applies recursively where collections are involved.

In particular, this property can be used to describe which event types are expected by a port. For example, a port that receives MIDI events is described like so:

<plugin>
    lv2:port [
        a lv2:InputPort , atom:AtomPort ;
        atom:bufferType atom:Sequence ;
        atom:supports midi:MidiEvent ;
    ] .

Instances

atomTransfer

Instance
Labelatom transfer
Typeui:PortProtocol

A port protocol for transferring atoms.

Transfer of the complete atom in a port buffer. Useful as the format for a LV2UI_Write_Function.

This protocol applies to atom ports. The host must transfer the complete atom contained in the port, including header.

eventTransfer

Instance
Labelevent transfer
Typeui:PortProtocol

A port protocol for transferring events.

Transfer of individual events in a port buffer. Useful as the format for a LV2UI_Write_Function.

This protocol applies to ports which contain events, usually in an Sequence. The host must transfer each individual event to the recipient. The format of the received data is an LV2_Atom, there is no timestamp header.

@COMMENT@

Reference

ClassesProperties

Classes

ActiveSense

Class
LabelActive Sense
Subclass ofSystemRealtime
status FE

MIDI active sense message.

Aftertouch

Class
LabelAftertouch
Subclass ofVoiceMessage
chunk
byteNumber 0
property noteNumber
chunk
byteNumber 1
property pressure
statusMask A0

MIDI aftertouch message.

Bender

Class
LabelBender
Subclass ofVoiceMessage
chunk
byteNumber 0
byteNumber 1
property benderValue
statusMask E0

MIDI bender message.

ChannelPressure

Class
LabelChannel Pressure
Subclass ofVoiceMessage
chunk
byteNumber 0
property pressure
statusMask D0

MIDI channel pressure message.

Chunk

Class
LabelChunk
In domain ofbyteNumber
property
In range ofchunk

A sequence of contiguous bytes in a MIDI message.

Clock

Class
LabelClock
Subclass ofSystemRealtime
status F8

MIDI clock message.

Continue

Class
LabelContinue
Subclass ofSystemRealtime
status FB

MIDI continue message.

Controller

Class
LabelController
Subclass ofVoiceMessage
chunk
byteNumber 0
property controllerNumber
chunk
byteNumber 1
property controllerValue
statusMask B0

MIDI controller change message.

HexByte

Class
LabelHex Byte
In range ofstatus
statusMask
velocity
owl:onDatatype xsd:hexBinary

A hexadecimal byte, which has a value <= FF.

MidiEvent

Class
LabelMIDI Message
Subclass ofatom:Atom
ev:Event
Superclass ofSystemMessage
VoiceMessage
In range ofbinding
owl:onDatatype xsd:hexBinary

A single raw MIDI message.

A single raw MIDI message (a sequence of bytes).

This is equivalent to a standard MIDI messages, except with the following restrictions to simplify handling:

  • Running status is not allowed, every message must have its own status byte.

  • Note On messages with velocity 0 are not allowed. These messages are equivalent to Note Off in standard MIDI streams, but here only proper Note Off messages are allowed.

  • "Realtime messages" (status bytes 0xF8 to 0xFF) are allowed, but may not occur inside other messages like they can in standard MIDI streams.

  • All messages are complete valid MIDI messages. This means, for example, that only the first byte in each event (the status byte) may have the eighth bit set, that Note On and Note Off events are always 3 bytes long, etc.

Where messages are communicated, the writer is responsible for writing valid messages, and the reader may assume that all events are valid.

If a MidiEvent is serialised to a string, the format should be xsd:hexBinary, for example:

[] eg:someEvent "901A01"^^MidiEvent .

NoteOff

Class
LabelNote Off
Subclass ofVoiceMessage
chunk
byteNumber 0
property noteNumber
chunk
byteNumber 1
property velocity
statusMask 80

MIDI note off message.

NoteOn

Class
LabelNote On
Subclass ofVoiceMessage
chunk
byteNumber 0
property noteNumber
chunk
byteNumber 1
property velocity
statusMask 90

MIDI note on message.

ProgramChange

Class
LabelProgram Change
Subclass ofVoiceMessage
chunk
byteNumber 0
property programNumber
statusMask C0

MIDI program change message.

QuarterFrame

Class
LabelQuarter Frame
Subclass ofSystemCommon
status F1

MIDI quarter frame message.

Reset

Class
LabelReset
Subclass ofSystemRealtime
status FF

MIDI reset message.

SongPosition

Class
LabelSong Position
Subclass ofSystemCommon
chunk
byteNumber 0
byteNumber 1
property songPosition
status F2

MIDI song position pointer message.

SongSelect

Class
LabelSong Select
Subclass ofSystemCommon
status F3

MIDI song select message.

Start

Class
LabelStart
Subclass ofSystemRealtime
status FA

MIDI start message.

Stop

Class
LabelStop
Subclass ofSystemRealtime
status FC

MIDI stop message.

SystemCommon

Class
LabelSystem Common
Subclass ofSystemMessage
Superclass ofQuarterFrame
SongPosition
SongSelect
TuneRequest

MIDI system common message.

SystemExclusive

Class
LabelSystem Exclusive
Subclass ofSystemMessage
status F0

MIDI system exclusive message.

SystemMessage

Class
LabelSystem Message
Subclass ofMidiEvent
Superclass ofSystemCommon
SystemExclusive
SystemRealtime
statusMask F0

MIDI system message.

SystemRealtime

Class
LabelSystem Realtime
Subclass ofSystemMessage
Superclass ofActiveSense
Clock
Continue
Reset
Start
Stop

MIDI system realtime message.

TuneRequest

Class
LabelTune Request
Subclass ofSystemCommon
status F6

MIDI tune request message.

VoiceMessage

Class
LabelVoice Message
Subclass ofMidiEvent
Superclass ofAftertouch
Bender
ChannelPressure
Controller
NoteOff
NoteOn
ProgramChange
statusMask F0

MIDI voice message.

Properties

benderValue

Property
Labelbender value
Rangexsd:short
TypeDatatype Property

MIDI pitch bender message (-8192 to 8192).

binding

Property
Labelbinding
RangeMidiEvent
TypeObject Property

The MIDI event to bind a parameter to.

byteNumber

Property
Labelbyte number
DomainChunk
Rangexsd:unsignedByte
TypeDatatype Property

The 0-based index of a byte which is part of this chunk.

channel

Property
LabelMIDI channel
Rangexsd:unsignedByte
TypeDatatype Property

The channel number of a MIDI message.

chunk

Property
LabelMIDI chunk
RangeChunk
TypeObject Property

A chunk of a MIDI message.

controllerNumber

Property
LabelMIDI controller number
Rangexsd:byte
TypeDatatype Property

The numeric ID of a controller (0 to 127).

controllerValue

Property
LabelMIDI controller value
Rangexsd:byte
TypeDatatype Property

The value of a controller (0 to 127).

noteNumber

Property
Labelnote number
Rangexsd:byte
TypeDatatype Property

The numeric ID of a note (0 to 127).

pressure

Property
Labelkey pressure
Rangexsd:byte
TypeDatatype Property

Key pressure (0 to 127).

programNumber

Property
Labelprogram number
Rangexsd:byte
TypeDatatype Property

The numeric ID of a program (0 to 127).

property

Property
Labelproperty
DomainChunk
Rangerdf:Property
TypeObject Property

The property this chunk represents.

songNumber

Property
Labelsong number
Rangexsd:byte
TypeDatatype Property

The numeric ID of a song (0 to 127).

songPosition

Property
Labelsong position
Rangexsd:short
TypeDatatype Property

Song position in MIDI beats (16th notes) (-8192 to 8192).

status

Property
Labelstatus byte
RangeHexByte
TypeDatatype Property

The exact status byte for a message of this type.

statusMask

Property
Labelstatus mask
RangeHexByte
TypeDatatype Property

The status byte for a message of this type on channel 1.

This is a status byte with the lower nibble set to zero.

velocity

Property
Labelvelocity
RangeHexByte
TypeDatatype Property

The velocity of a note message (0 to 127).

@COMMENT@

Reference

PropertiesInstances

Properties

displayPriority

Property
Labeldisplay priority
Domainlv2:Port
Rangexsd:nonNegativeInteger
TypeDatatype Property

A priority ranking this port in importance to its plugin.

Indicates how important a port is to controlling the plugin. If a host can only display some ports of a plugin, it should prefer ports with a higher display priority. Priorities do not need to be unique, and are only meaningful when compared to each other.

rangeSteps

Property
Labelrange steps
Domainlv2:Port
Rangexsd:nonNegativeInteger
TypeDatatype Property

The number of even steps the range should be divided into.

This value indicates into how many evenly-divided points the (control) port range should be divided for step-wise control. This may be used for changing the value with step-based controllers like arrow keys, mouse wheel, rotary encoders, and so on.

Note that when used with a logarithmic port, the steps are logarithmic too, and port value can be calculated as:

value = lower * pow(upper / lower, step / (steps - 1))

and the step from value is:

step = (steps - 1) * log(value / lower) / log(upper / lower)

where:

  • value is the port value.

  • step is the step number (0..steps).

  • steps is the number of steps (= value of :rangeSteps property).

  • lower and upper are the bounds.

Instances

causesArtifacts

Instance
Labelchanges cause artifacts
Typelv2:PortProperty

Input port causes audible artifacts when changed.

Input ports only. Indicates that any changes to the port value may produce slight artifacts to produced audio signals (zipper noise and other results of signal discontinuities). Connecting ports of this type to continuous signals is not recommended, and when presenting a list of automation targets, those ports may be marked as artifact-producing.

continuousCV

Instance
Labelsmooth modulation signal
Typelv2:PortProperty

Port carries a smooth modulation signal.

Indicates that the port carries a "smooth" modulation signal. Control input ports of this type are well-suited for being connected to sources of smooth signals (knobs with smoothing, modulation rate oscillators, output ports with continuousCV type, etc.). Typically, the plugin with ports which have this property will implement appropriate smoothing to avoid audio artifacts. For output ports, this property suggests the value of the port is likely to change frequently, and describes a smooth signal (so successive values may be considered points along a curve).

discreteCV

Instance
Labeldiscrete modulation signal
Typelv2:PortProperty

Port carries a discrete modulation signal.

Indicates that the port carries a "discrete" modulation signal. Input ports of this type are well-suited for being connected to sources of discrete signals (switches, buttons, classifiers, event detectors, etc.). May be combined with trigger property. For output ports, this property suggests the value of the port describe discrete values that should be interpreted as steps (and not points along a curve).

expensive

Instance
Labelchanges are expensive
Typelv2:PortProperty

Input port is expensive to change.

Input ports only. Indicates that any changes to the port value may trigger expensive background calculation (for example, regeneration of lookup tables in a background thread). Any value changes may have not have immediate effect, or may cause silence or diminished-quality version of the output until background processing is finished. Ports having this property are typically not well suited for connection to outputs of other plugins, and should not be offered as connection targets or for automation by default.

hasStrictBounds

Instance
Labelhas strict bounds
Typelv2:PortProperty

Port has strict bounds which are not internally clamped.

For hosts that support supportsStrictBounds, this indicates that the value of the port should never exceed the port's minimum and maximum control points. For input ports, it moves the responsibility for limiting the range of values to host, if it supports supportsStrictBounds. For output ports, it indicates that values within specified range are to be expected, and breaking that should be considered by the host as error in plugin implementation.

logarithmic

Instance
Labellogarithmic
Typelv2:PortProperty

Port value is logarithmic.

Indicates that port value behaviour within specified range (bounds) is a value using logarithmic scale. The lower and upper bounds must be specified, and must be of the same sign.

notAutomatic

Instance
Labelnot automatic
Typelv2:PortProperty

Port that is not intended to be fed with a modulation signal.

Indicates that the port is not primarily intended to be fed with modulation signals from external sources (other plugins, etc.). It is merely a UI hint and hosts may allow the user to override it.

notOnGUI

Instance
Labelnot on GUI
Typelv2:PortProperty

Port that should not be displayed on a GUI.

Indicates that the port is not primarily intended to be represented by a separate control in the user interface window (or any similar mechanism used for direct, immediate control of control ports). It is merely a UI hint and hosts may allow the user to override it.

supportsStrictBounds

Instance
Labelsupports strict bounds
Typelv2:Feature

A feature indicating plugin support for strict port bounds.

Indicates use of host support for hasStrictBounds port property. A plugin that specifies it as optional feature can omit value clamping for hasStrictBounds ports, if the feature is supported by the host. When specified as required feature, it indicates that the plugin does not do any clamping for input ports that have a hasStrictBounds property.

trigger

Instance
Labeltrigger
Typelv2:PortProperty

Port is a momentary trigger.

Indicates that the data item corresponds to a momentary event that has been detected (control output ports) or is to be triggered (control input ports). For input ports, the port needs to be reset to lv2:default value after run() function of the plugin has returned. If the control port is assigned a GUI widget by the host, the widget should be of auto-off (momentary, one-shot) type - for example, a push button if the port is also declared as lv2:toggled, or a series of push button or auto-clear input box with a "Send" button if the port is also lv2:integer.

@COMMENT@

Reference

PropertiesInstances

Properties

maxBlockLength

Property
Labelmaximum block length
Rangexsd:nonNegativeInteger
TypeDatatype Property

Block length has an upper bound.

The maximum block length the host will ever request the plugin to process at once, that is, the maximum sample_count parameter that will ever be passed to LV2_Descriptor::run().

minBlockLength

Property
Labelminimum block length
Rangexsd:nonNegativeInteger
TypeDatatype Property

Block length has a lower bound.

The minimum block length the host will ever request the plugin to process at once, that is, the minimum sample_count parameter that will ever be passed to LV2_Descriptor::run().

nominalBlockLength

Property
Labelnominal block length
Rangexsd:nonNegativeInteger
TypeDatatype Property

Typical block length that will most often be processed.

The typical block length the host will request the plugin to process at once, that is, the typical sample_count parameter that will be passed to LV2_Descriptor::run(). This will usually be equivalent, or close to, the maximum block length, but there are no strong guarantees about this value whatsoever. Plugins may use this length for optimization purposes, but MUST NOT assume the host will always process blocks of this length. In particular, the host MAY process longer blocks.

sequenceSize

Property
Labelsequence size
Rangexsd:nonNegativeInteger
TypeDatatype Property

The maximum size of a sequence, in bytes.

This should be provided as an option by hosts that support event ports (including but not limited to MIDI), so plugins have the ability to allocate auxiliary buffers large enough to copy the input.

Instances

boundedBlockLength

Instance
Labelbounded block length
Typelv2:Feature

Block length has lower and upper bounds.

A feature that indicates the host will provide both the minBlockLength and maxBlockLength options to the plugin. Plugins that copy data from audio inputs can require this feature to ensure they know how much space is required for auxiliary buffers. Note the minimum may be zero, this feature is mainly useful to ensure a maximum is available.

All hosts SHOULD support this feature, since it is simple to support and necessary for any plugins that may need to copy the input.

coarseBlockLength

Instance
Labelcoarse block length
Typelv2:Feature

Plugin prefers coarse block length without buffer splitting.

A feature that indicates the plugin prefers coarse, regular block lengths. For example, plugins that do not implement sample-accurate control use this feature to indicate that the host should not split the run cycle because controls have changed.

Note that this feature is merely a hint, and does not guarantee a fixed block length. The run cycle may be split for other reasons, and the blocksize itself may change anytime.

fixedBlockLength

Instance
Labelfixed block length
Typelv2:Feature

Block length never changes.

A feature that indicates the host will always call LV2_Descriptor::run() with the same value for sample_count. This length MUST be provided as the value of both the minBlockLength and maxBlockLength options.

Note that requiring this feature may severely limit the number of hosts capable of running the plugin.

powerOf2BlockLength

Instance
Labelpower of 2 block length
Typelv2:Feature

Block length is a power of 2.

A feature that indicates the host will always call LV2_Descriptor::run() with a power of two sample_count. Note that this feature does not guarantee the value is the same each call, to guarantee a fixed power of two block length plugins must require both this feature and fixedBlockLength.

Note that requiring this feature may severely limit the number of hosts capable of running the plugin.

@COMMENT@

Reference

PropertiesInstances

Properties

asLargeAs

Property
Labelas large as
Domainlv2:Port
Rangelv2:Symbol
TypeDatatype Property

Port that this port must have at least as much buffer space as.

Indicates that a port requires at least as much buffer space as the port with the given symbol on the same plugin instance. This may be used for any ports, but is generally most useful to indicate an output port must be at least as large as some input port (because it will copy from it). If a port is asLargeAs several ports, it is asLargeAs the largest such port (not the sum of those ports' sizes).

The host guarantees that whenever an ObjectPort's run method is called, any output O that is asLargeAs an input I is connected to a buffer large enough to copy I, or NULL if the port is lv2:connectionOptional.

minimumSize

Property
Labelminimum size
Domainlv2:Port
Rangexsd:nonNegativeInteger
TypeDatatype Property

Minimum buffer size required by a port, in bytes.

Indicates that a port requires a buffer at least this large, in bytes. Any host that supports the resize-port feature MUST connect any port with a minimumSize specified to a buffer at least as large as the value given for this property. Any host, especially those that do NOT support dynamic port resizing, SHOULD do so or reduced functionality may result.

Instances

resize

Instance
Labelresize
Typelv2:Feature

A feature for resizing output port buffers.

A feature to resize output port buffers in LV2_Plugin_Descriptor::run().

To support this feature, the host must pass an LV2_Feature to the plugin's instantiate method with URI LV2_RESIZE_PORT__resize and a pointer to a LV2_Resize_Port_Resize structure. This structure provides a resize_port function which plugins may use to resize output port buffers as necessary.

@COMMENT@

Reference

ClassesPropertiesInstances

Classes

AmbisonicBH1P0Group

Class
LabelAmbisonic BH1P0
Subclass ofAmbisonicGroup
element
lv2:designation ACN0
lv2:index 0
element
lv2:designation ACN1
lv2:index 1
element
lv2:designation ACN3
lv2:index 2

Ambisonic B stream of horizontal order 1 and peripheral order 0.

AmbisonicBH1P1Group

Class
LabelAmbisonic BH1P1
Subclass ofAmbisonicGroup
element
lv2:designation ACN0
lv2:index 0
element
lv2:designation ACN1
lv2:index 1
element
lv2:designation ACN2
lv2:index 2
element
lv2:designation ACN3
lv2:index 3

Ambisonic B stream of horizontal order 1 and peripheral order 1.

AmbisonicGroup

Class
LabelAmbisonic Group
Subclass ofGroup
Superclass ofAmbisonicBH1P0Group
AmbisonicBH1P1Group
AmbisonicBH2P0Group
AmbisonicBH2P1Group
AmbisonicBH2P2Group
AmbisonicBH3P0Group
AmbisonicBH3P1Group
AmbisonicBH3P2Group
AmbisonicBH3P3Group

A group of Ambisonic channels.

These groups are divided into channels which together represent a position in an abstract n-dimensional space. The position of sound in one of these groups does not depend on a particular speaker configuration; a decoder can be used to convert an ambisonic stream for any speaker configuration.

DiscreteGroup

Class
LabelDiscrete Group
Subclass ofGroup
Superclass ofFivePointOneGroup
FivePointZeroGroup
FourPointZeroGroup
MidSideGroup
MonoGroup
SevenPointOneGroup
SevenPointOneWideGroup
SixPointOneGroup
StereoGroup
ThreePointZeroGroup

A group of discrete channels.

These groups are divided into channels where each represents a particular speaker location. The position of sound in one of these groups depends on a particular speaker configuration.

Element

Class
LabelElement
In range ofelement

An element of a group, with a designation and optional index.

Restriction on lv2:designation
owl:cardinality 1
An element MUST have exactly one lv2:designation.

Group

Class
LabelPort Group
Superclass ofAmbisonicGroup
DiscreteGroup
InputGroup
OutputGroup
In domain ofsubGroupOf
In range ofgroup
subGroupOf

A set of ports that are logicaly grouped together.

A group logically combines ports which should be considered part of the same stream. For example, two audio ports in a group may form a stereo stream.

Like ports, groups have a lv2:symbol that is unique within the context of the plugin, where group symbols and port symbols reside in the same namespace. In other words, a group on a plugin MUST NOT have the same symbol as any other group or port on that plugin. This makes it possible to uniquely reference a port or group on a plugin with a single identifier and no context.

Group definitions may be shared across plugins for brevity. For example, a plugin collection may define a single URI for a StereoGroup with the symbol "input" and use it in many plugins.

Restriction on lv2:symbol
owl:cardinality 1
A Group MUST have exactly one string lv2:symbol.

InputGroup

Class
LabelInput Group
Subclass ofGroup
In range ofmainInput
source

A group which contains exclusively inputs.

MidSideGroup

Class
LabelMid-Side Stereo
Subclass ofDiscreteGroup
element
lv2:designation center
lv2:index 0
element
lv2:designation side
lv2:index 1

A 2-channel mid-side stereo audio group.

MonoGroup

Class
LabelMono
Subclass ofDiscreteGroup
element
lv2:designation center
lv2:index 0

A single channel audio group.

OutputGroup

Class
LabelOutput Group
Subclass ofGroup
In domain ofsource
In range ofmainOutput

A group which contains exclusively outputs.

StereoGroup

Class
LabelStereo
Subclass ofDiscreteGroup
element
lv2:designation left
lv2:index 0
element
lv2:designation right
lv2:index 1

A 2-channel discrete stereo audio group.

Properties

element

Property
Labelelement
RangeElement
TypeObject Property

An element within a port group.

group

Property
Labelgroup
Domainlv2:Port
RangeGroup
TypeObject Property

Group that this port is a part of.

Indicates that this port is a part of a group of ports on the plugin. The port should also have an lv2:designation property to define its designation within that group.

harmonicDegree

Property
Labelharmonic degree
Domainlv2:Channel
Rangexsd:integer
TypeDatatype Property

The degree coefficient (l) of the spherical harmonic for an Ambisonic channel.

harmonicIndex

Property
Labelharmonic index
Domainlv2:Channel
Rangexsd:integer
TypeDatatype Property

The index coefficient (m) of the spherical harmonic for an Ambisonic channel.

letterCode

Property
Labelambisonic letter code
Domainlv2:Channel
Rangerdf:PlainLiteral
TypeDatatype Property

The YuMa letter code for an Ambisonic channel.

mainInput

Property
Labelmain input
Domainlv2:Plugin
RangeInputGroup
TypeObject Property

Input group that is the primary input of the plugin.

Indicates that this group should be considered the "main" input, i.e. the primary task is processing the signal in this group. A plugin MUST NOT have more than one mainInput property.

mainOutput

Property
Labelmain output
Domainlv2:Plugin
RangeOutputGroup
TypeObject Property

Output group that is the primary output of the plugin.

Indicates that this group should be considered the "main" output. The main output group SHOULD have the main input group as a source.

sideChainOf

Property
Labelside-chain of
TypeObject Property

Port or grou is a side chain of another.

Indicates that this port or group should be considered a "side chain" of some other port or group. The precise definition of "side chain" depends on the plugin, but in general this group should be considered a modifier to some other group, rather than an independent input itself.

source

Property
Labelsource
DomainOutputGroup
RangeInputGroup
TypeObject Property

Port or group that this group is the output of.

Indicates that this port or group should be considered the "result" of some other port or group. This property only makes sense on groups with outputs when the source is a group with inputs. This can be used to convey a relationship between corresponding input and output groups with different types, for example in a mono to stereo plugin.

subGroupOf

Property
Labelsub-group of
DomainGroup
RangeGroup
TypeObject Property

Group is a child of another group.

Indicates that this group is a child of another group. This property has no meaning with respect to plugin execution, but the host may find this information useful to provide a better user interface. Note that being a sub-group does not relax the restriction that the group MUST have a unique symbol with respect to the plugin.

Instances

ACN0

Instance
LabelACN0
Typelv2:Channel
harmonicDegree 0
harmonicIndex 0
letterCode W

Ambisonic channel 0 (W): degree 0, index 0.

ACN1

Instance
LabelACN1
Typelv2:Channel
harmonicDegree 1
harmonicIndex -1
letterCode Y

Ambisonic channel 1 (Y): degree 1, index -1.

ACN10

Instance
LabelACN10
Typelv2:Channel
harmonicDegree 3
harmonicIndex -2
letterCode O

Ambisonic channel 10 (O): degree 3, index -2.

ACN11

Instance
LabelACN11
Typelv2:Channel
harmonicDegree 3
harmonicIndex -1
letterCode M

Ambisonic channel 11 (M): degree 3, index -1.

ACN12

Instance
LabelACN12
Typelv2:Channel
harmonicDegree 3
harmonicIndex 0
letterCode K

Ambisonic channel 12 (K): degree 3, index 0.

ACN13

Instance
LabelACN13
Typelv2:Channel
harmonicDegree 3
harmonicIndex 1
letterCode L

Ambisonic channel 13 (L): degree 3, index 1.

ACN14

Instance
LabelACN14
Typelv2:Channel
harmonicDegree 3
harmonicIndex 2
letterCode N

Ambisonic channel 14 (N): degree 3, index 2.

ACN15

Instance
LabelACN15
Typelv2:Channel
harmonicDegree 3
harmonicIndex 3
letterCode P

Ambisonic channel 15 (P): degree 3, index 3.

ACN2

Instance
LabelACN2
Typelv2:Channel
harmonicDegree 1
harmonicIndex 0
letterCode Z

Ambisonic channel 2 (Z): degree 1, index 0.

ACN3

Instance
LabelACN3
Typelv2:Channel
harmonicDegree 1
harmonicIndex 1
letterCode X

Ambisonic channel 3 (X): degree 1, index 1.

ACN4

Instance
LabelACN4
Typelv2:Channel
harmonicDegree 2
harmonicIndex -2
letterCode V

Ambisonic channel 4 (V): degree 2, index -2.

ACN5

Instance
LabelACN5
Typelv2:Channel
harmonicDegree 2
harmonicIndex -1
letterCode T

Ambisonic channel 5 (T): degree 2, index -1.

ACN6

Instance
LabelACN6
Typelv2:Channel
harmonicDegree 2
harmonicIndex 0
letterCode R

Ambisonic channel 6 (R): degree 2, index 0.

ACN7

Instance
LabelACN7
Typelv2:Channel
harmonicDegree 2
harmonicIndex 1
letterCode S

Ambisonic channel 7 (S): degree 2, index 1.

ACN8

Instance
LabelACN8
Typelv2:Channel
harmonicDegree 2
harmonicIndex 2
letterCode U

Ambisonic channel 8 (U): degree 2, index 2.

ACN9

Instance
LabelACN9
Typelv2:Channel
harmonicDegree 3
harmonicIndex -3
letterCode Q

Ambisonic channel 9 (Q): degree 3, index -3.

center

Instance
Labelcenter
Typelv2:Channel

The center channel of a discrete audio group.

centerLeft

Instance
Labelcenter left
Typelv2:Channel

The center-left channel of a 7.1 wide surround sound group.

centerRight

Instance
Labelcenter right
Typelv2:Channel

The center-right channel of a 7.1 wide surround sound group.

left

Instance
Labelleft
Typelv2:Channel

The left channel of a stereo audio group.

lowFrequencyEffects

Instance
Labellow-frequency effects
Typelv2:Channel

The LFE channel of a *.1 surround sound group.

rearCenter

Instance
Labelrear center
Typelv2:Channel

The rear-center channel of a surround sound group.

rearLeft

Instance
Labelrear left
Typelv2:Channel

The rear-left channel of a surround sound group.

rearRight

Instance
Labelrear right
Typelv2:Channel

The rear-right channel of a surround sound group.

side

Instance
Labelside
Typelv2:Channel

The side channel of a mid-side audio group.

sideLeft

Instance
Labelside left
Typelv2:Channel

The side-left channel of a 6.1 or 7.1 surround sound group.

sideRight

Instance
Labelside right
Typelv2:Channel

The side-right channel of a 6.1 or 7.1 surround sound group.

@COMMENT@

Reference

ClassesProperties

Classes

AutoMorphPort

Class
LabelAuto Morph Port
Subclass oflv2:Port

A port that can change its type based on that of another.

Ports of this type MUST have another type which defines the default buffer format (for example, lv2:ControlPort) but may dynamically change types based on the configured types of any MorphPort ports on the same plugin instance.

The type of a port may only change in response to a host call to LV2_Options_Interface::set(). Whenever any port type on the instance changes, the host MUST check the type of all AutoMorphPort ports with LV2_Options_Interface::get() before calling run() again, since they may have changed. If the type of any port is zero, it means the current configuration is invalid and the plugin may not be run (unless that port is lv2:connectionOptional and connected to NULL).

This is mainly useful for outputs whose type depends on the type of corresponding inputs.

MorphPort

Class
LabelMorph Port
Subclass oflv2:Port
In domain ofcurrentType
supportsType

A port which can be switched to another type.

Ports of this type MUST have another type which defines the default buffer format (for example lv2:ControlPort) but can be dynamically changed to a different type in hosts that support opts:interface.

The host may change the type of a MorphPort by setting its currentType with LV2_Options_Interface::set(). If the plugin has any AutoMorphPort ports, the host MUST check their types after changing any port type since they may have changed.

Properties

currentType

Property
Labelcurrent type
DomainMorphPort
TypeObject Property

The currently active type of the port.

The currently active type of the port. This is for dynamic use as an option and SHOULD NOT be listed in the static plugin data.

supportsType

Property
Labelsupports type
DomainMorphPort
TypeObject Property

A type that a port supports being switched to.

Indicates that a port supports being switched to a certain type. A MorphPort MUST list each type it supports being switched to in the plugin data using this property.

@COMMENT@

Reference

ClassesPropertiesInstances

Classes

Option

Class
LabelOption
Subclass ofrdf:Property

A value for a static option passed to an instance.

It is not required for a property to explicitly be an Option in order to be used as such. However, properties which are primarily intended for use as options, or are at least particularly useful as options, should be explicitly given this type for documentation purposes, and to assist hosts in discovering option definitions.

Properties

requiredOption

Property
Labelrequired option
Rangerdf:Property
TypeObject Property

An option required by the instance to function at all.

The host MUST pass a value for the specified option via options during instantiation.

Note that use of this property may reduce the number of compatible hosts. Wherever possible, it is better to list options with supportedOption and fall back to a reasonable default value if it is not provided.

supportedOption

Property
Labelsupported option
Rangerdf:Property
TypeObject Property

An option supported or by the instance.

The host SHOULD provide a value for the specified option if one is known, or provide the user an opportunity to specify one if possible.

Instances

interface

Instance
Labelinterface
Typelv2:ExtensionData

An interface for dynamically setting and getting options.

An interface (LV2_Options_Interface) for dynamically setting and getting options. Note that this is intended for use by the host for configuring plugins only, and is not a live plugin control mechanism.

The plugin data file should advertise this interface like so:

@prefix opts: <http://lv2plug.in/ns/ext/options#> .

<plugin>
    a lv2:Plugin ;
    lv2:extensionData opts:interface .

options

Instance
Labeloptions
Typelv2:Feature

The feature used to provide options to an instance.

To implement this feature, hosts MUST pass an LV2_Feature to the appropriate instantiate method with this URI and data pointed to an array of LV2_Options_Option terminated by an element with both key and value set to zero. The instance should cast this data pointer to const LV2_Options_Option* and scan the array for any options of interest. The instance MUST NOT modify the options array in any way.

Note that requiring this feature may reduce the number of compatible hosts. Unless some options are strictly required by the instance, this feature SHOULD be listed as an lv2:optionalFeature.

@COMMENT@

Reference

ClassesPropertiesInstances

Classes

Ack

Class
LabelAck
Subclass ofResponse

An acknowledgement that a request was successful.

Copy

Class
LabelCopy
Subclass ofRequest

A request to copy the subject to the destination.

After this, the destination has the same description as the subject, and the subject is unchanged.

It is an error if the subject does not exist, or if the destination already exists.

Multiple subjects may be given if the destination is a container, but the semantics of this case are application-defined.

Restriction on subject
owl:minCardinality 1
Restriction on destination
owl:cardinality 1

Delete

Class
LabelDelete
Subclass ofRequest

Request that the subject or subjects be deleted.

Error

Class
LabelError
Subclass ofResponse

A response indicating an error processing a request.

Get

Class
LabelGet
Subclass ofRequest

A request for a description of the subject.

If a property is given, then the receiver should respond with a Set message that gives only that property.

Otherwise, it should respond with a concise bounded description in a Put message, that is, a description that recursively includes any blank node values.

If a subject is given, then the response should have the same subject. If no subject is given, then the receiver is implicitly the subject.

If a request node or a sequenceNumber is given, then the response should be a Response and have the same property. If neither is given, then the receiver can respond with a simple Put message. For example:

[]
    a patch:Get ;
    patch:subject eg:something .

Could result in:

[]
    a patch:Put ;
    patch:subject eg:something ;
    patch:body [
        eg:name "Something" ;
        eg:ratio 1.6180339887 ;
    ] .

Insert

Class
LabelInsert
Subclass ofRequest

A request to insert a body into the subject.

If the subject does not exist, it is created. If the subject does already exist, it is added to.

This request only adds properties, it never removes them. The user must take care that multiple values are not set for properties which should only have one.

Restriction on subject
owl:cardinality 1

Message

Class
LabelPatch Message
Superclass ofRequest
Response
In domain ofbody
context
destination
property
sequenceNumber
subject

A patch message.

This is an abstract base class for all patch messages. Concrete messages are either a Request or a Response.

Move

Class
LabelMove
Subclass ofRequest

A request to move the subject to the destination.

After this, the destination has the description that the subject had, and the subject no longer exists.

It is an error if the subject does not exist, or if the destination already exists.

Restriction on subject
owl:cardinality 1
Restriction on destination
owl:cardinality 1

Patch

Class
LabelPatch
Subclass ofRequest
In domain ofadd
remove

A request to add and/or remove properties of the subject.

This method always has at least one subject, and exactly one add and remove property. The value of add and remove are nodes which have the properties to add or remove from the subject(s), respectively. The special value wildcard may be used as the value of a remove property to remove all properties with the given predicate. For example:

[]
    a patch:Patch ;
    patch:subject <something> ;
    patch:add [
        eg:name "New name" ;
        eg:age 42 ;
    ] ;
    patch:remove [
        eg:name "Old name" ;
        eg:age patch:wildcard ;  # Remove all old eg:age properties
    ] .
Restriction on subject
owl:minCardinality 1
Restriction on add
owl:cardinality 1
Restriction on remove
owl:cardinality 1

Put

Class
LabelPut
Subclass ofRequest

A request to put the body as the subject.

If the subject does not already exist, it is created. If the subject does already exist, the body is considered an updated version of it, and the previous version is replaced.

[]
    a patch:Put ;
    patch:subject <something> ;
    patch:body [
        eg:name "New name" ;
        eg:age 42 ;
    ] .
Restriction on subject
owl:cardinality 1

Request

Class
LabelRequest
Subclass ofMessage
Superclass ofCopy
Delete
Get
Insert
Move
Patch
Put
Set
In domain ofaccept
In range ofrequest

A patch request message.

A request may have a subject property, which specifies the resource that the request applies to. The subject may be omitted in contexts where it is implicit, for example if the recipient is the subject.

Response

Class
LabelResponse
Subclass ofMessage
Superclass ofAck
Error
In domain ofrequest

A response to a Request.

Set

Class
LabelSet
Subclass ofRequest
In domain ofvalue

A compact request to set a property to a value.

This is equivalent to a Patch which removes all pre-existing values for the property before setting the new value. For example:

[]
    a patch:Set ;
    patch:subject <something> ;
    patch:property eg:name ;
    patch:value "New name" .

Which is equivalent to:

[]
    a patch:Patch ;
    patch:subject <something> ;
    patch:add [
        eg:name "New name" ;
    ] ;
    patch:remove [
        eg:name patch:wildcard ;
    ] .
Restriction on property
owl:cardinality 1
Restriction on value
owl:cardinality 1

Properties

accept

Property
Labelaccept
DomainRequest
Rangerdfs:Class
TypeObject Property

An accepted type for a response.

add

Property
Labeladd
DomainPatch
Rangerdfs:Resource
TypeObject Property

The properties to add to the subject.

body

Property
Labelbody
DomainMessage
TypeObject Property

The body of a message.

The details of this property's value depend on the type of message it is a part of.

context

Property
Labelcontext
DomainMessage
TypeObject Property

The context of properties in this message.

For example, a plugin may have a special context for ephemeral properties which are only relevant during the lifetime of the instance and should not be saved in state.

The specific uses for contexts are application specific. However, the context MUST be a URI, and can be interpreted as the ID of a data model where properties should be stored. Implementations MAY have special support for contexts, for example by storing in a quad store or serializing to a format that supports multiple RDF graphs such as TriG.

destination

Property
Labeldestination
DomainMessage
TypeObject Property

The destination to move the subject to.

property

Property
Labelproperty
DomainMessage
Rangerdf:Property
TypeObject Property

The property for a Set or Get message.

readable

Property
Labelreadable
Rangerdf:Property
TypeObject Property

A property that can be read with a Get message.

See the similar writable property for details.

remove

Property
Labelremove
DomainPatch
Rangerdfs:Resource
TypeObject Property

The properties to remove from the subject.

request

Property
Labelrequest
DomainResponse
RangeRequest
TypeObject Property

The request this is a response to.

This can be used if referring directly to the URI or blank node ID of the request is possible. Otherwise, use sequenceNumber.

sequenceNumber

Property
Labelsequence number
DomainMessage
Rangexsd:int
TypeDatatype Property

The sequence number of a request or response.

This property is used to associate replies with requests when it is not feasible to refer to request URIs with request. A Response with a given sequence number is the reply to the previously send Request with the same sequence number.

The special sequence number 0 means that no reply is desired.

subject

Property
Labelsubject
DomainMessage
TypeObject Property

The subject this message applies to.

value

Property
Labelvalue
DomainSet
Rangerdf:Property
TypeDatatype Property

The value of a property in a Set message.

writable

Property
Labelwritable
Rangerdf:Property
TypeObject Property

A property that can be set with a Set or Patch message.

This is used to list properties that can be changed, for example to allow user interfaces to present appropriate controls. For example:

@prefix eg:   <http://example.org/> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .

eg:title
    a rdf:Property ;
    rdfs:label "title" ;
    rdfs:range xsd:string .

eg:plugin
    patch:writable eg:title .

Instances

wildcard

Instance
Labelwildcard
Typerdfs:Resource

A wildcard that matches any resource.

This makes it possible to describe the removal of all values for a given property.

@COMMENT@

Reference

ClassesProperties

Classes

Bank

Class
LabelBank
In range ofbank

A bank of presets.

Restriction on rdfs:label
owl:someValuesFrom xsd:string
A Bank MUST have at least one string rdfs:label.

Preset

Class
LabelPreset
Subclass oflv2:PluginBase
In domain ofbank
In range ofpreset

A preset for an LV2 plugin.

The structure of a Preset deliberately mirrors that of a plugin, so existing predicates can be used to describe any data associated with the preset. For example:

@prefix eg: <http://example.org/> .

eg:mypreset
    a pset:Preset ;
    rdfs:label "One louder" ;
    lv2:appliesTo eg:myplugin ;
    lv2:port [
        lv2:symbol "volume1" ;
        pset:value 11.0
    ] , [
        lv2:symbol "volume2" ;
        pset:value 11.0
    ] .

A Preset SHOULD have at least one lv2:appliesTo property. Each Port on a Preset MUST have at least a lv2:symbol property and a value property.

Hosts SHOULD save user presets to a bundle in the user-local LV2 directory (for example ~/.lv2) with a name like &lt;Plugin_Name&gt;_&lt;Preset_Name&gt;.preset.lv2 (for example LV2_Amp_At_Eleven.preset.lv2), where names are transformed to be valid LV2 symbols for maximum compatibility.

Restriction on rdfs:label
owl:someValuesFrom xsd:string
A Preset MUST have at least one string rdfs:label.

Properties

bank

Property
Labelbank
DomainPreset
RangeBank
TypeObject Property

The bank this preset belongs to.

preset

Property
Labelpreset
Domainlv2:PluginBase
RangePreset
TypeObject Property

The preset currently applied to a plugin instance.

Specifies the preset currently applied to a plugin instance. This property may be useful for saving state, or notifying a plugin instance at run-time about a preset change.

value

Property
Labelvalue
Domainlv2:PortBase
TypeDatatype Property

The value of a port in a preset.

This property is used in a similar way to lv2:default.

@COMMENT@

Reference

ClassesPropertiesInstances

Classes

Changed

Class
LabelChanged

A notification that the internal state of the plugin has changed.

A notification that the internal state of the plugin has been changed in a way that the host can not otherwise know about.

This is a one-way notification, intended to be used as the type of an Object sent from plugins when necessary.

Plugins SHOULD emit such an event whenever a change has occurred that would result in a different state being saved, but not when the host explicity makes a change which it knows is likely to have that effect, such as changing a parameter.

State

Class
LabelState
In range ofstate

LV2 plugin state.

This type should be used wherever instance state is described. The properties of a resource with this type correspond directly to the properties of the state dictionary (except the property that states it has this type).

Properties

state

Property
Labelstate
RangeState
TypeObject Property

The state of an LV2 plugin instance.

This property may be used anywhere a state needs to be described, for example:

@prefix eg: <http://example.org/> .

<plugin-instance>
    state:state [
        eg:somekey "some value" ;
        eg:someotherkey "some other value" ;
        eg:favourite-number 2
    ] .

Instances

freePath

Instance
Labelfree path
Typelv2:Feature

A feature for freeing paths allocated by the host.

This feature provides a function that can be used by plugins to free paths that were allocated by the host via other state features (mapPath and makePath).

interface

Instance
Labelinterface
Typelv2:ExtensionData

A plugin interface for saving and restoring state.

A structure (LV2_State_Interface) which contains functions to be called by the host to save and restore state. In order to support this extension, the plugin must return a valid LV2_State_Interface from LV2_Descriptor::extension_data() when it is called with URI LV2_STATE__interface.

The plugin data file should describe this like so:

@prefix state: <http://lv2plug.in/ns/ext/state#> .

<plugin>
    a lv2:Plugin ;
    lv2:extensionData state:interface .

loadDefaultState

Instance
Labelload default state
Typelv2:Feature

A feature indicating that the plugin has default state.

This feature indicates that the plugin has default state listed with the state property which should be loaded by the host before running the plugin. Requiring this feature allows plugins to implement a single state loading mechanism which works for initialisation as well as restoration, without having to hard-code default state.

To support this feature, the host MUST restore the default state after instantiating the plugin but before calling run().

makePath

Instance
Labelmake path
Typelv2:Feature

A feature for creating new files and directories.

This feature allows plugins to create new files and/or directories. To support this feature the host passes an LV2_Feature with URI LV2_STATE__makePath and data pointed to an LV2_State_Make_Path to the plugin. The host may make this feature available only during save by passing it to LV2_State_Interface::save(), or available any time by passing it to LV2_Descriptor::instantiate(). If passed to LV2_State_Interface::save(), the feature MUST NOT be used beyond the scope of that call.

The plugin is guaranteed a hierarchical namespace unique to that plugin instance, and may expect the returned path to have the requested path as a suffix. There is one such namespace, even if the feature is passed to both LV2_Descriptor::instantiate() and LV2_State_Interface::save(). Beyond this, the plugin MUST NOT make any assumptions about the returned paths.

Like any other paths, the plugin MUST map these paths using mapPath before storing them in state. The plugin MUST NOT assume these paths will be available across a save/restore otherwise, that is, only mapped paths saved to state are persistent, any other created paths are temporary.

For example, a plugin may create a file in a subdirectory like so:

char* save_myfile(LV2_State_Make_Path* make_path)
{
    char* path   = make_path->path(make_path->handle, "foo/bar/myfile.txt");
    FILE* myfile = fopen(path, 'w');
    fprintf(myfile, "I am some data");
    fclose(myfile);
    return path;
}

mapPath

Instance
Labelmap path
Typelv2:Feature

A feature for mapping between absolute and abstract file paths.

This feature maps absolute paths to/from abstract paths which are stored in state. To support this feature a host must pass an LV2_Feature with URI LV2_STATE__mapPath and data pointed to an LV2_State_Map_Path to the plugin's LV2_State_Interface methods.

The plugin MUST map all paths stored in its state (including those inside any files). This is necessary so that hosts can handle file system references correctly, for example to share common files, or bundle state for distribution or archival.

For example, a plugin may write a path to a state file like so:

void write_path(LV2_State_Map_Path* map_path, FILE* myfile, const char* path)
{
    char* abstract_path = map_path->abstract_path(map_path->handle, path);
    fprintf(myfile, "%s", abstract_path);
    free(abstract_path);
}

Then, later reload the path like so:

char* read_path(LV2_State_Map_Path* map_path, FILE* myfile)
{
    /* Obviously this is not production quality code! */
    char abstract_path[1024];
    fscanf(myfile, "%s", abstract_path);
    return map_path->absolute_path(map_path->handle, abstract_path);
}

threadSafeRestore

Instance
Labelthread-safe restore
Typelv2:Feature

A feature indicating support for thread-safe state restoration.

If a plugin supports this feature, its LV2_State_Interface::restore method is thread-safe and may be called concurrently with audio class functions.

To support this feature, the host MUST pass a work:schedule feature to the restore method, which will be used to complete the state restoration. The usual mechanics of the worker apply: the host will call the plugin's work method, which emits a response which is later applied in the audio thread.

The host is not required to block audio processing while restore() and work() load the state, so this feature allows state to be restored without dropouts.

@COMMENT@

Reference

Classes

Classes

DynManifest

Class
LabelDynamic Manifest

Dynamic manifest for an LV2 binary.

There MUST NOT be any instances of DynManifest in the generated manifest.

All relative URIs in the generated data MUST be relative to the base path that would be used to parse a normal LV2 manifest (the bundle path).

Restriction on lv2:binary
owl:minCardinality 1
A DynManifest MUST have at least one lv2:binary.
@COMMENT@

Reference

ClassesInstances

Instances

amplitude

Instance
Labelamplitude
Typelv2:Parameter

An amplitude as a factor, where 0 is silent and 1 is unity.

attack

Instance
Labelattack
Typelv2:Parameter

The duration of an envelope attack stage.

bypass

Instance
Labelbypass
Typelv2:Parameter

A boolean parameter that disables processing if true.

cutoffFrequency

Instance
Labelcutoff frequency
Typelv2:Parameter

The cutoff frequency, typically in Hz, for a filter.

decay

Instance
Labeldecay
Typelv2:Parameter

The duration of an envelope decay stage.

delay

Instance
Labeldelay
Typelv2:Parameter

The duration of an envelope delay stage.

dryLevel

Instance
Labeldry level
Typelv2:Parameter

The level of the unprocessed component of a signal.

frequency

Instance
Labelfrequency
Typelv2:Parameter

A frequency, typically in Hz.

gain

Instance
Labelgain
Typelv2:Parameter
units:unit units:db
lv2:default 0.0
lv2:maximum 20.0
lv2:minimum -20.0

Gain in decibels.

hold

Instance
Labelhold
Typelv2:Parameter

The duration of an envelope hold stage.

pulseWidth

Instance
Labelpulse width
Typelv2:Parameter

The width of a pulse of a rectangular waveform.

ratio

Instance
Labelratio
Typelv2:Parameter

Compression ratio.

release

Instance
Labelrelease
Typelv2:Parameter

The duration of an envelope release stage.

resonance

Instance
Labelresonance
Typelv2:Parameter

The resonance of a filter.

sampleRate

Instance
Labelsample rate
Typelv2:Parameter

A sample rate in Hz.

sustain

Instance
Labelsustain
Typelv2:Parameter

The level of an envelope sustain stage as a factor.

threshold

Instance
Labelthreshold
Typelv2:Parameter

Compression threshold.

waveform

Instance
Labelwaveform
Typelv2:Parameter

The waveform "fader" for oscillators or modulators that have several.

wetDryRatio

Instance
Labelwet/dry ratio
Typelv2:Parameter

The ratio between processed and bypassed levels in the output.

The ratio between processed and bypass components in output signal. The dry and wet percentages can be calculated from the following equations:

dry = (wetDryRatio.maximum - wetDryRatio.value) / wetDryRatio.maximum
wet = wetDryRatio.value / wetDryRatio.maximum

Typically, maximum value of 1 or 100 and minimum value of 0 should be used.

wetLevel

Instance
Labelwet level
Typelv2:Parameter

The level of the processed component of a signal.

@COMMENT@

Reference

ClassesPropertiesInstances

Classes

CocoaUI

Class
LabelCocoa UI
Subclass ofUI

A UI where the widget is a pointer to a NSView.

This is the native UI type on Mac OS X.

Gtk3UI

Class
LabelGTK3 UI
Subclass ofUI

A UI where the widget is a pointer to a Gtk+ 3.0 GtkWidget.

The host must guarantee that the Gtk+ 3 library has been initialised and the Glib main loop is running before the UI is instantiated. Note that this UI type is not suitable for binary distribution since multiple versions of Gtk can not be used in the same process.

GtkUI

Class
LabelGTK2 UI
Subclass ofUI

A UI where the widget is a pointer to a Gtk+ 2.0 GtkWidget.

The host must guarantee that the Gtk+ 2 library has been initialised and the Glib main loop is running before the UI is instantiated. Note that this UI type is not suitable for binary distribution since multiple versions of Gtk can not be used in the same process.

PortNotification

Class
LabelPort Notification
In domain ofnotifyType
plugin
portIndex
protocol
In range ofportNotification

A description of port updates that a host must send a UI.

This describes which ports the host must send notifications to the UI about. The port must be specific either by index, using the portIndex property, or symbol, using the lv2:symbol property. Since port indices are not guaranteed to be stable, using the symbol is recommended, and the inde MUST NOT be used except by UIs that are shipped in the same bundle as the corresponding plugin.

Restriction on plugin
owl:cardinality 1
A PortNotification MUST have exactly one ui:plugin.

PortProtocol

Class
LabelPort Protocol
Subclass oflv2:Feature
In range ofprotocol

A method to communicate port data between a UI and plugin.

A PortProtocol MUST define:

Port Type
Which plugin port types the buffer type is valid for.
Feature Data
What data (if any) should be passed in the LV2_Feature.

A PortProtocol for an output port MUST define:

Update Frequency
When the host should call port_event().
Update Format
The format of the data in the buffer passed to port_event().
Options
The format of the options passed to subscribe() and unsubscribe().

A PortProtocol for an input port MUST define:

Write Format
The format of the data in the buffer passed to write_port().
Write Effect
What happens when the UI calls write_port().

For an example, see floatProtocol or peakProtocol.

PortProtocol is a subclass of lv2:Feature, so UIs use lv2:optionalFeature and lv2:requiredFeature to specify which PortProtocols they want to use.

Qt4UI

Class
LabelQt4 UI
Subclass ofUI

A UI where the widget is a pointer to a Qt4 QWidget.

The host must guarantee that the Qt4 library has been initialised and the Qt4 main loop is running before the UI is instantiated. Note that this UI type is not suitable for binary distribution since multiple versions of Qt can not be used in the same process.

Qt5UI

Class
LabelQt5 UI
Subclass ofUI

A UI where the widget is a pointer to a Qt5 QWidget.

The host must guarantee that the Qt5 library has been initialised and the Qt5 main loop is running before the UI is instantiated. Note that this UI type is not suitable for binary distribution since multiple versions of Qt can not be used in the same process.

UI

Class
LabelUser Interface
Superclass ofCocoaUI
Gtk3UI
GtkUI
Qt4UI
Qt5UI
WindowsUI
X11UI
In domain ofportNotification
In range ofui

A UI for an LV2 plugin.

WindowsUI

Class
LabelWindows UI
Subclass ofUI

A UI where the widget is a Windows HWND window ID.

Note that the LV2UI_Widget for this type of UI is not a pointer, but should be interpreted directly as a HWND. This is the native UI type on Microsoft Windows.

X11UI

Class
LabelX11 UI
Subclass ofUI

A UI where the widget is an X11 Window window ID.

Note that the LV2UI_Widget for this type of UI is not a pointer, but should be interpreted directly as an X11 Window ID. This is the native UI type on most POSIX systems.

Properties

backgroundColor

Property
Labelbackground color
TypeDatatype Property

The background color of the host's UI.

The background color of the host's UI. The host can pass this as an option so that UIs can integrate nicely with the host window around it.

Hosts should pass this as an option to UIs with an integer RGBA32 color value. If the value is a 32-bit integer, it is guaranteed to be in RGBA32 format, but the UI must check the value type and not assume this, to allow for other types of color in the future.

binary

Property
Labelbinary
TypeObject Property
owl:deprecated true
owl:sameAs lv2:binary
Deprecated

The shared library that a UI resides in.

This property is redundant and deprecated: new UIs should use lv2:binary instead, however hosts must still support binary.

foregroundColor

Property
Labelforeground color
TypeDatatype Property

The foreground color of the host's UI.

The foreground color of the host's UI. The host can pass this as an option so that UIs can integrate nicely with the host window around it.

Hosts should pass this as an option to UIs with an integer RGBA32 color value. If the value is a 32-bit integer, it is guaranteed to be in RGBA32 format, but the UI must check the value type and not assume this, to allow for other types of color in the future.

notifyType

Property
Labelnotify type
DomainPortNotification
TypeObject Property

A particular type that the UI should be notified of.

Specifies a particular type that the UI should be notified of.

This is useful for message-based ports where several types of data can be present, but only some are interesting to the UI. For example, if UI control is multiplexed in the same port as MIDI, this property can be used to ensure that only the relevant events are forwarded to the UI, and not potentially high frequency MIDI data.

plugin

Property
Labelplugin
DomainPortNotification
Rangelv2:Plugin
TypeObject Property

The plugin a portNotification applies to.

portIndex

Property
Labelport index
DomainPortNotification
Rangexsd:decimal
TypeDatatype Property

The index of the port a portNotification applies to.

portNotification

Property
Labelport notification
DomainUI
RangePortNotification
TypeObject Property

Specifies a port notification that is required by a UI.

Specifies that a UI should receive notifications about changes to a particular port's value via LV2UI_Descriptor::port_event().

For example:

eg:ui
    a ui:X11UI ;
    ui:portNotification [
        ui:plugin eg:plugin ;
        lv2:symbol "gain" ;
        ui:protocol ui:floatProtocol
    ] .

protocol

Property
Labelprotocol
DomainPortNotification
RangePortProtocol
TypeObject Property

The protocol to be used for this notification.

scaleFactor

Property
Labelscale factor
Rangexsd:float
TypeDatatype Property

Scale factor for high resolution screens.

HiDPI (High Dots Per Inch) displays have a high resolution on a relatively small form factor. Many systems use a scale factor to compensate for this, so for example, a scale factor of 2 means things are drawn twice as large as normal.

Hosts can pass this as an option to UIs to communicate this information, so that the UI can draw at an appropriate scale.

ui

Property
Labeluser interface
Domainlv2:Plugin
RangeUI
TypeObject Property

Relates a plugin to a UI that applies to it.

updateRate

Property
Labelupdate rate
Rangexsd:float
TypeDatatype Property

The target rate, in Hz, to send updates to the UI.

windowTitle

Property
Labelwindow title
Rangexsd:string
TypeDatatype Property

The title for the window shown by LV2UI_Show_Interface.

Instances

fixedSize

Instance
Labelfixed size
Typelv2:Feature

Non-resizable UI that will never resize itself.

If a UI has this feature, it indicates the same thing as noUserResize, and additionally that the UI will not resize itself on its own. That is, the UI will always remain the same size. This feature may not make sense for all UI types. The data pointer for this feature should always be set to NULL.

floatProtocol

Instance
Labelfloat protocol
TypePortProtocol

A protocol for transferring single floating point values.

A protocol for transferring single floating point values. The rules for this protocol are:

Port Type
lv2:ControlPort
Feature Data
None.
Update Frequency
The host SHOULD call port_event() as soon as possible when the port value has changed, but there are no timing guarantees.
Update Format
A single float.
Options
None.
Write Format
A single float.
Write Effect
The host SHOULD set the port to the received value as soon as possible, but there is no guarantee that run() actually sees this value.

idleInterface

Instance
Labelidle interface
Typelv2:ExtensionData
lv2:Feature

A feature that provides a callback for the host to drive the UI.

To support this feature, the UI should list it as a lv2:optionalFeature or lv2:requiredFeature in its data, and also as lv2:extensionData. When the UI's extension_data() is called with this URI (LV2_UI__idleInterface), it should return a pointer to an LV2UI_Idle_Interface.

To indicate support, the host should pass a feature to instantiate() with this URI, with NULL for data.

makeSONameResident

Instance
Labelmake SO name resident
Typelv2:Feature
owl:deprecated true
Deprecated

UI binary must not be unloaded.

This feature was intended to support UIs that link against toolkit libraries which may not be unloaded during the lifetime of the host. This is better achieved by using the appropriate flags when linking the UI, for example gcc -Wl,-z,nodelete.

noUserResize

Instance
Labelno user resize
Typelv2:Feature

Non-resizable UI.

If a UI has this feature, it indicates that it does not make sense to let the user resize the main widget, and the host should prevent that. This feature may not make sense for all UI types. The data pointer for this feature should always be set to NULL.

parent

Instance
Labelparent
Typelv2:Feature

The parent for a UI.

This feature can be used to pass a parent that the UI should be a child of. The format of data pointer of this feature is determined by the UI type, and is generally the same type as the LV2UI_Widget that the UI would return. For example, for a X11UI, the parent should be a Window. This is particularly useful for embedding, where the parent often must be known at construction time for embedding to work correctly.

UIs should not require this feature unless it is necessary for them to work at all, but hosts should provide it whenever possible.

peakProtocol

Instance
Labelpeak protocol
TypePortProtocol

A protocol for sending continuous peak measurements of an audio signal.

This port protocol defines a way for the host to send continuous peak measurements of the audio signal at a certain port to the UI. The intended use is visualisation, for example an animated meter widget that shows the level of the audio input or output.

A contiguous sequence of audio samples for which a peak value has been computed is called a measurement period.

The rules for this protocol are:

Port Type
lv2:AudioPort
Feature Data
None.
Update Frequency
The host SHOULD call port_event() at regular intervals. The measurement periods used for calls to port_event() for the same port SHOULD be contiguous (i.e. the measurement period for one call should begin right after the end of the measurement period for the previous call ends) unless the UI has removed and re-added the port subscription between those calls. However, UIs MUST NOT depend on either the regularity of the calls or the contiguity of the measurement periods; hosts may change the call rate or skip calls for performance or other reasons. Measurement periods for different calls to port_event() for the same port MUST NOT overlap.
Update Format
A single LV2UI_Peak_Data object.
Options
None.
Write Format
None.
Write Effect
None.

portMap

Instance
Labelport map
Typelv2:Feature

A feature for accessing the index of a port by symbol.

This makes it possible to implement and distribute UIs separately from the plugin binaries they control.

This feature corresponds to the LV2UI_Port_Index struct, which should be passed with the URI LV2_UI__portIndex.

portSubscribe

Instance
Labelport subscribe
Typelv2:Feature

A feature for dynamically subscribing to updates from a port.

This makes it possible for a UI to explicitly request a particular style of update from a port at run-time, in a more flexible and powerful way than listing subscriptions statically allows.

This feature corresponds to the LV2UI_Port_Subscribe struct, which should be passed with the URI LV2_UI__portSubscribe.

requestValue

Instance
Labelrequest value
Typelv2:Feature

A feature to request a parameter value from the user via the host.

This allows a plugin UI to request a new parameter value using the host's UI, for example by showing a dialog or integrating with the host's built-in content browser. This should only be used for complex parameter types where the plugin UI is not capable of showing the expected native platform or host interface to choose a value, such as file path parameters.

This feature corresponds to the LV2UI_Request_Value struct, which should be passed with the URI LV2_UI__requestValue.

resize

Instance
Labelresize
Typelv2:ExtensionData
lv2:Feature

A feature that control of, and notifications about, a UI's size.

This feature corresponds to the LV2UI_Resize struct, which should be passed with the URI LV2_UI__resize. This struct may also be provided by the UI as extension data using the same URI, in which case it is used by the host to request that the UI change its size.

showInterface

Instance
Labelshow interface
Typelv2:ExtensionData

An interface for showing and hiding a window for a UI.

This allows UIs to gracefully degrade to separate windows when the host is unable to embed the UI widget for whatever reason. When the UI's extension_data() is called with this URI (LV2_UI__showInterface), it should return a pointer to an LV2UI_Show_Interface.

touch

Instance
Labeltouch
Typelv2:Feature

A feature to notify that the user has grabbed a port control.

This is useful for automation, so the host can allow the user to take control of a port, even if that port would otherwise be automated (much like grabbing a physical motorised fader).

It can also be used for MIDI learn or in any other situation where the host needs to do something with a particular control and it would be convenient for the user to select it directly from the plugin UI.

This feature corresponds to the LV2UI_Touch struct, which should be passed with the URI LV2_UI__touch.

@COMMENT@

Reference

ClassesInstances

Classes

Entry

Class
LabelEntry
Superclass ofError
Note
Trace
Warning

A log entry.

Subclasses of this are passed as the type parameter to LV2_Log_Log methods to describe the nature of the log entry.

Error

Class
LabelError
Subclass ofEntry

An error message.

An error should only be posted when a serious unexpected error occurs, and should be actively shown to the user by the host.

Note

Class
LabelNote
Subclass ofEntry

An informative message.

A note records some useful piece of information, but may be ignored. The host should provide passive access to note entries to the user.

Trace

Class
LabelTrace
Subclass ofEntry

A debugging trace message.

A trace should not be displayed during normal operation, but the host may implement an option to display them for debugging purposes.

This entry type is special in that one may be posted in a real-time thread. It is assumed that if debug tracing is enabled, real-time performance is not a concern. However, the host MUST guarantee that posting a trace is real-time safe if debug tracing is not enabled (for example, by simply ignoring the call as early as possible).

Warning

Class
LabelWarning
Subclass ofEntry

A warning message.

A warning should be posted when an unexpected, but non-critical, error occurs. The host should provide passive access to warnings entries to the user, but may also choose to actively show them.

Instances

log

Instance
Labellog
Typelv2:Feature

Logging feature.

A feature which plugins may use to log messages. To support this feature, the host must pass an LV2_Feature to LV2_Descriptor::instantiate() with URI LV2_LOG__log and data pointed to an instance of LV2_Log_Log.

@COMMENT@

Reference

Instances

Instances

interface

Instance
Labelwork interface
Typelv2:ExtensionData

The work interface provided by a plugin.

The work interface provided by a plugin, LV2_Worker_Interface.

@prefix work: <http://lv2plug.in/ns/ext/worker#> .

<plugin>
    a lv2:Plugin ;
    lv2:extensionData work:interface .

schedule

Instance
Labelwork schedule
Typelv2:Feature

The work scheduling feature provided by a host.

The work scheduling feature provided by a host, LV2_Worker_Schedule.

If the host passes this feature to LV2_Descriptor::instantiate, the plugin MAY use it to schedule work in the audio thread, and MUST NOT call it in any other context. Hosts MAY pass this feature to other functions as well, in which case the plugin MAY use it to schedule work in the calling context. The plugin MUST NOT assume any relationship between different schedule features.