aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/morph.lv2
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-07-07 18:59:32 -0400
committerDavid Robillard <d@drobilla.net>2022-07-17 18:14:00 -0400
commit1eccbe4355685b322194df72b5de2382d5290b3b (patch)
tree0677b5c2f577a5024c351a164527f4bdd91a639b /lv2/morph.lv2
parentd4a970f6962dda28133290194832b726b566ddab (diff)
downloadlv2-1eccbe4355685b322194df72b5de2382d5290b3b.tar.xz
Rearrange source tree to be directly usable by dependants
This allows the LV2 source distribution to be used as an include path for compilers and an LV2_PATH for applications, at the expense of self-contained bundles. That's a nice idea, but it made LV2 itself weird and annoying to depend on. This rearranges things so that directories in the source tree correspond more closely to installation directories. To make this possible, the "aux" directory in the documentation output has been changed to "style", to avoid the reserved name "aux" on Windows.
Diffstat (limited to 'lv2/morph.lv2')
-rw-r--r--lv2/morph.lv2/manifest.ttl9
-rw-r--r--lv2/morph.lv2/morph.meta.ttl90
-rw-r--r--lv2/morph.lv2/morph.ttl46
3 files changed, 145 insertions, 0 deletions
diff --git a/lv2/morph.lv2/manifest.ttl b/lv2/morph.lv2/manifest.ttl
new file mode 100644
index 0000000..7c85cfd
--- /dev/null
+++ b/lv2/morph.lv2/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.lv2/morph.meta.ttl b/lv2/morph.lv2/morph.meta.ttl
new file mode 100644
index 0000000..c247783
--- /dev/null
+++ b/lv2/morph.lv2/morph.meta.ttl
@@ -0,0 +1,90 @@
+@prefix dcs: <http://ontologi.es/doap-changeset#> .
+@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 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."
+ ]
+ ]
+ ] ;
+ lv2:documentation """
+
+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.
+
+This extension only defines port types and properties for describing morph
+ports. The actual run-time switching is done via the opts:interface API.
+
+"""^^lv2:Markdown .
+
+morph:MorphPort
+ lv2:documentation """
+
+Ports of this type MUST have another type which defines the default buffer
+format (for example lv2:ControlPort) but can be dynamically changed to a
+different type in hosts that support opts:interface.
+
+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.
+
+"""^^lv2:Markdown .
+
+morph:AutoMorphPort
+ lv2:documentation """
+
+Ports of this type MUST have another type which defines the default buffer
+format (for example, lv2:ControlPort) but may dynamically change types based on
+the configured types of any morph:MorphPort ports on the same plugin instance.
+
+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).
+
+This is mainly useful for outputs whose type depends on the type of
+corresponding inputs.
+
+"""^^lv2:Markdown .
+
+morph:supportsType
+ lv2:documentation """
+
+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.
+
+"""^^lv2:Markdown .
+
+morph:currentType
+ lv2:documentation """
+
+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.
+
+"""^^lv2:Markdown .
+
diff --git a/lv2/morph.lv2/morph.ttl b/lv2/morph.lv2/morph.ttl
new file mode 100644
index 0000000..9b8ef51
--- /dev/null
+++ b/lv2/morph.lv2/morph.ttl
@@ -0,0 +1,46 @@
+@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:label "LV2 Morph" ;
+ rdfs:comment "Ports that can dynamically change type." ;
+ rdfs:seeAlso <morph.meta.ttl> ;
+ owl:imports <http://lv2plug.in/ns/lv2core> .
+
+morph:MorphPort
+ a rdfs:Class ,
+ owl:Class ;
+ rdfs:subClassOf lv2:Port ;
+ rdfs:label "Morph Port" ;
+ rdfs:comment "A port which can be switched to another type." .
+
+morph:AutoMorphPort
+ a rdfs:Class ,
+ owl:Class ;
+ rdfs:subClassOf lv2:Port ;
+ rdfs:label "Auto Morph Port" ;
+ rdfs:comment "A port that can change its type based on that of another." .
+
+morph:supportsType
+ a rdf:Property ,
+ owl:ObjectProperty ;
+ rdfs:domain morph:MorphPort ;
+ rdfs:label "supports type" ;
+ rdfs:comment "A type that a port supports being switched to." .
+
+morph:currentType
+ a rdf:Property ,
+ opts:Option ,
+ owl:ObjectProperty ;
+ rdfs:domain morph:MorphPort ;
+ rdfs:label "current type" ;
+ rdfs:comment "The currently active type of the port." .
+