aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/presets/presets.ttl
diff options
context:
space:
mode:
Diffstat (limited to 'lv2/presets/presets.ttl')
-rw-r--r--lv2/presets/presets.ttl105
1 files changed, 105 insertions, 0 deletions
diff --git a/lv2/presets/presets.ttl b/lv2/presets/presets.ttl
new file mode 100644
index 0000000..da7e9bb
--- /dev/null
+++ b/lv2/presets/presets.ttl
@@ -0,0 +1,105 @@
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix pset: <http://lv2plug.in/ns/ext/presets#> .
+@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/presets>
+ a owl:Ontology ;
+ rdfs:seeAlso <lv2-presets.doap.ttl> ;
+ lv2:documentation """
+<p>This vocabulary describes a format for presets (i.e. named sets of control
+values and possibly other state) for LV2 plugins. The structure of a
+pset:Preset is deliberately identical to that of an lv2:Plugin, and can be
+thought of as a plugin template or overlay.</p>
+
+<p>Presets may be defined in any bundle, including the plugin's bundle,
+separate third party preset bundles, or user preset bundles saved by hosts.
+Since preset data tends to be large, it is recommended that plugins describe
+presets in a separate file(s) to avoid slowing down hosts. The manifest.ttl of
+a bundle containing presets should list the presets like so:</p>
+
+<pre class="turtle-code">
+eg:mypreset
+ a pset:Preset ;
+ lv2:appliesTo eg:myplugin ;
+ rdfs:seeAlso &lt;mypreset.ttl&gt; .
+</pre>
+""" .
+
+pset:Bank
+ a rdfs:Class ;
+ rdfs:label "Bank" ;
+ rdfs:subClassOf [
+ a owl:Restriction ;
+ owl:onProperty rdfs:label ;
+ owl:someValuesFrom xsd:string ;
+ rdfs:comment "A Bank MUST have at least one string rdfs:label."
+ ] ;
+ rdfs:comment "A bank of presets." .
+
+pset:Preset
+ a rdfs:Class ;
+ rdfs:subClassOf lv2:PluginBase ;
+ rdfs:label "Preset" ;
+ rdfs:subClassOf [
+ a owl:Restriction ;
+ owl:onProperty rdfs:label ;
+ owl:someValuesFrom xsd:string ;
+ rdfs:comment "A Preset MUST have at least one string rdfs:label."
+ ] ;
+ lv2:documentation """
+<p>A Preset for an LV2 Plugin. The structure of a Preset deliberately mirrors that
+of a plugin, so existing predicates can be used to describe any data associated with
+the preset. For example:</p>
+
+<pre class="turtle-code">
+@prefix eg: &lt;http://example.org/&gt; .
+
+eg:mypreset
+ a pset:Preset ;
+ rdfs:label "One louder" ;
+ lv2:appliesTo eg:myplugin ;
+ lv2:port [
+ lv2:symbol "volume1" ;
+ pset:value 11.0
+ ] , [
+ lv2:symbol "volume2" ;
+ pset:value 11.0
+ ] .
+</pre>
+
+<p>A Preset SHOULD have at least one lv2:appliesTo property. Each Port on a
+Preset MUST have at least a lv2:symbol property and a pset:value property.</p>
+
+<p>Hosts SHOULD save user presets to a bundle in the user-local LV2 directory
+(e.g. ~/.lv2) with a name like
+<code>&lt;Plugin_Name&gt;_&lt;Preset_Name&gt;.preset.lv2</code>
+(e.g. <code>LV2_Amp_At_Eleven.preset.lv2</code>), where names are transformed
+to be valid LV2 symbols for maximum compatibility.</p>
+""" .
+
+pset:bank
+ a rdf:Property ;
+ rdfs:domain pset:Preset ;
+ rdfs:range pset:Bank ;
+ rdfs:label "bank" ;
+ rdfs:comment "The bank this preset belongs to." .
+
+pset:value
+ a rdf:Property ;
+ rdfs:domain lv2:Port ;
+ rdfs:label "value" ;
+ rdfs:comment """Specifies the value of a Port on some Preset. This property is used in a similar way to e.g. lv2:default.""" .
+
+pset:preset
+ a rdf:Property ;
+ rdfs:domain lv2:PluginBase ;
+ rdfs:range pset:Preset ;
+ rdfs:label "preset" ;
+ lv2:documentation """
+<p>Specifies the preset currently applied to a plugin instance. This property
+may be useful for saving state, or notifying a plugin instance at run-time
+about a preset change.</p>
+""" .