From 62a094a802a06a6606849daadf57244d6bd1f0bf Mon Sep 17 00:00:00 2001
From: David Robillard
Atoms can and should be used anywhere values of various types must be stored -or transmitted. This extension defines port types, atom:ValuePort and -atom:MessagePort, which contain Atoms. The atom:Sequence type in conjunction -with atom:MessagePort is intended to replace the LV2 event extension.
+or transmitted. This extension defines a port type, atom:AtomPort, for +transmitting atoms via ports. The atom:Sequence type in an atom:AtomPort +replaces the LV2 event +extension.The types defined in this extension should be powerful enough to express almost any structure. Implementations SHOULD build structures out of the types @@ -431,59 +431,12 @@ atom:AtomPort
A port which contains an lv2:Atom. Ports of this type are connected to an LV2_Atom with a type specified by atom:bufferType.
-This is an abstract port type with incomplete semantics which can not be -used directly as a port type. Atom ports should be either a atom:ValuePort or -a atom:MessagePort.
- -Output ports with a variably sized type should be initialised by the host -before every run to an atom:Chunk with size set to the available space. The -plugin must set the size and type of this atom appropriately when writing -output.
-""" . - -atom:ValuePort - a rdfs:Class ; - rdfs:subClassOf atom:AtomPort ; - rdfs:label "Value Port" ; - lv2:documentation """ -An AtomPort that contains a persistent value. A value
is
-time-independent and may be used numerous times. A ValuePort is pure
in
-the sense that it may affect output but MUST NOT affect persistent plugin state
-in any externally visible way.
Value ports are essentially purely functional ports: if a plugin has only -value ports, that plugin is purely functional. Hosts may elect to cache output -and avoid calling run() if the output is already known according to these -rules.
-""" . - -atom:MessagePort - a rdfs:Class ; - rdfs:subClassOf atom:AtomPort ; - rdfs:label "Message Port" ; - lv2:documentation """ -An AtomPort that contains transient data which is consumed or -sent. The Atom contained in a MessagePort is time-dependent and only -valid for a single run invocation. Unlike a ValuePort, a MessagePort may be -used to manipulate internal plugin state.
- -Intuitively, a MessagePort contains a message
or event
which
-is reacted to once (not a value
which is computed with any
-number of times).
Output ports with a variably sized type MUST be initialised by the host +before every run() to an atom: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().
""" . atom:bufferType @@ -500,7 +453,7 @@ connected directly to an LV2_Atom_Double value is described like so:<plugin> lv2:port [ - a lv2:InputPort , atom:ValuePort ; + a lv2:InputPort , atom:AtomPort ; atom:bufferType atom:Double ; ] .@@ -532,7 +485,7 @@ MIDI events is described like so:
<plugin> lv2:port [ - a lv2:InputPort , atom:MessagePort ; + a lv2:InputPort , atom:AtomPort ; atom:bufferType atom:Sequence ; atom:supports midi:MidiEvent ; ] . -- cgit v1.2.1