aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/morph
diff options
context:
space:
mode:
Diffstat (limited to 'lv2/morph')
-rw-r--r--lv2/morph/lv2-morph.doap.ttl22
-rw-r--r--lv2/morph/manifest.ttl9
-rw-r--r--lv2/morph/morph.h42
-rw-r--r--lv2/morph/morph.ttl85
4 files changed, 158 insertions, 0 deletions
diff --git a/lv2/morph/lv2-morph.doap.ttl b/lv2/morph/lv2-morph.doap.ttl
new file mode 100644
index 0000000..533cf10
--- /dev/null
+++ b/lv2/morph/lv2-morph.doap.ttl
@@ -0,0 +1,22 @@
+@prefix dcs: <http://ontologi.es/doap-changeset#> .
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<http://lv2plug.in/ns/ext/morph>
+ a doap:Project ;
+ doap:name "LV2 Morph" ;
+ doap:shortdesc "Ports that can dynamically change type." ;
+ doap:created "2012-05-22" ;
+ doap:developer <http://drobilla.net/drobilla#me> ;
+ doap:release [
+ doap:revision "1.0" ;
+ doap:created "2012-10-14" ;
+ doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
+ dcs:blame <http://drobilla.net/drobilla#me> ;
+ dcs:changeset [
+ dcs:item [
+ rdfs:label "Initial release."
+ ]
+ ]
+ ] .
diff --git a/lv2/morph/manifest.ttl b/lv2/morph/manifest.ttl
new file mode 100644
index 0000000..40b0f2b
--- /dev/null
+++ b/lv2/morph/manifest.ttl
@@ -0,0 +1,9 @@
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<http://lv2plug.in/ns/ext/morph>
+ a lv2:Specification ;
+ lv2:minorVersion 1 ;
+ lv2:microVersion 0 ;
+ rdfs:seeAlso <morph.ttl> .
+
diff --git a/lv2/morph/morph.h b/lv2/morph/morph.h
new file mode 100644
index 0000000..884af74
--- /dev/null
+++ b/lv2/morph/morph.h
@@ -0,0 +1,42 @@
+/*
+ Copyright 2012-2016 David Robillard <http://drobilla.net>
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+/**
+ @defgroup morph Morph
+
+ Ports that can dynamically change type, see <http://lv2plug.in/ns/ext/morph>
+ for details.
+
+ @{
+*/
+
+#ifndef LV2_MORPH_H
+#define LV2_MORPH_H
+
+#define LV2_MORPH_URI "http://lv2plug.in/ns/ext/morph" ///< http://lv2plug.in/ns/ext/morph
+#define LV2_MORPH_PREFIX LV2_MORPH_URI "#" ///< http://lv2plug.in/ns/ext/morph#
+
+#define LV2_MORPH__AutoMorphPort LV2_MORPH_PREFIX "AutoMorphPort" ///< http://lv2plug.in/ns/ext/morph#AutoMorphPort
+#define LV2_MORPH__MorphPort LV2_MORPH_PREFIX "MorphPort" ///< http://lv2plug.in/ns/ext/morph#MorphPort
+#define LV2_MORPH__interface LV2_MORPH_PREFIX "interface" ///< http://lv2plug.in/ns/ext/morph#interface
+#define LV2_MORPH__supportsType LV2_MORPH_PREFIX "supportsType" ///< http://lv2plug.in/ns/ext/morph#supportsType
+#define LV2_MORPH__currentType LV2_MORPH_PREFIX "currentType" ///< http://lv2plug.in/ns/ext/morph#currentType
+
+#endif /* LV2_MORPH_H */
+
+/**
+ @}
+*/
diff --git a/lv2/morph/morph.ttl b/lv2/morph/morph.ttl
new file mode 100644
index 0000000..2a2e9fc
--- /dev/null
+++ b/lv2/morph/morph.ttl
@@ -0,0 +1,85 @@
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix morph: <http://lv2plug.in/ns/ext/morph#> .
+@prefix opts: <http://lv2plug.in/ns/ext/options#> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@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#> .
+
+<http://lv2plug.in/ns/ext/morph>
+ a owl:Ontology ;
+ rdfs:seeAlso <morph.h> ,
+ <lv2-morph.doap.ttl> ;
+ lv2:documentation """
+<p>This extension defines two port types: morph:MorphPort, which has a
+host-configurable type, and morph:AutoMorphPort, which may automatically change
+type when a MorphPort's type is changed. These ports always have a default
+type and work normally work in hosts that are unaware of this extension. Thus,
+this extension provides a backwards compatibility mechanism which allows
+plugins to use new port types but gracefully fall back to a default type in
+hosts that do not support them.</p>
+
+<p>This extension only defines port types and properties for describing morph
+ports. The actual run-time switching is done via the opts:interface API.</p>
+""" .
+
+morph:MorphPort
+ a rdfs:Class ,
+ owl:Class ;
+ rdfs:subClassOf lv2:Port ;
+ rdfs:label "Morph Port" ;
+ lv2:documentation """
+<p>Ports of this type MUST have another type which defines the default buffer
+format (e.g. lv2:ControlPort) but can be dynamically changed to a different
+type in hosts that support opts:interface.</p>
+
+<p>The host may change the type of a MorphPort by setting its morph:currentType
+with LV2_Options_Interface::set(). If the plugin has any morph:AutoMorphPort
+ports, the host MUST check their types after changing any port type since they
+may have changed.</p> """ .
+
+morph:AutoMorphPort
+ a rdfs:Class ,
+ owl:Class ;
+ rdfs:subClassOf lv2:Port ;
+ rdfs:label "Auto Morph Port" ;
+ lv2:documentation """
+<p>Ports of this type MUST have another type which defines the default buffer
+format (e.g. lv2:ControlPort) but may dynamically change types based on the
+configured types of any morph:MorphPort ports on the same plugin instance.</p>
+
+<p>The type of a port may only change in response to a host call to
+LV2_Options_Interface::set(). Whenever any port type on the instance changes,
+the host MUST check the type of all morph:AutoMorphPort ports with
+LV2_Options_Interface::get() before calling run() again, since they may have
+changed. If the type of any port is zero, it means the current configuration
+is invalid and the plugin may not be run (unless that port is
+lv2:connectionOptional and connected to NULL).</p>
+
+<p>This is mainly useful for outputs whose type depends on the type of
+corresponding inputs.</p>
+""" .
+
+morph:supportsType
+ a rdf:Property ,
+ owl:ObjectProperty ;
+ rdfs:domain morph:MorphPort ;
+ rdfs:label "supports type" ;
+ lv2:documentation """
+<p>Indicates that a port supports being switched to a certain type. A
+MorphPort MUST list each type it supports being switched to in the plugin data
+using this property.</p>
+""" .
+
+morph:currentType
+ a rdf:Property ,
+ opts:Option ,
+ owl:ObjectProperty ;
+ rdfs:domain morph:MorphPort ;
+ rdfs:label "current type" ;
+ lv2:documentation """
+<p>The currently active type of the port. This is for dynamic use as an option
+and SHOULD NOT be listed in the static plugin data.</p>
+""" .