aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-10-19 03:30:37 +0000
committerDavid Robillard <d@drobilla.net>2010-10-19 03:30:37 +0000
commit2c3c074e9711897d4c2d46a136b51f58e83ef3f1 (patch)
tree007148d9801a614929f7a94a598422cc67ca801d
parent1810331c6e46a12db4af31e5b154418d00a81d41 (diff)
downloadlv2-2c3c074e9711897d4c2d46a136b51f58e83ef3f1.tar.xz
Merge command and message extensions.
-rw-r--r--ext/command.lv2/command.ttl73
-rw-r--r--ext/command.lv2/manifest.ttl7
-rw-r--r--ext/message.lv2/message.ttl66
-rw-r--r--wscript1
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>).
""" .
+
diff --git a/wscript b/wscript
index 3a3e9e7..4e8ad30 100644
--- a/wscript
+++ b/wscript
@@ -68,7 +68,6 @@ def build(bld):
ext = '''
atom
atom-port
- command
contexts
data-access
dyn-manifest