From bb91f0334218ce1866aee3fd955871aae7c7550f Mon Sep 17 00:00:00 2001
From: David Robillard This extension defines a generic format for a typed piece of data, called an
-"Atom" (e.g. integers, strings, buffers, data structures,
+lv2:Atom (e.g. integers, strings, buffers, data structures,
etc). Atoms allow LV2 plugins and hosts to communicate, process, serialise,
and store values of any type via a generic mechanism (e.g. LV2 ports, events,
disk, shared memory, network). Atoms are, with one exception, Plain
@@ -60,12 +60,12 @@ implementations to be polymorphic and extensible. Atoms (the start of the LV2_Atom header) MUST be 32-bit aligned. Atoms can be communicated in many ways. Since an Atom is the payload of an
-Event, an EventPort
-can be used for communicating Atoms in realtime with sub-sample time stamp
+Event, an EventPort can
+be used for communicating Atoms in realtime with sub-sample time stamp
accuracy. This extension also defines two port types for connecting directly
-to a single Atom: ValuePort and MessagePort, which both have the same buffer format but different
-semantics (with respect to how the run() callback interprets the Atom).
Implementing this extension requires a facility for mapping URIs to integers, such as the LV2 URID @@ -122,8 +122,8 @@ atom:Literal
A UTF-8 encoded string literal, with an optional language tag or datatype.
This type is compatible with an RDF literal and is capable of expressing a
-string in any language, or a value of any type. An LV2_Atom_Literal has an ID lang
and datatype
followed by the
+string in any language, or a value of any type. An LV2_Atom_Literal has a
+URID lang
and datatype
followed by the
string data in UTF-8 encoding. The length of the string data in bytes is
size - (2 * sizeof(uint32_t))
, including the terminating NULL
character. The lang
field SHOULD be a URI of the form
@@ -193,9 +193,9 @@ atom:Vector
An LV2_Atom_Vector is a 16-bit elem_count
and
elem_type
followed by elem_count
atom bodies of type
-elem_type
. The element type must be a fixed size Atom type, i.e. the size of each element is the vector's
-size / elem_count
.
elem_type
. The element type must be a fixed size atom:Atom type,
+i.e. the size of each element is the vector's size /
+elem_count
.
For example, an atom:Vector containing 42 elements of type atom:Float looks like this in memory:
@@ -227,7 +227,7 @@ atom:Tuple rdfs:subClassOf atom:Atom ; rdfs:label "Tuple" ; lv2:documentation """ -A sequence of atoms with varying type
+
A sequence of lv2:Atom with varying type
and size
.
The body of a Tuple is simply a sequence of complete atoms, each aligned to
@@ -239,9 +239,9 @@ atom:Property
rdfs:subClassOf atom:Atom ;
rdfs:label "Property of a Thing" ;
lv2:documentation """
-A single property of some Object. An
-LV2_Atom_Property has an URID key
and
-Atom value
.
+A single property of some lv2:Thing. An
+LV2_Atom_Property has an atom:URID key
and an atom:Atom
+value
.
""" .
atom:Thing
@@ -249,7 +249,7 @@ atom:Thing
rdfs:subClassOf atom:Atom ;
rdfs:label "Thing" ;
lv2:documentation """
-
Abstract base class for a "Thing", i.e. an Atom with a +
Abstract base class for a "Thing", i.e. an atom:Atom with a
number of properties. An LV2_Object is an unsigned
32-bit integer context
and id
followed by a sequence
of LV2_Atom_Property .
map = NULL
, and may be 0
(the default context).
Note this is an abstract class, i.e. no Atom can exist with type =
-uri_to_id(atom:Thing)
. An Object is either a Resource or a Blank, but the
-body
always has the same binary format, LV2_Object. Thus, both
-named and anonymous objects can be handled with common code using only a 64-bit
-header for both.
body
always has the same binary format,
+LV2_Object. Thus, both named and anonymous objects can be handled with common
+code using only a 64-bit header for both.
""" .
atom:Resource
a rdfs:Class ;
rdfs:subClassOf atom:Thing ;
lv2:documentation """
-An Object where id
is the
-URI of the resource mapped to an ID.
+An atom:Thing where id
is the URI of the resource mapped to an
+atom:URID.
""" .
atom:Blank
a rdfs:Class ;
rdfs:subClassOf atom:Thing ;
lv2:documentation """
-An Object where id
is the blank node ID of
-the object, which is only meaningful within a certain limited scope
-(e.g. the container of the Blank) and MUST NOT be used as a global ID.
-In particular, id
is NOT an ID.
+An atom:Thing where id
is the blank node ID of the object, which
+is only meaningful within a certain limited scope (e.g. the container of the
+Blank) and MUST NOT be used as a global ID. In particular, id
is
+NOT an ID.
""" .
atom:Message
a rdfs:Class ;
rdfs:subClassOf atom:Thing ;
lv2:documentation """
-A where id
is a message type ID. Conceptually,
+A atom:Thing where id
is a message type ID. Conceptually,
a Message is identical to a Blank, but is a distinct type with a single type
field to allow simple and fast dispatch by handling code.
@@ -297,15 +296,6 @@ A Message may be serialised as a Blank by adding an rdf:type property with the
value id
unmapped to a URI.
""" .
-atom:Model
- a rdfs:Class ;
- rdfs:subClassOf atom:Atom ;
- rdfs:label "Model" ;
- lv2:documentation """
-A description of a set of objects. In memory, a Model is
-simply a sequence of objects.
-""" .
-
atom:Event
a rdfs:Class ;
rdfs:label "Event" ;
@@ -369,14 +359,14 @@ atom:AtomPort
rdfs:subClassOf lv2:Port ;
rdfs:label "Atom Port" ;
lv2:documentation """
-A port which contains an Atom. Ports of this type will +
A port which contains an lv2:Atom. Ports of this type will
be connected to a 32-bit aligned LV2_Atom immediately followed by
size
bytes of data.
This is an abstract port type, i.e. a port MUST NOT only be an AtomPort, but must be a more descriptive type that is a subclass of AtomPort which -defines the port's semantics (typically ValuePort -or MessagePort).
+defines the port's semantics (typically atom:ValuePort or atom:MessagePort). +Before calling a method on the plugin that writes to an AtomPort output, the host MUST set the size of the Atom in that output to the amount of @@ -427,7 +417,7 @@ atom:EventPort lv2:documentation """ A port used for communicating time-stamped atoms in the audio context. Ports of this type are connected to an LV2_Atom_Buffer, which contains a flat -time-stamped sequence of Events. +time-stamped sequence of atom:Event. This port type is intended as a simpler and atom compatible successor to ev:EventPort. @@ -439,8 +429,8 @@ atom:supports rdfs:range atom:Atom ; rdfs:label "supports" ; lv2:documentation """ -Indicates that a Port supports a certain Atom type. -This is distinct from the port type - e.g. the port type ValuePort can hold -atoms with many different types. This property is used to describe which -Atom types a Port expects to receive or send. +Indicates that a Port supports a certain atom:Atom type. This is distinct from +the port type - e.g. the port type ValuePort can hold atoms with many different +types. This property is used to describe which Atom types a Port expects to +receive or send. """ . -- cgit v1.2.1