diff options
Diffstat (limited to 'lv2/morph')
-rw-r--r-- | lv2/morph/lv2-morph.doap.ttl | 22 | ||||
-rw-r--r-- | lv2/morph/manifest.ttl | 9 | ||||
-rw-r--r-- | lv2/morph/morph.h | 42 | ||||
-rw-r--r-- | lv2/morph/morph.ttl | 85 |
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> +""" . |