aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core.lv2/lv2.ttl163
1 files changed, 81 insertions, 82 deletions
diff --git a/core.lv2/lv2.ttl b/core.lv2/lv2.ttl
index e3f16da..39efbdc 100644
--- a/core.lv2/lv2.ttl
+++ b/core.lv2/lv2.ttl
@@ -2,7 +2,7 @@
# PROVISIONAL Revision 4.0pre1
#
# This document describes the classes and properties that are defined by the
-# core LV2 specification. See <http://lv2plug.in> for more information.
+# core LV2 specification. See <http://lv2plug.in> for more information.
#
# Copyright (C) 2006-2009 Steve Harris, David Robillard
#
@@ -52,7 +52,7 @@ lv2:Specification a rdfs:Class ;
An LV2 specification (i.e. this specification, or an LV2 "extension").
Specification data, like plugin data, is distributed in standardized bundles
-so hosts may discover all present LV2 data. See http://lv2plug.in/docs for
+so hosts may discover all present LV2 data. See http://lv2plug.in/docs for
more details.
""" .
@@ -86,50 +86,50 @@ more details.
] ;
lv2:documentation """
<h4>Overview</h4>
-<p>
-There are a large number of open source and free software synthesis packages in
-use or development at this time. This API ("LV2") attempts to give programmers
-the ability to write simple "plugin" audio processors in C/C++ and link
-them dynamically ("plug" them) into a range of these packages ("hosts").
+
+<p>There are a large number of open source and free software synthesis packages
+in use or development at this time. This API ("LV2") attempts to give
+programmers the ability to write simple "plugin" audio processors in C/C++ and
+link them dynamically ("plug" them) into a range of these packages ("hosts").
It should be possible for any host and any plugin to communicate completely
-through this interface.
-</p><p>
-This API is deliberately as short and simple as possible. The information
-required to use a plugin is in a companion data (RDF) file. The shared
-library portion of the API does not contain enough information to make use
-of the plugin possible; the data file is mandatory.
-</p><p>
-Plugins can operate on any type of data. Plugins have "ports" that are
-inputs or outputs and each plugin is "run" for a "block" corresponding to
-a short time interval measured in samples. The plugin may assume that all
-its input and output ports have been connected to the relevant data location
-(using the connect_port() function) before it is asked to run, unless the
-port has been set "connection optional" in the plugin's data file.
-</p><p>
-This "core" specification defines two types of port data, equivalent to those
-in LADSPA: control rate and audio rate. Audio rate data is communicated using
-arrays with one <code>float</code> element per sample processed, allowing
-a block of audio to be processed by the plugin in a single pass. Control
-rate data is communicated using single <code>float</code> values. Control
-rate data has a single value at the start of a call to the run() function
-which is considered valid for the duration of the call to run(). Thus the
-"control rate" is determined by the block size, controlled by the host.
-</p><p>
-Plugins reside in shared object files suitable for dynamic linking (e.g. by
+through this interface.</p>
+
+<p>This API is deliberately as short and simple as possible. The information
+required to use a plugin is in a companion data (RDF) file. The shared library
+portion of the API does not contain enough information to make use of the
+plugin possible; the data file is mandatory.</p>
+
+<p>Plugins can operate on any type of data. Plugins have "ports" that are
+inputs or outputs and each plugin is "run" for a "block" corresponding to a
+short time interval measured in samples. The plugin may assume that all its
+input and output ports have been connected to the relevant data location (using
+the connect_port() function) before it is asked to run, unless the port has
+been set "connection optional" in the plugin's data file.</p>
+
+<p>This "core" specification defines two types of port data, equivalent to
+those in LADSPA: control rate and audio rate. Audio rate data is communicated
+using arrays with one <code>float</code> element per sample processed, allowing
+a block of audio to be processed by the plugin in a single pass. Control rate
+data is communicated using single <code>float</code> values. Control rate data
+has a single value at the start of a call to the run() function which is
+considered valid for the duration of the call to run(). Thus the "control rate"
+is determined by the block size, controlled by the host.</p>
+
+<p>Plugins reside in shared object files suitable for dynamic linking (e.g. by
dlopen() and family). This object provides one or more <a
href="urn:struct:LV2_Descriptor">plugin descriptors</a> via the
-lv2_descriptor() function. These plugins can be instantiated to create
-"plugin instances", which can be connected together to perform tasks.
-</p><p>
-This API contains very limited error-handling.
-</p>
+lv2_descriptor() function. These plugins can be instantiated to create "plugin
+instances", which can be connected together to perform tasks.</p>
+
+<p>This API contains very limited error-handling.</p>
+
<h4>Threading Rules</h4>
-<p>Certain hosts may need to call the functions
-provided by a plugin from multiple threads. For this to be safe, the plugin
-must be written so that those functions can be executed simultaneously
-without problems. To facilitate this, the functions provided by a plugin
-are divided into classes:
-</p>
+
+<p>Certain hosts may need to call the functions provided by a plugin from
+multiple threads. For this to be safe, the plugin must be written so that those
+functions can be executed simultaneously without problems. To facilitate this,
+the functions provided by a plugin are divided into classes:</p>
+
<dl>
<dt>Discovery Class</dt>
<dd>lv2_descriptor(), extension_data()</dd>
@@ -138,24 +138,23 @@ are divided into classes:
<dt>Audio Class</dt>
<dd>run(), connect_port()</dd>
</dl>
-<p>
-Extensions to this specification which add new functions MUST declare in
+
+<p>Extensions to this specification which add new functions MUST declare in
which of these classes the functions belong, or define new classes for them.
-The rules that hosts MUST follow are:
-</p>
+The rules that hosts MUST follow are:</p>
+
<ul>
-<li>When a function is running for a plugin instance, no other
- function in the same class may run for that instance.</li>
-<li>When a function from the Discovery class is running, no other
- functions in the same shared object file may run.</li>
+<li>When a function is running for a plugin instance,
+no other function in the same class may run for that instance.</li>
+<li>When a function from the Discovery class is running,
+no other functions in the same shared object file may run.</li>
<li>When a function from the Instantiation class is running for a plugin
- instance, no other functions for that instance may run.</li>
+instance, no other functions for that instance may run.</li>
</ul>
-<p>
-Any simultaneous calls that are not explicitly forbidden by these rules
-are allowed. For example, a host may call run() for two different plugin
-instances simultaneously.</p>
-""" .
+
+<p>Any simultaneous calls that are not explicitly forbidden by these rules are
+allowed. For example, a host may call run() for two different plugin instances
+simultaneously.</p>""" .
@@ -167,9 +166,9 @@ lv2:Template a rdfs:Class ;
rdfs:subClassOf lv2:Resource ;
rdfs:comment """
An abstract plugin-like resource that may not actually be an LV2 plugin
-(e.g. may not actually have a plugin binary). A Template is a Resource
-that may have ports, and otherwise mimic the structure of a plugin.
-This should be subclassed by extensions that define such things.
+(e.g. may not actually have a plugin binary). A Template is a Resource that
+may have ports, and otherwise mimic the structure of a plugin. This should be
+subclassed by extensions that define such things.
""" .
lv2:Plugin a rdfs:Class ;
@@ -192,10 +191,10 @@ with no language tag.
rdfs:comment """
The class which represents an LV2 plugin.
-Plugins SHOULD have a doap:license property whenever possible.
-The doap:name property should be at most a few words in length using title
-capitalization, e.g. "Tape Delay Unit". Use doap:shortdesc or
-doap:description for more detailed descriptions.
+Plugins SHOULD have a doap:license property whenever possible. The doap:name
+property should be at most a few words in length using title capitalization,
+e.g. "Tape Delay Unit". Use doap:shortdesc or doap:description for more
+detailed descriptions.
""" .
@@ -261,13 +260,13 @@ the following properties:</p>
</ul>
<p>All LV2 port descriptions MUST have a property rdf:type where the object is
-one of lv2:Port lv2:InputPort or lv2:OutputPort. Additionally there MUST
+one of lv2:Port lv2:InputPort or lv2:OutputPort. Additionally there MUST
be at least one other rdf:type property which more specifically describes
type of the port (e.g. lv2:AudioPort).</p>
<p>Hosts that do not support a specific port class MUST NOT instantiate the
plugin, unless that port has the connectionOptional property set (in which case
-the host can simply "connect" that port to NULL). If a host is interested
+the host can simply "connect" that port to NULL). If a host is interested
in plugins to insert in a certain signal path (e.g. stereo audio), it SHOULD
consider all the classes of a port to determine which ports are most suitable
for connection (e.g. by ignoring ports with additional classes the host does
@@ -275,8 +274,8 @@ not recognize).</p>
<p>A port has two identifiers - a (numeric) index, and a (textual) symbol.
The index can be used as an identifier at run-time, but persistent references
-to ports (e.g. in a saved preset) MUST use the symbol. A symbol is guaranteed
-to refer to the same port on all plugins with a given URI. An index does NOT
+to ports (e.g. in a saved preset) MUST use the symbol. A symbol is guaranteed
+to refer to the same port on all plugins with a given URI. An index does NOT
necessarily refer to the same port on all plugins with a given URI (i.e. the
index for a port may differ between plugin binaries).</p>
""" .
@@ -329,11 +328,11 @@ lv2:revision a rdf:Property ;
rdfs:range xsd:nonNegativeInteger ;
rdfs:label "revision" ;
rdfs:comment """
-The revision of an LV2 Resource. If a plugin's port indices change, the
-revision of the plugin MUST be increased. Note that if port symbols
+The revision of an LV2 Resource. If a plugin's port indices change, the
+revision of the plugin MUST be increased. Note that if port symbols
change or are removed, the plugin URI MUST be changed, the revision acts
as a 'minor version' to distinguish otherwise compatible revisions of
-a plugin. A plugin that has changed indices MUST have a lv2:revision
+a plugin. A plugin that has changed indices MUST have a lv2:revision
property, if a plugin has no revision property it is assumed to be 0.
Anything that refers to a specific revision of a plugin (e.g. a serialisation
@@ -369,15 +368,15 @@ lv2:documentation a rdf:Property ;
rdfs:label "documentation" ;
rdfs:seeAlso <http://www.w3.org/TR/xhtml-basic/> ;
lv2:documentation """
-<p>Relates a Resource to documentation markup. The value of this property
+<p>Relates a Resource to documentation markup. The value of this property
MUST be a string literal which is a valid XHTML Basic 1.1 fragment suitable
-for use as the content of a &lt;div&gt; element. This can be used by
+for use as the content of a &lt;div&gt; element. This can be used by
hosts to provide rich online documentation or by tools to generate external
-documentation pages. The standard language tagging facility of RDF can be
+documentation pages. The standard language tagging facility of RDF can be
used to provide multi-lingual documentation.</p>
<p>XHTML Basic is a W3C Recommendation which defines a basic subset of XHTML
intended to be reasonable to implement with limited resources (e.g. on embedded
-devices). See <a href="http://www.w3.org/TR/xhtml-basic/#s_xhtmlmodules"
+devices). See <a href="http://www.w3.org/TR/xhtml-basic/#s_xhtmlmodules"
>XHTML Basic, Section 3</a> for a list of legal tags.</p>
""" .
@@ -404,7 +403,7 @@ A short name used as a machine and human readable identifier.
The first character must be one of _, a-z or A-Z and subsequenct characters can
be from _, a-z, A-Z and 0-9.
-A language tag MUST NOT be used on this property. The symbol uniquely
+A language tag MUST NOT be used on this property. The symbol uniquely
identifies the port on a plugin with a given URI (i.e. the plugin author MUST
change the plugin URI if a port symbol is changed or removed).
""" .
@@ -429,7 +428,7 @@ property without changing the Plugin URI.
lv2:Point a rdfs:Class ;
rdfs:label "Port value point" ;
rdfs:comment """
-Used to describe interesting values in a Port's range. To be valid it
+Used to describe interesting values in a Port's range. To be valid it
requires two properties: rdfs:label and rdf:value.
There are 3 specially defined Points in the LV2 specification (default,
@@ -604,12 +603,12 @@ lv2:reportsLatency a lv2:PortProperty ;
rdfs:label "Latency reporting port" ;
rdfs:comment """
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
+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
+plugin at any time. Where the latency is frequency dependent the plugin may
+choose any appropriate value. If a plugin introduces latency it MUST provide
EXACTLY ONE port with this property set which informs the host of the "correct"
-latency. In "fuzzy" cases the value output should be the most reasonable based
+latency. In "fuzzy" cases the value output should be the most reasonable based
on user expectation of input/output alignment (eg. musical delay/echo plugins
should not report their delay as latency, as it is an intentional effect).
""" .
@@ -644,8 +643,8 @@ lv2:enumeration a lv2:PortProperty ;
rdfs:label "Enumeration" ;
rdfs:comment """
Indicates that a port's only reasonable values are the scale points defined for
-that port. Though a host SHOULD NOT allow a user to set the value of such a
-port to anything other than a scale point. A plugin MUST operate reasonably
+that port. Though a host SHOULD NOT allow a user to set the value of such a
+port to anything other than a scale point. A plugin MUST operate reasonably
even if such a port has an input that is not a scale point, preferably by
simply choosing the largest enumeration value less than or equal to the
actual input value (i.e. round the input value down).