diff options
author | David Robillard <d@drobilla.net> | 2010-10-19 03:30:37 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2010-10-19 03:30:37 +0000 |
commit | 2c3c074e9711897d4c2d46a136b51f58e83ef3f1 (patch) | |
tree | 007148d9801a614929f7a94a598422cc67ca801d | |
parent | 1810331c6e46a12db4af31e5b154418d00a81d41 (diff) | |
download | lv2-2c3c074e9711897d4c2d46a136b51f58e83ef3f1.tar.xz |
Merge command and message extensions.
-rw-r--r-- | ext/command.lv2/command.ttl | 73 | ||||
-rw-r--r-- | ext/command.lv2/manifest.ttl | 7 | ||||
-rw-r--r-- | ext/message.lv2/message.ttl | 66 | ||||
-rw-r--r-- | wscript | 1 |
4 files changed, 42 insertions, 105 deletions
diff --git a/ext/command.lv2/command.ttl b/ext/command.lv2/command.ttl deleted file mode 100644 index ab8b82b..0000000 --- a/ext/command.lv2/command.ttl +++ /dev/null @@ -1,73 +0,0 @@ -# LV2 Command Extension -# Copyright (C) 2010 David Robillard <d@drobilla.net> -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. - -@prefix cmd: <http://lv2plug.in/ns/ext/command#> . -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@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> . -@prefix doap: <http://usefulinc.com/ns/doap#> . -@prefix foaf: <http://xmlns.com/foaf/0.1/> . - -<http://lv2plug.in/ns/ext/command> - a lv2:Specification ; - doap:name "LV2 Command" ; - doap:maintainer [ - a foaf:Person ; - foaf:name "David Robillard" ; - foaf:homepage <http://drobilla.net/> ; - rdfs:seeAlso <http://drobilla.net/drobilla.rdf> - ] ; - rdfs:comment """ -This extension defines special port types used for controlling and inspecting a -plugin instance by sending messages/commands and receiving responses to them. -It also allows plugins to send status updates to the host. The port types in -this extension only define an abstract notion of plugin control, not actual -data types and/or message semantics. They must be used with some other port -data type (e.g. event) to define the actual data format of port buffers. -As a result, this extension can be used in conjunction with any extension -that defines a port type suitable for controlling plugins. -""" . - -cmd:CommandPort a rdfs:Class ; - rdfs:label "Command Port" ; - rdfs:subClassOf lv2:Port ; - rdfs:comment """ -An input port used to control a plugin instance. A plugin has -at most 1 CommandPort. A CommandPort is always an lv2:InputPort. Hosts or -UIs send messages to the command port in order to control a plugin instance -in any way. This is an abstract port class, the actual format and semantics -of the port buffer (and messages) are defined by some other port type. -""" . - -cmd:StatusPort a rdfs:Class ; - rdfs:label "Command Port" ; - rdfs:subClassOf lv2:Port ; - rdfs:comment """ -An output port used to notify the host about changes to a plugin instance and -responses to commands. A plugin has at most 1 StatusPort. A StatusPort is -always an lv2:OutputPort. Any response to a command sent to the CommandPort -of the plugin will appear in the StatusPort output. The plugin may also emit -other messages (i.e. the contents of a StatusPort are not necessarily responses -to commands). This is an abstract port class, the actual format and semantics -of the port buffer (and messages) are defined by some other port type. -""" . - diff --git a/ext/command.lv2/manifest.ttl b/ext/command.lv2/manifest.ttl deleted file mode 100644 index 0590b62..0000000 --- a/ext/command.lv2/manifest.ttl +++ /dev/null @@ -1,7 +0,0 @@ -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -<http://lv2plug.in/ns/ext/command> - a lv2:Specification ; - rdfs:seeAlso <command.ttl> . - diff --git a/ext/message.lv2/message.ttl b/ext/message.lv2/message.ttl index 03072f3..172041a 100644 --- a/ext/message.lv2/message.ttl +++ b/ext/message.lv2/message.ttl @@ -38,11 +38,9 @@ rdfs:seeAlso <http://drobilla.net/drobilla.rdf> ] ; rdfs:comment """ -This extension defines the format for "messages" which can be used to -dynamically control an LV2 plugin instance at runtime. Messages are useful -for any kind of plugin control that does not fit well with control ports. -Plugins can both receive and send messages (and thus send messages to each -other) via any mechanism. +This extension defines a standard for LV2 "messages" which allow dynamic +control and investigation of plugin instances, by both hosts and other +plugins. This extension requires the host to support the <a href="http://lv2plug.in/ns/ext/uri-map">LV2 URI Map</a> extension, and the @@ -56,28 +54,48 @@ message:MessageType a rdfs:Class ; Base class for all types of LV2 Message. A type of message, which must be a resource (i.e. have a URI). This URI -is used as the selector component of a Message and is used by receivers -to interpret the meaning of messages (e.g. which components are present). +is used as the selector component of a Message and is used by receivers to +interpret the meaning of messages (e.g. which components are present). + +A message in memory is simply an <a href="http://lv2plug.in/ns/ext/atom#Dict" +>atom:Dict</a> with at least one rdf:type that is a rdfs:subClassOf +message:MessageType. The definitions of various message types define what +other key/value pairs can be expected in the message. """ . -message:Message a atom:AtomType ; - rdfs:label "Message" ; - rdfs:comment """ -A message is a communication from one component to another. Messages consist -of a selector URI, and a key/value dictionary. Keys in the dictionary are -URI mapped integers, and values are Atoms. The selector URI dictates how -the message is to be interpreted (e.g. the selector can be used as a "verb" -to build commands). +cmd:ControlPort a rdfs:Class ; + rdfs:label "Control Port" ; + rdfs:subClassOf lv2:Port ; + rdfs:comment """ +An input port used to control a plugin instance. A plugin has +at most 1 cmd:ControlPort. A ControlPort is always an lv2:InputPort. Hosts +can send messages to the control port in order to investigate or manipulate +a plugin instance (possibly on behalf of a UI or another plugin instance). -Messages are simple to serialise in many different formats (e.g. any RDF -serialisation including LV2 Turtle files, JSON, XML, etc) making network -transparency and persistence simple, assuming the implementation can -serialise Atoms. +This is an abstract port class, the actual format and semantics +of the port buffer (and messages) are defined by some other port type, i.e. +a cmdControlPort MUST have another type which defines the format and semantics +of the port buffer contents (likely candidates are +<a href="http://lv2plug.in/ns/ext/atom-port#MessagePort">atom-port:MessagePort</a> +or <a href="http://lv2plug.in/ns/ext/event#EventPort">ev:EventPort</a>). +""" . -Because all messages have a standard format, plugins and hosts can store, -communicate, or otherwise work with messages even if they do not understand -that particular message's selector. +cmd:ResponsePort a rdfs:Class ; + rdfs:label "Response Port" ; + rdfs:subClassOf lv2:Port ; + rdfs:comment """ +An output port used to notify the host about changes to a plugin instance +or respond to messages send to its cmd:ControlPort. A plugin has at most +1 StatusPort. A StatusPort is always an lv2:OutputPort. Any response to a +command sent to the CommandPort of the plugin will appear in the StatusPort +output. The plugin may also emit other messages (i.e. the contents of a +StatusPort are not necessarily responses to commands). -In memory, a Message is simply a uint32_t selector (a URI mapped integer) -followed by an atom:Blank. +This is an abstract port class, the actual format and semantics +of the port buffer (and messages) are defined by some other port type, i.e. +a cmdControlPort MUST have another type which defines the format and semantics +of the port buffer contents (likely candidates are +<a href="http://lv2plug.in/ns/ext/atom-port#MessagePort">atom-port:MessagePort</a> +or <a href="http://lv2plug.in/ns/ext/event#EventPort">ev:EventPort</a>). """ . + @@ -68,7 +68,6 @@ def build(bld): ext = ''' atom atom-port - command contexts data-access dyn-manifest |