# LV2 Message Extension # Copyright (C) 2007-2010 David Robillard # # 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 msg: . @prefix atom: . @prefix doap: . @prefix foaf: . @prefix lv2: . @prefix rdf: . @prefix rdfs: . @prefix xsd: . a lv2:Specification ; doap:name "LV2 Message" ; doap:maintainer [ a foaf:Person ; foaf:name "David Robillard" ; foaf:homepage ; rdfs:seeAlso ] ; lv2:documentation """

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 LV2 URI Map extension, and the LV2 Atom extension.

""" . msg:MessageType a rdfs:Class ; rdfs:label "LV2 Message Type" ; lv2:documentation """

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).

A message in memory is simply an atom:Dict with at least one rdf:type that is a rdfs:subClassOf msg:MessageType. The definitions of various message types define what other key/value pairs can be expected in the message.

""" . msg:ControlPort a rdfs:Class ; rdfs:label "Control Port" ; rdfs:subClassOf lv2:Port ; lv2:documentation """

An input port used to control a plugin instance. A plugin has at most 1 msg: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).

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 atom:MessagePort or ev:EventPort).

""" . msg:ResponsePort a rdfs:Class ; rdfs:label "Response Port" ; rdfs:subClassOf lv2:Port ; lv2:documentation """

An output port used to notify the host about changes to a plugin instance or respond to messages send to its msg: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).

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 atom:MessagePort or ev:EventPort).

""" .