65juce::lv2::BundleResource
68R
"lv2ttl(@prefix ia: <http://lv2plug.in/ns/ext/instance-access#> .
69@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
70@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
72<http://lv2plug.in/ns/ext/instance-access>
74 rdfs:label "instance access" ;
75 rdfs:comment "A feature that provides access to a plugin instance." ;
76 rdfs:seeAlso <instance-access.h> ,
77 <instance-access.meta.ttl> .
81, juce::lv2::BundleResource
84R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
85@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
87<http://lv2plug.in/ns/ext/instance-access>
91 rdfs:seeAlso <instance-access.ttl> .
95, juce::lv2::BundleResource
97"instance-access.meta.ttl",
98R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
99@prefix doap: <http://usefulinc.com/ns/doap#> .
100@prefix foaf: <http://xmlns.com/foaf/0.1/> .
101@prefix ia: <http://lv2plug.in/ns/ext/instance-access#> .
102@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
103@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
105<http://lv2plug.in/ns/ext/instance-access>
107 doap:license <http://opensource.org/licenses/isc> ;
108 doap:name "LV2 Instance Access" ;
109 doap:shortdesc "Provides access to the LV2_Handle of a plugin." ;
110 doap:created "2010-10-04" ;
111 doap:developer <http://drobilla.net/drobilla#me> ;
113 doap:revision "1.6" ;
114 doap:created "2012-04-17" ;
115 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
116 dcs:blame <http://drobilla.net/drobilla#me> ;
119 rdfs:label "Merge with unified LV2 package."
123 doap:revision "1.4" ;
124 doap:created "2011-11-21" ;
125 doap:file-release <http://lv2plug.in/spec/lv2-instance-access-1.4.tar.bz2> ;
126 dcs:blame <http://drobilla.net/drobilla#me> ;
129 rdfs:label "Update packaging."
131 rdfs:label "Improve documentation."
135 doap:revision "1.2" ;
136 doap:created "2011-05-26" ;
137 doap:file-release <http://lv2plug.in/spec/lv2-instance-access-1.2.tar.bz2> ;
138 dcs:blame <http://drobilla.net/drobilla#me> ;
141 rdfs:label "Add build system for installation."
143 rdfs:label "Switch to ISC license."
147 doap:revision "1.0" ;
148 doap:created "2010-10-04" ;
149 doap:file-release <http://lv2plug.in/spec/lv2-instance-access-1.0.tar.gz> ;
150 dcs:blame <http://drobilla.net/drobilla#me> ;
153 rdfs:label "Initial release."
157 lv2:documentation """
159This extension defines a feature which allows plugin UIs to get a direct handle
160to an LV2 plugin instance (LV2_Handle), if possible.
162Note that the use of this extension by UIs violates the important principle of
163UI/plugin separation, and is potentially a source of many problems.
164Accordingly, **use of this extension is highly discouraged**, and plugins
165should not expect hosts to support it, since it is often impossible to do so.
167To support this feature the host must pass an LV2_Feature struct to the UI
168instantiate method with URI LV2_INSTANCE_ACCESS_URI and data pointed directly
169to the LV2_Handle of the plugin instance.
182juce::lv2::BundleResource
185R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
186@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
188<http://lv2plug.in/ns/ext/port-groups>
189 a lv2:Specification ;
192 rdfs:seeAlso <port-groups.ttl> .
196, juce::lv2::BundleResource
199R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
200@prefix owl: <http://www.w3.org/2002/07/owl#> .
201@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> .
202@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
203@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
204@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
206<http://lv2plug.in/ns/ext/port-groups>
208 rdfs:label "LV2 Port Groups" ;
209 rdfs:comment "Multi-channel groups of LV2 ports." ;
210 rdfs:seeAlso <port-groups.meta.ttl> .
214 rdfs:label "Port Group" ;
217 owl:onProperty lv2:symbol ;
219 rdfs:comment "A Group MUST have exactly one string lv2:symbol."
221 rdfs:comment "A set of ports that are logicaly grouped together." .
225 rdfs:subClassOf pg:Group ;
226 rdfs:label "Input Group" ;
227 rdfs:comment "A group which contains exclusively inputs." .
231 rdfs:subClassOf pg:Group ;
232 rdfs:label "Output Group" ;
233 rdfs:comment "A group which contains exclusively outputs." .
237 rdfs:label "Element" ;
238 rdfs:comment "An ordered element of a group." ;
241 owl:onProperty lv2:designation ;
243 rdfs:comment "An element MUST have exactly one lv2:designation."
245 rdfs:comment "An element of a group, with a designation and optional index." .
250 rdfs:range pg:Element ;
251 rdfs:label "element" ;
252 rdfs:comment "An element within a port group." .
257 rdfs:label "side-chain of" ;
258 rdfs:comment "Port or group is a side chain of another." .
263 owl:FunctionalProperty ;
264 rdfs:domain pg:Group ;
265 rdfs:range pg:Group ;
266 rdfs:label "sub-group of" ;
267 rdfs:comment "Group is a child of another group." .
272 rdfs:domain pg:OutputGroup ;
273 rdfs:range pg:InputGroup ;
274 rdfs:label "source" ;
275 rdfs:comment "Port or group that this group is the output of." .
280 owl:FunctionalProperty ;
281 rdfs:domain lv2:Plugin ;
282 rdfs:range pg:InputGroup ;
283 rdfs:label "main input" ;
284 rdfs:comment "Input group that is the primary input of the plugin." .
289 owl:FunctionalProperty ;
290 rdfs:domain lv2:Plugin ;
291 rdfs:range pg:OutputGroup ;
292 rdfs:label "main output" ;
293 rdfs:comment "Output group that is the primary output of the plugin." .
298 owl:FunctionalProperty ;
299 rdfs:domain lv2:Port ;
300 rdfs:range pg:Group ;
302 rdfs:comment "Group that this port is a part of." .
306 rdfs:subClassOf pg:Group ;
307 rdfs:label "Discrete Group" ;
308 rdfs:comment "A group of discrete channels." .
313 rdfs:comment "The left channel of a stereo audio group." .
318 rdfs:comment "The right channel of a stereo audio group." .
322 rdfs:label "center" ;
323 rdfs:comment "The center channel of a discrete audio group." .
328 rdfs:comment "The side channel of a mid-side audio group." .
332 rdfs:label "center left" ;
333 rdfs:comment "The center-left channel of a 7.1 wide surround sound group." .
337 rdfs:label "center right" ;
338 rdfs:comment "The center-right channel of a 7.1 wide surround sound group." .
342 rdfs:label "side left" ;
343 rdfs:comment "The side-left channel of a 6.1 or 7.1 surround sound group." .
347 rdfs:label "side right" ;
348 rdfs:comment "The side-right channel of a 6.1 or 7.1 surround sound group." .
352 rdfs:label "rear left" ;
353 rdfs:comment "The rear-left channel of a surround sound group." .
357 rdfs:label "rear right" ;
358 rdfs:comment "The rear-right channel of a surround sound group." .
362 rdfs:label "rear center" ;
363 rdfs:comment "The rear-center channel of a surround sound group." .
365pg:lowFrequencyEffects
367 rdfs:label "low-frequency effects" ;
368 rdfs:comment "The LFE channel of a *.1 surround sound group." .
372 rdfs:subClassOf pg:DiscreteGroup ;
374 rdfs:comment "A single channel audio group." ;
377 lv2:designation pg:center
382 rdfs:subClassOf pg:DiscreteGroup ;
383 rdfs:label "Stereo" ;
384 rdfs:comment "A 2-channel discrete stereo audio group." ;
387 lv2:designation pg:left
390 lv2:designation pg:right
395 rdfs:subClassOf pg:DiscreteGroup ;
396 rdfs:label "Mid-Side Stereo" ;
397 rdfs:comment "A 2-channel mid-side stereo audio group." ;
400 lv2:designation pg:center
403 lv2:designation pg:side
406pg:ThreePointZeroGroup
408 rdfs:subClassOf pg:DiscreteGroup ;
409 rdfs:label "3.0 Surround" ;
410 rdfs:comment "A 3.0 discrete surround sound group." ;
413 lv2:designation pg:left
416 lv2:designation pg:right
419 lv2:designation pg:rearCenter
424 rdfs:subClassOf pg:DiscreteGroup ;
425 rdfs:label "4.0 Surround" ;
426 rdfs:comment "A 4.0 (Quadraphonic) discrete surround sound group." ;
429 lv2:designation pg:left
432 lv2:designation pg:center
435 lv2:designation pg:right
438 lv2:designation pg:rearCenter
443 rdfs:subClassOf pg:DiscreteGroup ;
444 rdfs:label "5.0 Surround" ;
445 rdfs:comment "A 5.0 (3-2 stereo) discrete surround sound group." ;
448 lv2:designation pg:left
451 lv2:designation pg:center
454 lv2:designation pg:right
457 lv2:designation pg:rearLeft
460 lv2:designation pg:rearRight
465 rdfs:subClassOf pg:DiscreteGroup ;
466 rdfs:label "5.1 Surround" ;
467 rdfs:comment "A 5.1 (3-2 stereo with sub) discrete surround sound group." ;
470 lv2:designation pg:left
473 lv2:designation pg:center
476 lv2:designation pg:right
479 lv2:designation pg:rearLeft
482 lv2:designation pg:rearRight
485 lv2:designation pg:lowFrequencyEffects
490 rdfs:subClassOf pg:DiscreteGroup ;
491 rdfs:label "6.1 Surround" ;
492 rdfs:comment "A 6.1 discrete surround sound group." ;
495 lv2:designation pg:left
498 lv2:designation pg:center
501 lv2:designation pg:right
504 lv2:designation pg:sideLeft
507 lv2:designation pg:sideRight
510 lv2:designation pg:rearCenter
513 lv2:designation pg:lowFrequencyEffects
518 rdfs:subClassOf pg:DiscreteGroup ;
519 rdfs:label "7.1 Surround" ;
520 rdfs:comment "A 7.1 discrete surround sound group." ;
523 lv2:designation pg:left
526 lv2:designation pg:center
529 lv2:designation pg:right
532 lv2:designation pg:sideLeft
535 lv2:designation pg:sideRight
538 lv2:designation pg:rearLeft
541 lv2:designation pg:rearRight
544 lv2:designation pg:lowFreq)lv2ttl" R"lv2ttl(uencyEffects
547pg:SevenPointOneWideGroup
549 rdfs:subClassOf pg:DiscreteGroup ;
550 rdfs:label "7.1 Surround (Wide)" ;
551 rdfs:comment "A 7.1 wide discrete surround sound group." ;
554 lv2:designation pg:left
557 lv2:designation pg:centerLeft
560 lv2:designation pg:center
563 lv2:designation pg:centerRight
566 lv2:designation pg:right
569 lv2:designation pg:rearLeft
572 lv2:designation pg:rearRight
575 lv2:designation pg:lowFrequencyEffects
580 owl:DatatypeProperty ;
581 rdfs:domain lv2:Channel ;
582 rdfs:range rdf:PlainLiteral ;
583 rdfs:label "ambisonic letter code" ;
584 rdfs:comment "The YuMa letter code for an Ambisonic channel." .
588 owl:DatatypeProperty ;
589 rdfs:domain lv2:Channel ;
590 rdfs:range xsd:integer ;
591 rdfs:label "harmonic degree" ;
592 rdfs:comment "The degree coefficient (l) of the spherical harmonic for an Ambisonic channel." .
596 owl:DatatypeProperty ;
597 rdfs:domain lv2:Channel ;
598 rdfs:range xsd:integer ;
599 rdfs:label "harmonic index" ;
600 rdfs:comment "The index coefficient (m) of the spherical harmonic for an Ambisonic channel." .
605 pg:harmonicDegree 0 ;
608 rdfs:comment "Ambisonic channel 0 (W): degree 0, index 0." .
613 pg:harmonicDegree 1 ;
614 pg:harmonicIndex -1 ;
616 rdfs:comment "Ambisonic channel 1 (Y): degree 1, index -1." .
621 pg:harmonicDegree 1 ;
624 rdfs:comment "Ambisonic channel 2 (Z): degree 1, index 0." .
629 pg:harmonicDegree 1 ;
632 rdfs:comment "Ambisonic channel 3 (X): degree 1, index 1." .
637 pg:harmonicDegree 2 ;
638 pg:harmonicIndex -2 ;
640 rdfs:comment "Ambisonic channel 4 (V): degree 2, index -2." .
645 pg:harmonicDegree 2 ;
646 pg:harmonicIndex -1 ;
648 rdfs:comment "Ambisonic channel 5 (T): degree 2, index -1." .
653 pg:harmonicDegree 2 ;
656 rdfs:comment "Ambisonic channel 6 (R): degree 2, index 0." .
661 pg:harmonicDegree 2 ;
664 rdfs:comment "Ambisonic channel 7 (S): degree 2, index 1." .
669 pg:harmonicDegree 2 ;
672 rdfs:comment "Ambisonic channel 8 (U): degree 2, index 2." .
677 pg:harmonicDegree 3 ;
678 pg:harmonicIndex -3 ;
680 rdfs:comment "Ambisonic channel 9 (Q): degree 3, index -3." .
685 pg:harmonicDegree 3 ;
686 pg:harmonicIndex -2 ;
688 rdfs:comment "Ambisonic channel 10 (O): degree 3, index -2." .
693 pg:harmonicDegree 3 ;
694 pg:harmonicIndex -1 ;
696 rdfs:comment "Ambisonic channel 11 (M): degree 3, index -1." .
701 pg:harmonicDegree 3 ;
704 rdfs:comment "Ambisonic channel 12 (K): degree 3, index 0." .
709 pg:harmonicDegree 3 ;
712 rdfs:comment "Ambisonic channel 13 (L): degree 3, index 1." .
717 pg:harmonicDegree 3 ;
720 rdfs:comment "Ambisonic channel 14 (N): degree 3, index 2." .
725 pg:harmonicDegree 3 ;
728 rdfs:comment "Ambisonic channel 15 (P): degree 3, index 3." .
732 rdfs:subClassOf pg:Group ;
733 rdfs:label "Ambisonic Group" ;
734 rdfs:comment "A group of Ambisonic channels." .
736pg:AmbisonicBH1P0Group
738 rdfs:subClassOf pg:AmbisonicGroup ;
739 rdfs:label "Ambisonic BH1P0" ;
740 rdfs:comment "Ambisonic B stream of horizontal order 1 and peripheral order 0." ;
743 lv2:designation pg:ACN0
746 lv2:designation pg:ACN1
749 lv2:designation pg:ACN3
752pg:AmbisonicBH1P1Group
754 rdfs:subClassOf pg:AmbisonicGroup ;
755 rdfs:label "Ambisonic BH1P1" ;
756 rdfs:comment "Ambisonic B stream of horizontal order 1 and peripheral order 1." ;
759 lv2:designation pg:ACN0
762 lv2:designation pg:ACN1
765 lv2:designation pg:ACN2
768 lv2:designation pg:ACN3
771pg:AmbisonicBH2P0Group
773 rdfs:subClassOf pg:AmbisonicGroup ;
774 rdfs:label "Ambisonic BH2P0" ;
775 rdfs:comment "Ambisonic B stream of horizontal order 2 and peripheral order 0." ;
778 lv2:designation pg:ACN0
781 lv2:designation pg:ACN1
784 lv2:designation pg:ACN3
787 lv2:designation pg:ACN4
790 lv2:designation pg:ACN8
793pg:AmbisonicBH2P1Group
795 rdfs:subClassOf pg:AmbisonicGroup ;
796 rdfs:label "Ambisonic BH2P1" ;
797 rdfs:comment "Ambisonic B stream of horizontal order 2 and peripheral order 1." ;
800 lv2:designation pg:ACN0
803 lv2:designation pg:ACN1
806 lv2:designation pg:ACN2
809 lv2:designation pg:ACN3
812 lv2:designation pg:ACN4
815 lv2:designation pg:ACN8
818pg:AmbisonicBH2P2Group
820 rdfs:subClassOf pg:AmbisonicGroup ;
821 rdfs:label "Ambisonic BH2P2" ;
822 rdfs:comment "Ambisonic B stream of horizontal order 2 and peripheral order 2." ;
825 lv2:designation pg:ACN0
828 lv2:designation pg:ACN1
831 lv2:designation pg:ACN2
834 lv2:designation pg:ACN3
837 lv2:designation pg:ACN4
840 lv2:designation pg:ACN5
843 lv2:designation pg:ACN6
846 lv2:designation pg:ACN7
849 lv2:designation pg:ACN8
852pg:AmbisonicBH3P0Group
854 rdfs:subClassOf pg:AmbisonicGroup ;
855 rdfs:label "Ambisonic BH3P0" ;
856 rdfs:comment "Ambisonic B stream of horizontal order 3 and peripheral order 0." ;
859 lv2:designation pg:ACN0
862 lv2:designation pg:ACN1
865 lv2:designation pg:ACN3
868 lv2:designation pg:ACN4
871 lv2:designation pg:ACN8
874 lv2:designation pg:ACN9
877 lv2:designation pg:ACN15
880pg:AmbisonicBH3P1Group
882 rdfs:subClassOf pg:AmbisonicGroup ;
883 rdfs:label "Ambisonic BH3P1" ;
884 rdfs:comment "Ambisonic B stream of horizontal order 3 and peripheral order 1." ;
887 lv2:designation pg:ACN0
890 lv2:designation pg:ACN1
893 lv2:designation pg:ACN2
896 lv2:designation pg:ACN3
899 lv2:designation pg:ACN4
902 lv2:designation pg:ACN8
905 lv2:designation pg:ACN9
908 lv2:designation pg:ACN15
911pg:AmbisonicBH3P2Group
913 rdfs:subClassOf pg:AmbisonicGroup ;
914 rdfs:label "Ambisonic BH3P2" ;
915 rdfs:comment "Ambisonic B stream of horizontal order 3 and peripheral order 2." ;
916 pg:e)lv2ttl" R"lv2ttl(lement [
918 lv2:designation pg:ACN0
921 lv2:designation pg:ACN1
924 lv2:designation pg:ACN2
927 lv2:designation pg:ACN3
930 lv2:designation pg:ACN4
933 lv2:designation pg:ACN5
936 lv2:designation pg:ACN6
939 lv2:designation pg:ACN7
942 lv2:designation pg:ACN8
945 lv2:designation pg:ACN9
948 lv2:designation pg:ACN15
951pg:AmbisonicBH3P3Group
953 rdfs:subClassOf pg:AmbisonicGroup ;
954 rdfs:label "Ambisonic BH3P3" ;
955 rdfs:comment "Ambisonic B stream of horizontal order 3 and peripheral order 3." ;
958 lv2:designation pg:ACN0
961 lv2:designation pg:ACN1
964 lv2:designation pg:ACN2
967 lv2:designation pg:ACN3
970 lv2:designation pg:ACN4
973 lv2:designation pg:ACN5
976 lv2:designation pg:ACN6
979 lv2:designation pg:ACN7
982 lv2:designation pg:ACN8
985 lv2:designation pg:ACN9
988 lv2:designation pg:ACN10
991 lv2:designation pg:ACN11
994 lv2:designation pg:ACN12
997 lv2:designation pg:ACN13
1000 lv2:designation pg:ACN14
1003 lv2:designation pg:ACN15
1008, juce::lv2::BundleResource
1010"port-groups.meta.ttl",
1011R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
1012@prefix doap: <http://usefulinc.com/ns/doap#> .
1013@prefix foaf: <http://xmlns.com/foaf/0.1/> .
1014@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
1015@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> .
1016@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
1018<http://lv2plug.in/ns/ext/port-groups>
1020 doap:license <http://opensource.org/licenses/isc> ;
1021 doap:name "LV2 Port Groups" ;
1022 doap:shortdesc "Multi-channel groups of LV2 ports." ;
1023 doap:created "2008-00-00" ;
1024 doap:developer <http://lv2plug.in/ns/meta#larsl> ,
1025 <http://drobilla.net/drobilla#me> ;
1027 doap:revision "1.4" ;
1028 doap:created "2020-04-26" ;
1029 doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ;
1030 dcs:blame <http://drobilla.net/drobilla#me> ;
1033 rdfs:label "Replace broken links with detailed Ambisonic channel descriptions."
1035 rdfs:label "Remove incorrect type of pg:letterCode."
1039 doap:revision "1.2" ;
1040 doap:created "2012-10-14" ;
1041 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
1042 dcs:blame <http://drobilla.net/drobilla#me> ;
1045 rdfs:label "Use consistent label style."
1049 doap:revision "1.0" ;
1050 doap:created "2012-04-17" ;
1051 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
1052 dcs:blame <http://drobilla.net/drobilla#me> ;
1055 rdfs:label "Initial release."
1061 lv2:documentation """
1063A group logically combines ports which should be considered part of the same
1064stream. For example, two audio ports in a group may form a stereo stream.
1066Like ports, groups have a lv2:symbol that is unique within the context of the
1067plugin, where group symbols and port symbols reside in the same namespace. In
1068other words, a group on a plugin MUST NOT have the same symbol as any other
1069group or port on that plugin. This makes it possible to uniquely reference a
1070port or group on a plugin with a single identifier and no context.
1072Group definitions may be shared across plugins for brevity. For example, a
1073plugin collection may define a single URI for a pg:StereoGroup with the symbol
1074"input" and use it in many plugins.
1079 lv2:documentation """
1081Indicates that this port or group should be considered a "side chain" of some
1082other port or group. The precise definition of "side chain" depends on the
1083plugin, but in general this group should be considered a modifier to some other
1084group, rather than an independent input itself.
1089 lv2:documentation """
1091Indicates that this group is a child of another group. This property has no
1092meaning with respect to plugin execution, but the host may find this
1093information useful to provide a better user interface. Note that being a
1094sub-group does not relax the restriction that the group MUST have a unique
1095symbol with respect to the plugin.
1100 lv2:documentation """
1102Indicates that this port or group should be considered the "result" of some
1103other port or group. This property only makes sense on groups with outputs
1104when the source is a group with inputs. This can be used to convey a
1105relationship between corresponding input and output groups with different
1106types, for example in a mono to stereo plugin.
1111 lv2:documentation """
1113Indicates that this group should be considered the "main" input, i.e. the
1114primary task is processing the signal in this group. A plugin MUST NOT have
1115more than one pg:mainInput property.
1120 lv2:documentation """
1122Indicates that this group should be considered the "main" output. The main
1123output group SHOULD have the main input group as a pg:source.
1128 lv2:documentation """
1130Indicates that this port is a part of a group of ports on the plugin. The port
1131should also have an lv2:designation property to define its designation within
1137 lv2:documentation """
1139These groups are divided into channels where each represents a particular
1140speaker location. The position of sound in one of these groups depends on a
1141particular speaker configuration.
1146 lv2:documentation """
1148These groups are divided into channels which together represent a position in
1149an abstract n-dimensional space. The position of sound in one of these groups
1150does not depend on a particular speaker configuration; a decoder can be used to
1151convert an ambisonic stream for any speaker configuration.
1164juce::lv2::BundleResource
1167R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
1168@prefix doap: <http://usefulinc.com/ns/doap#> .
1169@prefix foaf: <http://xmlns.com/foaf/0.1/> .
1170@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
1171@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
1172@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
1173@prefix ui: <http://lv2plug.in/ns/extensions/ui#> .
1175<http://lv2plug.in/ns/extensions/ui>
1177 doap:license <http://opensource.org/licenses/isc> ;
1178 doap:name "LV2 UI" ;
1179 doap:shortdesc "User interfaces for LV2 plugins." ;
1180 doap:created "2006-00-00" ;
1181 doap:developer <http://lv2plug.in/ns/meta#larsl> ;
1182 doap:maintainer <http://drobilla.net/drobilla#me> ;
1184 doap:revision "2.22" ;
1185 doap:created "2020-04-26" ;
1186 doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ;
1187 dcs:blame <http://drobilla.net/drobilla#me> ;
1190 rdfs:label "Add ui:requestValue feature."
1192 rdfs:label "Add ui:scaleFactor, ui:foregroundColor, and ui:backgroundColor properties."
1194 rdfs:label "Deprecate ui:binary."
1198 doap:revision "2.20" ;
1199 doap:created "2015-07-25" ;
1200 doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
1201 dcs:blame <http://drobilla.net/drobilla#me> ;
1204 rdfs:label "Improve documentation."
1206 rdfs:label "Add missing property labels."
1210 doap:revision "2.18" ;
1211 doap:created "2014-08-08" ;
1212 doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ;
1213 dcs:blame <http://drobilla.net/drobilla#me> ;
1216 rdfs:label "Add show interface so UIs can gracefully degrade to separate windows if hosts can not use their widget directly."
1218 rdfs:label "Fix identifier typos in documentation."
1222 doap:revision "2.16" ;
1223 doap:created "2014-01-04" ;
1224 doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ;
1225 dcs:blame <http://drobilla.net/drobilla#me> ;
1228 rdfs:label "Fix LV2_UI_INVALID_PORT_INDEX identifier in documentation."
1232 doap:revision "2.14" ;
1233 doap:created "2013-03-18" ;
1234 doap:file-release <http://lv2plug.in/spec/lv2-1.6.0.tar.bz2> ;
1235 dcs:blame <http://drobilla.net/drobilla#me> ;
1238 rdfs:label "Add idle interface so native UIs and foreign toolkits can drive their event loops."
1240 rdfs:label "Add ui:updateRate property."
1244 doap:revision "2.12" ;
1245 doap:created "2012-12-01" ;
1246 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
1247 dcs:blame <http://drobilla.net/drobilla#me> ;
1250 rdfs:label "Fix incorrect linker flag in ui:makeSONameResident documentation."
1254 doap:revision "2.10" ;
1255 doap:created "2012-10-14" ;
1256 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
1257 dcs:blame <http://drobilla.net/drobilla#me> ;
1260 rdfs:label "Add types for WindowsUI, CocoaUI, and Gtk3UI."
1262 rdfs:label "Use consistent label style."
1264 rdfs:label "Add missing LV2_SYMBOL_EXPORT declaration for lv2ui_descriptor prototype."
1268 doap:revision "2.8" ;
1269 doap:created "2012-04-17" ;
1270 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
1271 dcs:blame <http://drobilla.net/drobilla#me> ;
1274 rdfs:label "Add ui:parent and ui:resize."
1276 rdfs:label "Add support for referring to ports by symbol."
1278 rdfs:label "Add ui:portMap for accessing ports by symbol, allowing for UIs to be distributed separately from plugins."
1280 rdfs:label "Add port protocols and a dynamic notification subscription mechanism, for more flexible communication, and audio port metering without control port kludges."
1282 rdfs:label "Add touch feature to notify the host that the user has grabbed a control."
1284 rdfs:label "Merge with unified LV2 package."
1288 doap:revision "2.4" ;
1289 doap:created "2011-11-21" ;
1290 doap:file-release <http://lv2plug.in/spec/lv2-ui-2.4.tar.bz2> ;
1291 dcs:blame <http://drobilla.net/drobilla#me> ;
1294 rdfs:label "Deprecate ui:makeSONameResident."
1296 rdfs:label "Add Qt4 and X11 widget types."
1298 rdfs:label "Install header to URI-based system path."
1300 rdfs:label "Add pkg-config file."
1302 rdfs:label "Make ui.ttl a valid OWL 2 DL ontology."
1306 doap:revision "2.2" ;
1307 doap:created "2011-05-26" ;
1308 doap:file-release <http://lv2plug.in/spec/lv2-ui-2.2.tar.bz2> ;
1309 dcs:blame <http://drobilla.net/drobilla#me> ;
1312 rdfs:label "Add build system (for installation)."
1314 rdfs:label "Convert documentation to HTML and use lv2:documentation."
1316 rdfs:label "Use lv2:Specification to be discovered as an extension."
1320 doap:revision "2.0" ;
1321 doap:created "2010-10-06" ;
1322 doap:file-release <http://lv2plug.in/spec/lv2-ui-2.0.tar.gz> ;
1323 dcs:blame <http://drobilla.net/drobilla#me> ;
1326 rdfs:label "Initial release."
1330 lv2:documentation """
1332This extension makes it possible to create user interfaces for LV2 plugins.
1334UIs are implemented as an LV2UI_Descriptor loaded via lv2ui_descriptor() in a
1335shared library, and are distributed in bundles just like plugins.
1337UIs are associated with plugins in data:
1340 @prefix ui: <http://lv2plug.in/ns/extensions/ui#> .
1342 <http://my.plugin> ui:ui <http://my.pluginui> .
1343 <http://my.pluginui> a ui:X11UI ;
1344 lv2:binary <myui.so> .
1346where `http://my.plugin` is the URI of the plugin, `http://my.pluginui` is the
1347URI of the plugin UI and `myui.so` is the relative URI to the shared object
1350While it is possible to have the plugin UI and the plugin in the same shared
1351object file, it is a good idea to keep them separate so that hosts can avoid
1352loading the UI code if they do not need it. A UI MUST specify its class in the
1353RDF data (`ui:X11UI` in the above example). The class defines what type the UI
1354is, for example what graphics toolkit it uses. Any type of UI class can be
1355defined separately from this extension.
1357It is possible to have multiple UIs for the same plugin, or to have the UI for
1358a plugin in a different bundle from the actual plugin. This allows plugin UIs
1359to be written independently.
1361Note that the process that loads the shared object file containing the UI code
1362and the process that loads the shared object file containing the actual plugin
1363implementation are not necessarily the same process (and not even necessarily
1364on the same machine). This means that plugin and UI code MUST NOT use
1365singletons and global variables and expect them to refer to the same objects in
1366the UI and the actual plugin. The function callback interface defined in this
1367header is the only method of communication between UIs and plugin instances
1368(extensions may define more, though this is discouraged unless absolutely
1369necessary since the significant benefits of network transparency and
1370serialisability are lost).
1372UI functionality may be extended via features, much like plugins:
1375 <http://my.pluginui> lv2:requiredFeature <http://my.feature> .
1376 <http://my.pluginui> lv2:optionalFeature <http://my.feature> .
1378The rules for a UI with a required or optional feature are identical to those
1379of lv2:Plugin instances: if a UI declares a feature as required, the host is
1380NOT allowed to load it unless it supports that feature; and if it does support
1381a feature, it MUST pass an appropriate LV2_Feature struct to the UI's
1382instantiate() method. This extension defines several standard features for
1383common functionality.
1385UIs written to this specification do not need to be thread-safe. All functions
1386may only be called in the <q>UI thread</q>. There is only one UI thread (for
1387too)lv2ttl" R"lv2ttl(lkits, the one the UI main loop runs in). There is no requirement that a
1388<q>UI</q> actually be a graphical widget.
1390Note that UIs are completely separate from plugins. From the plugin's
1391perspective, control from a UI is indistinguishable from any other control, as
1392it all occcurs via ports.
1397 lv2:documentation """
1399The host must guarantee that the Gtk+ 2 library has been initialised and the
1400Glib main loop is running before the UI is instantiated. Note that this UI
1401type is not suitable for binary distribution since multiple versions of Gtk can
1402not be used in the same process.
1407 lv2:documentation """
1409The host must guarantee that the Gtk+ 3 library has been initialised and the
1410Glib main loop is running before the UI is instantiated. Note that this UI
1411type is not suitable for binary distribution since multiple versions of Gtk can
1412not be used in the same process.
1417 lv2:documentation """
1419The host must guarantee that the Qt4 library has been initialised and the Qt4
1420main loop is running before the UI is instantiated. Note that this UI type is
1421not suitable for binary distribution since multiple versions of Qt can not be
1422used in the same process.
1427 lv2:documentation """
1429The host must guarantee that the Qt5 library has been initialised and the Qt5
1430main loop is running before the UI is instantiated. Note that this UI type is
1431not suitable for binary distribution since multiple versions of Qt can not be
1432used in the same process.
1437 lv2:documentation """
1439Note that the LV2UI_Widget for this type of UI is not a pointer, but should be
1440interpreted directly as an X11 `Window` ID. This is the native UI type on most
1446 lv2:documentation """
1448Note that the LV2UI_Widget for this type of UI is not a pointer, but should be
1449interpreted directly as a `HWND`. This is the native UI type on Microsoft
1455 lv2:documentation """
1457This is the native UI type on Mac OS X.
1462 lv2:documentation """
1464This property is redundant and deprecated: new UIs should use lv2:binary
1465instead, however hosts must still support ui:binary.
1469ui:makeSONameResident
1470 lv2:documentation """
1472This feature was intended to support UIs that link against toolkit libraries
1473which may not be unloaded during the lifetime of the host. This is better
1474achieved by using the appropriate flags when linking the UI, for example `gcc
1480 lv2:documentation """
1482If a UI has this feature, it indicates that it does not make sense to let the
1483user resize the main widget, and the host should prevent that. This feature
1484may not make sense for all UI types. The data pointer for this feature should
1485always be set to NULL.
1490 lv2:documentation """
1492If a UI has this feature, it indicates the same thing as ui:noUserResize, and
1493additionally that the UI will not resize itself on its own. That is, the UI
1494will always remain the same size. This feature may not make sense for all UI
1495types. The data pointer for this feature should always be set to NULL.
1500 lv2:documentation """
1502HiDPI (High Dots Per Inch) displays have a high resolution on a relatively
1503small form factor. Many systems use a scale factor to compensate for this, so
1504for example, a scale factor of 2 means things are drawn twice as large as
1507Hosts can pass this as an option to UIs to communicate this information, so
1508that the UI can draw at an appropriate scale.
1513 lv2:documentation """
1515The background color of the host's UI. The host can pass this as an option so
1516that UIs can integrate nicely with the host window around it.
1518Hosts should pass this as an option to UIs with an integer RGBA32 color value.
1519If the value is a 32-bit integer, it is guaranteed to be in RGBA32 format, but
1520the UI must check the value type and not assume this, to allow for other types
1521of color in the future.
1526 lv2:documentation """
1528The foreground color of the host's UI. The host can pass this as an option so
1529that UIs can integrate nicely with the host window around it.
1531Hosts should pass this as an option to UIs with an integer RGBA32 color value.
1532If the value is a 32-bit integer, it is guaranteed to be in RGBA32 format, but
1533the UI must check the value type and not assume this, to allow for other types
1534of color in the future.
1539 lv2:documentation """
1541This feature can be used to pass a parent that the UI should be a child of.
1542The format of data pointer of this feature is determined by the UI type, and is
1543generally the same type as the LV2UI_Widget that the UI would return. For
1544example, for a ui:X11UI, the parent should be a `Window`. This is particularly
1545useful for embedding, where the parent often must be known at construction time
1546for embedding to work correctly.
1548UIs should not _require_ this feature unless it is necessary for them to work
1549at all, but hosts should provide it whenever possible.
1554 lv2:documentation """
1556This describes which ports the host must send notifications to the UI about.
1557The port must be specific either by index, using the ui:portIndex property, or
1558symbol, using the lv2:symbol property. Since port indices are not guaranteed
1559to be stable, using the symbol is recommended, and the inde MUST NOT be used
1560except by UIs that are shipped in the same bundle as the corresponding plugin.
1565 lv2:documentation """
1567Specifies that a UI should receive notifications about changes to a particular
1568port's value via LV2UI_Descriptor::port_event().
1575 ui:portNotification [
1576 ui:plugin eg:plugin ;
1578 ui:protocol ui:floatProtocol
1584 lv2:documentation """
1586Specifies a particular type that the UI should be notified of.
1588This is useful for message-based ports where several types of data can be
1589present, but only some are interesting to the UI. For example, if UI control
1590is multiplexed in the same port as MIDI, this property can be used to ensure
1591that only the relevant events are forwarded to the UI, and not potentially high
1597 lv2:documentation """
1599This feature corresponds to the LV2UI_Resize struct, which should be passed
1600with the URI LV2_UI__resize. This struct may also be provided by the UI as
1601extension data using the same URI, in which case it is used by the host to
1602request that the UI change its size.
1607 lv2:documentation """
1609This makes it possible to implement and distribute UIs separately from the
1610plugin binaries they control.
1612This feature corresponds to the LV2UI_Port_Index struct, which should be passed
1613with the URI LV2_UI__portIndex.
1618 lv2:documentation """
1620This makes it possible for a UI to explicitly request a particular style of
1621update from a port at run-time, in a more flexible and powerful way than
1622listing subscriptions statically allows.
1624This feature corresponds to the LV2UI_Port_Subscribe struct, which should be
1625passed with the URI LV2_UI__portSubscribe.
1630 lv2:documentation """
1632This is useful for automation, so the host can allow the user to take control
1633of a port, even if that port would otherwise be automated (much like grabbing a
1634physical motorised fader).
1636It can also be used for MIDI learn or in any other situation where the host
1637needs to do something with a particular control and it would be convenient for
1638the user to select it directly from the plugin UI.
1640Thi)lv2ttl" R"lv2ttl(s feature corresponds to the LV2UI_Touch struct, which should be passed with
1641the URI LV2_UI__touch.
1646 lv2:documentation """
1648This allows a plugin UI to request a new parameter value using the host's UI,
1649for example by showing a dialog or integrating with the host's built-in content
1650browser. This should only be used for complex parameter types where the plugin
1651UI is not capable of showing the expected native platform or host interface to
1652choose a value, such as file path parameters.
1654This feature corresponds to the LV2UI_Request_Value struct, which should be
1655passed with the URI LV2_UI__requestValue.
1660 lv2:documentation """
1662To support this feature, the UI should list it as a lv2:optionalFeature or
1663lv2:requiredFeature in its data, and also as lv2:extensionData. When the UI's
1664extension_data() is called with this URI (LV2_UI__idleInterface), it should
1665return a pointer to an LV2UI_Idle_Interface.
1667To indicate support, the host should pass a feature to instantiate() with this
1668URI, with NULL for data.
1673 lv2:documentation """
1675This allows UIs to gracefully degrade to separate windows when the host is
1676unable to embed the UI widget for whatever reason. When the UI's
1677extension_data() is called with this URI (LV2_UI__showInterface), it should
1678return a pointer to an LV2UI_Show_Interface.
1683 lv2:documentation """
1685A PortProtocol MUST define:
1688: Which plugin port types the buffer type is valid for.
1691: What data (if any) should be passed in the LV2_Feature.
1693A PortProtocol for an output port MUST define:
1696: When the host should call port_event().
1699: The format of the data in the buffer passed to port_event().
1702: The format of the options passed to subscribe() and unsubscribe().
1704A PortProtocol for an input port MUST define:
1707: The format of the data in the buffer passed to write_port().
1710: What happens when the UI calls write_port().
1712For an example, see ui:floatProtocol or ui:peakProtocol.
1714PortProtocol is a subclass of lv2:Feature, so UIs use lv2:optionalFeature and
1715lv2:requiredFeature to specify which PortProtocols they want to use.
1720 lv2:documentation """
1722A protocol for transferring single floating point values. The rules for this
1732: The host SHOULD call port_event() as soon as possible when the port value has
1733 changed, but there are no timing guarantees.
1736: A single <code>float</code>.
1742: A single <code>float</code>.
1745: The host SHOULD set the port to the received value as soon as possible, but
1746 there is no guarantee that run() actually sees this value.
1751 lv2:documentation """
1753This port protocol defines a way for the host to send continuous peak
1754measurements of the audio signal at a certain port to the UI. The intended use
1755is visualisation, for example an animated meter widget that shows the level of
1756the audio input or output.
1758A contiguous sequence of audio samples for which a peak value has been computed
1759is called a _measurement period_.
1761The rules for this protocol are:
1770: The host SHOULD call port_event() at regular intervals. The measurement
1771 periods used for calls to port_event() for the same port SHOULD be
1772 contiguous (i.e. the measurement period for one call should begin right
1773 after the end of the measurement period for the previous call ends) unless
1774 the UI has removed and re-added the port subscription between those calls.
1775 However, UIs MUST NOT depend on either the regularity of the calls or the
1776 contiguity of the measurement periods; hosts may change the call rate or
1777 skip calls for performance or other reasons. Measurement periods for
1778 different calls to port_event() for the same port MUST NOT overlap.
1781: A single LV2UI_Peak_Data object.
1796, juce::lv2::BundleResource
1799R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
1800@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
1802<http://lv2plug.in/ns/extensions/ui>
1803 a lv2:Specification ;
1804 lv2:minorVersion 2 ;
1805 lv2:microVersion 22 ;
1806 rdfs:seeAlso <ui.ttl> .
1810, juce::lv2::BundleResource
1813R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
1814@prefix opts: <http://lv2plug.in/ns/ext/options#> .
1815@prefix owl: <http://www.w3.org/2002/07/owl#> .
1816@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
1817@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
1818@prefix ui: <http://lv2plug.in/ns/extensions/ui#> .
1819@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
1821<http://lv2plug.in/ns/extensions/ui>
1823 rdfs:label "LV2 UI" ;
1824 rdfs:comment "User interfaces for LV2 plugins." ;
1825 owl:imports <http://lv2plug.in/ns/lv2core> ;
1826 rdfs:seeAlso <ui.h> ,
1832 rdfs:label "User Interface" ;
1833 rdfs:comment "A UI for an LV2 plugin." .
1838 rdfs:subClassOf ui:UI ;
1839 rdfs:label "GTK2 UI" ;
1840 rdfs:comment "A UI where the widget is a pointer to a Gtk+ 2.0 GtkWidget." .
1845 rdfs:subClassOf ui:UI ;
1846 rdfs:label "GTK3 UI" ;
1847 rdfs:comment "A UI where the widget is a pointer to a Gtk+ 3.0 GtkWidget." .
1852 rdfs:subClassOf ui:UI ;
1853 rdfs:label "Qt4 UI" ;
1854 rdfs:comment "A UI where the widget is a pointer to a Qt4 QWidget." .
1859 rdfs:subClassOf ui:UI ;
1860 rdfs:label "Qt5 UI" ;
1861 rdfs:comment "A UI where the widget is a pointer to a Qt5 QWidget." .
1866 rdfs:subClassOf ui:UI ;
1867 rdfs:label "X11 UI" ;
1868 rdfs:comment "A UI where the widget is an X11 Window window ID." .
1873 rdfs:subClassOf ui:UI ;
1874 rdfs:label "Windows UI" ;
1875 rdfs:comment "A UI where the widget is a Windows HWND window ID." .
1880 rdfs:subClassOf ui:UI ;
1881 rdfs:label "Cocoa UI" ;
1882 rdfs:comment "A UI where the widget is a pointer to a NSView." .
1886 owl:ObjectProperty ;
1887 rdfs:domain lv2:Plugin ;
1889 rdfs:label "user interface" ;
1890 rdfs:comment "Relates a plugin to a UI that applies to it." .
1894 owl:ObjectProperty ;
1895 owl:sameAs lv2:binary ;
1896 owl:deprecated "true"^^xsd:boolean ;
1897 rdfs:label "binary" ;
1898 rdfs:comment "The shared library that a UI resides in." .
1900ui:makeSONameResident
1902 owl:deprecated "true"^^xsd:boolean ;
1903 rdfs:label "make SO name resident" ;
1904 rdfs:comment "UI binary must not be unloaded." .
1908 rdfs:label "no user resize" ;
1909 rdfs:comment "Non-resizable UI." .
1913 rdfs:label "fixed size" ;
1914 rdfs:comment "Non-resizable UI that will never resize itself." .
1918 owl:DatatypeProperty ,
1920 rdfs:range xsd:float ;
1921 rdfs:label "scale factor" ;
1922 rdfs:comment "Scale factor for high resolution screens." .
1926 owl:DatatypeProperty ,
1928 rdfs:label "background color" ;
1929 rdfs:comment """The background color of the host's UI.""" .
1933 owl:DatatypeProperty ,
1935 rdfs:label "foreground color" ;
1936 rdfs:comment """The foreground color of the host's UI.""" .
1940 rdfs:label "parent" ;
1941 rdfs:comment "The parent for a UI." .
1948 owl:onProperty ui:plugin ;
1950 rdfs:comment "A PortNotification MUST have exactly one ui:plugin."
1952 rdfs:label "Port Notification" ;
1953 rdfs:comment "A description of port updates that a host must send a UI." .
1957 owl:ObjectProperty ;
1959 rdfs:range ui:PortNotification ;
1960 rdfs:label "port notification" ;
1961 rdfs:comment "Specifies a port notification that is required by a UI." .
1965 owl:ObjectProperty ;
1966 rdfs:domain ui:PortNotification ;
1967 rdfs:range lv2:Plugin ;
1968 rdfs:label "plugin" ;
1969 rdfs:comment "The plugin a portNotification applies to." .
1973 owl:DatatypeProperty ;
1974 rdfs:domain ui:PortNotification ;
1975 rdfs:range xsd:decimal ;
1976 rdfs:label "port index" ;
1977 rdfs:comment "The index of the port a portNotification applies to." .
1981 owl:ObjectProperty ;
1982 rdfs:domain ui:PortNotification ;
1983 rdfs:label "notify type" ;
1984 rdfs:comment "A particular type that the UI should be notified of." .
1989 rdfs:label "resize" ;
1990 rdfs:comment """A feature that control of, and notifications about, a UI's size.""" .
1994 rdfs:label "port map" ;
1995 rdfs:comment "A feature for accessing the index of a port by symbol." .
1999 rdfs:label "port subscribe" ;
2000 rdfs:comment "A feature for dynamically subscribing to updates from a port." .
2004 rdfs:label "touch" ;
2005 rdfs:comment "A feature to notify that the user has grabbed a port control." .
2009 rdfs:label "request value" ;
2010 rdfs:comment "A feature to request a parameter value from the user via the host." .
2015 rdfs:label "idle interface" ;
2016 rdfs:comment "A feature that provides a callback for the host to drive the UI." .
2019 a lv2:ExtensionData ;
2020 rdfs:label "show interface" ;
2021 rdfs:comment "An interface for showing and hiding a window for a UI." .
2025 owl:DatatypeProperty ;
2026 rdfs:range xsd:string ;
2027 rdfs:label "window title" ;
2028 rdfs:comment "The title for the window shown by LV2UI_Show_Interface." .
2032 owl:DatatypeProperty ;
2033 rdfs:range xsd:float ;
2034 rdfs:label "update rate" ;
2035 rdfs:comment "The target rate, in Hz, to send updates to the UI." .
2039 owl:ObjectProperty ;
2040 rdfs:domain ui:PortNotification ;
2041 rdfs:range ui:PortProtocol ;
2042 rdfs:label "protocol" ;
2043 rdfs:comment "The protocol to be used for this notification." .
2047 rdfs:subClassOf lv2:Feature ;
2048 rdfs:label "Port Protocol" ;
2049 rdfs:comment "A method to communicate port data between a UI and plugin." .
2053 rdfs:label "float protocol" ;
2054 rdfs:comment "A protocol for transferring single floating point values." .
2058 rdfs:label "peak protocol" ;
2059 rdfs:comment "A protocol for sending continuous peak measurements of an audio signal." .
2070juce::lv2::BundleResource
2073R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2074@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2076<http://lv2plug.in/ns/ext/options>
2077 a lv2:Specification ;
2078 lv2:minorVersion 1 ;
2079 lv2:microVersion 4 ;
2080 rdfs:seeAlso <options.ttl> .
2084, juce::lv2::BundleResource
2087R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2088@prefix opts: <http://lv2plug.in/ns/ext/options#> .
2089@prefix owl: <http://www.w3.org/2002/07/owl#> .
2090@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2091@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2092@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
2094<http://lv2plug.in/ns/ext/options>
2096 rdfs:label "LV2 Options" ;
2097 rdfs:comment "Runtime options for LV2 plugins and UIs." ;
2098 rdfs:seeAlso <options.h> ,
2099 <options.meta.ttl> .
2103 rdfs:label "Option" ;
2104 rdfs:subClassOf rdf:Property ;
2105 rdfs:comment "A value for a static option passed to an instance." .
2108 a lv2:ExtensionData ;
2109 rdfs:label "interface" ;
2110 rdfs:comment "An interface for dynamically setting and getting options." .
2114 rdfs:label "options" ;
2115 rdfs:comment "The feature used to provide options to an instance." .
2119 owl:ObjectProperty ;
2120 rdfs:range rdf:Property ;
2121 rdfs:label "required option" ;
2122 rdfs:comment "An option required by the instance to function at all." .
2126 owl:ObjectProperty ;
2127 rdfs:range rdf:Property ;
2128 rdfs:label "supported option" ;
2129 rdfs:comment "An option supported or by the instance." .
2133, juce::lv2::BundleResource
2136R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
2137@prefix doap: <http://usefulinc.com/ns/doap#> .
2138@prefix foaf: <http://xmlns.com/foaf/0.1/> .
2139@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2140@prefix opts: <http://lv2plug.in/ns/ext/options#> .
2141@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2142@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2144<http://lv2plug.in/ns/ext/options>
2146 doap:name "LV2 Options" ;
2147 doap:shortdesc "Runtime options for LV2 plugins and UIs." ;
2148 doap:created "2012-08-20" ;
2149 doap:developer <http://drobilla.net/drobilla#me> ;
2151 doap:revision "1.4" ;
2152 doap:created "2019-02-03" ;
2153 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
2154 dcs:blame <http://drobilla.net/drobilla#me> ;
2157 rdfs:label "Relax range of opts:requiredOption and opts:supportedOption"
2161 doap:revision "1.2" ;
2162 doap:created "2013-01-10" ;
2163 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
2164 dcs:blame <http://drobilla.net/drobilla#me> ;
2167 rdfs:label "Set the range of opts:requiredOption and opts:supportedOption to opts:Option."
2171 doap:revision "1.0" ;
2172 doap:created "2012-10-14" ;
2173 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
2174 dcs:blame <http://drobilla.net/drobilla#me> ;
2177 rdfs:label "Initial release."
2181 lv2:documentation """
2183This extension defines a facility for <q>options</q>, which are values the host
2184passes to a plugin or UI at run time.
2186There are two facilities for passing options to an instance: opts:options
2187allows passing options at instantiation time, and the opts:interface interface
2188allows options to be dynamically set and retrieved after instantiation.
2190Note that this extension is only for allowing hosts to configure plugins, and
2191is not a <q>live</q> control mechanism. For real-time control, use event-based
2192control via an atom:AtomPort with an atom:Sequence buffer.
2194Instances may indicate they require an option with the opts:requiredOption
2195property, or that they optionally support an option with the
2196opts:supportedOption property.
2201 lv2:documentation """
2203It is not required for a property to explicitly be an Option in order to be
2204used as such. However, properties which are primarily intended for use as
2205options, or are at least particularly useful as options, should be explicitly
2206given this type for documentation purposes, and to assist hosts in discovering
2212 lv2:documentation """
2214An interface (LV2_Options_Interface) for dynamically setting and getting
2215options. Note that this is intended for use by the host for configuring
2216plugins only, and is not a <q>live</q> plugin control mechanism.
2218The plugin data file should advertise this interface like so:
2221 @prefix opts: <http://lv2plug.in/ns/ext/options#> .
2225 lv2:extensionData opts:interface .
2230 lv2:documentation """
2232To implement this feature, hosts MUST pass an LV2_Feature to the appropriate
2233instantiate method with this URI and data pointed to an array of
2234LV2_Options_Option terminated by an element with both key and value set to
2235zero. The instance should cast this data pointer to `const
2236LV2_Options_Option*` and scan the array for any options of interest. The
2237instance MUST NOT modify the options array in any way.
2239Note that requiring this feature may reduce the number of compatible hosts.
2240Unless some options are strictly required by the instance, this feature SHOULD
2241be listed as an lv2:optionalFeature.
2246 lv2:documentation """
2248The host MUST pass a value for the specified option via opts:options during
2251Note that use of this property may reduce the number of compatible hosts.
2252Wherever possible, it is better to list options with opts:supportedOption and
2253fall back to a reasonable default value if it is not provided.
2258 lv2:documentation """
2260The host SHOULD provide a value for the specified option if one is known, or
2261provide the user an opportunity to specify one if possible.
2274juce::lv2::BundleResource
2277R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2278@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2280<http://lv2plug.in/ns/ext/resize-port>
2281 a lv2:Specification ;
2282 lv2:minorVersion 1 ;
2283 lv2:microVersion 0 ;
2284 rdfs:seeAlso <resize-port.ttl> .
2288, juce::lv2::BundleResource
2290"resize-port.meta.ttl",
2291R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
2292@prefix doap: <http://usefulinc.com/ns/doap#> .
2293@prefix foaf: <http://xmlns.com/foaf/0.1/> .
2294@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2295@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2296@prefix rsz: <http://lv2plug.in/ns/ext/resize-port#> .
2298<http://lv2plug.in/ns/ext/resize-port>
2300 doap:name "LV2 Resize Port" ;
2301 doap:shortdesc "Dynamically sized LV2 port buffers." ;
2302 doap:created "2007-00-00" ;
2303 doap:developer <http://drobilla.net/drobilla#me> ;
2305 doap:revision "1.0" ;
2306 doap:created "2012-04-17" ;
2307 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
2308 dcs:blame <http://drobilla.net/drobilla#me> ;
2311 rdfs:label "Initial release."
2315 lv2:documentation """
2317This extension defines a feature, rsz:resize, which allows plugins to
2318dynamically resize their output port buffers.
2320In addition to the dynamic feature, there are properties which describe the
2321space required for a particular port buffer which can be used statically in
2327 lv2:documentation """
2329A feature to resize output port buffers in LV2_Plugin_Descriptor::run().
2331To support this feature, the host must pass an LV2_Feature to the plugin's
2332instantiate method with URI LV2_RESIZE_PORT__resize and a pointer to a
2333LV2_Resize_Port_Resize structure. This structure provides a resize_port
2334function which plugins may use to resize output port buffers as necessary.
2339 lv2:documentation """
2341Indicates that a port requires at least as much buffer space as the port with
2342the given symbol on the same plugin instance. This may be used for any ports,
2343but is generally most useful to indicate an output port must be at least as
2344large as some input port (because it will copy from it). If a port is
2345asLargeAs several ports, it is asLargeAs the largest such port (not the sum of
2348The host guarantees that whenever an ObjectPort's run method is called, any
2349output `O` that is rsz:asLargeAs an input `I` is connected to a buffer large
2350enough to copy `I`, or `NULL` if the port is lv2:connectionOptional.
2355 lv2:documentation """
2357Indicates that a port requires a buffer at least this large, in bytes. Any
2358host that supports the resize-port feature MUST connect any port with a
2359minimumSize specified to a buffer at least as large as the value given for this
2360property. Any host, especially those that do NOT support dynamic port
2361resizing, SHOULD do so or reduced functionality may result.
2367, juce::lv2::BundleResource
2370R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2371@prefix owl: <http://www.w3.org/2002/07/owl#> .
2372@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2373@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2374@prefix rsz: <http://lv2plug.in/ns/ext/resize-port#> .
2375@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
2377<http://lv2plug.in/ns/ext/resize-port>
2379 rdfs:label "LV2 Resize Port" ;
2380 rdfs:comment "Dynamically sized LV2 port buffers." ;
2381 rdfs:seeAlso <resize-port.h> ,
2382 <resize-port.meta.ttl> .
2386 rdfs:label "resize" ;
2387 rdfs:comment "A feature for resizing output port buffers." .
2391 owl:DatatypeProperty ;
2392 rdfs:domain lv2:Port ;
2393 rdfs:range lv2:Symbol ;
2394 rdfs:label "as large as" ;
2395 rdfs:comment "Port that this port must have at least as much buffer space as." .
2399 owl:DatatypeProperty ,
2400 owl:FunctionalProperty ;
2401 rdfs:domain lv2:Port ;
2402 rdfs:range xsd:nonNegativeInteger ;
2403 rdfs:label "minimum size" ;
2404 rdfs:comment "Minimum buffer size required by a port, in bytes." .
2415juce::lv2::BundleResource
2418R
"lv2ttl(@prefix doap: <http://usefulinc.com/ns/doap#> .
2419@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2420@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2422<http://lv2plug.in/ns/lv2core>
2423 a lv2:Specification ;
2424 lv2:minorVersion 18 ;
2425 lv2:microVersion 0 ;
2426 rdfs:seeAlso <lv2core.ttl> .
2428<http://lv2plug.in/ns/lv2>
2430 rdfs:seeAlso <meta.ttl> ,
2435, juce::lv2::BundleResource
2438R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
2439@prefix doap: <http://usefulinc.com/ns/doap#> .
2440@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2441@prefix meta: <http://lv2plug.in/ns/meta#> .
2442@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2443@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2445<http://opensource.org/licenses/isc>
2447Permission 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.
2449THIS 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.
2452<http://lv2plug.in/ns/lv2>
2456 rdfs:comment "The LV2 Plugin Interface Project." ;
2458 doap:license <http://opensource.org/licenses/isc> ;
2459 doap:shortdesc "The LV2 Plugin Interface Project." ;
2460 doap:description "LV2 is a plugin standard for audio systems. It defines a minimal yet extensible C API for plugin code and a format for plugin bundles" ;
2461 doap:created "2006-05-10" ;
2462 doap:homepage <http://lv2plug.in/> ;
2463 doap:mailing-list <http://lists.lv2plug.in/listinfo.cgi/devel-lv2plug.in> ;
2464 doap:programming-language "C" ;
2466 a doap:SVNRepository ;
2467 doap:location <http://lv2plug.in/repo>
2469 doap:developer <http://drobilla.net/drobilla#me> ,
2470 <http://plugin.org.uk/swh.xrdf#me> ;
2471 doap:helper meta:larsl ,
2478 doap:revision "1.18.2" ;
2479 doap:created "2021-01-07" ;
2480 doap:file-release <http://lv2plug.in/spec/lv2-1.18.2.tar.bz2> ;
2481 dcs:blame <http://drobilla.net/drobilla#me> ;
2484 rdfs:label "eg-sampler: Save and restore gain parameter value."
2486 rdfs:label "Various code cleanups and infrastructure improvements."
2490 doap:revision "1.18.0" ;
2491 doap:created "2020-04-26" ;
2492 doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ;
2493 dcs:blame <http://drobilla.net/drobilla#me> ;
2496 rdfs:label "Improve documentation."
2498 rdfs:label "Separate extended documentation from primary data."
2502 doap:revision "1.16.0" ;
2503 doap:created "2019-02-03" ;
2504 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
2505 dcs:blame <http://drobilla.net/drobilla#me> ;
2508 rdfs:label "Add core/attributes.h utility header."
2510 rdfs:label "eg-sampler: Add waveform display to UI."
2512 rdfs:label "eg-midigate: Respond to \"all notes off\" MIDI message."
2514 rdfs:label "Simplify use of lv2specgen."
2516 rdfs:label "Add lv2_validate utility."
2518 rdfs:label "Install headers to simpler paths."
2520 rdfs:label "Aggressively deprecate uri-map and event extensions."
2522 rdfs:label "Upgrade build system and fix building with Python 3.7."
2526 doap:revision "1.14.0" ;
2527 doap:created "2016-09-19" ;
2528 doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
2529 dcs:blame <http://drobilla.net/drobilla#me> ;
2532 rdfs:label """eg-scope: Don't feed back UI state updates."""
2534 rdfs:label "eg-sampler: Fix handling of state file paths."
2536 rdfs:label "eg-sampler: Support thread-safe state restoration."
2540 doap:revision "1.12.0" ;
2541 doap:created "2015-04-07" ;
2542 doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ;
2543 dcs:blame <http://drobilla.net/drobilla#me> ;
2546 rdfs:label "eg-sampler: Support patch:Get, and request initial state from UI."
2548 rdfs:label "eg-sampler: Add gain parameter."
2550 rdfs:label "Fix merging of version histories in specification documentation."
2552 rdfs:label "Improve API documentation."
2554 rdfs:label "Simplify property restrictions by removing redundancy."
2558 doap:revision "1.10.0" ;
2559 doap:created "2014-08-08" ;
2560 doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ;
2561 dcs:blame <http://drobilla.net/drobilla#me> ;
2564 rdfs:label "lv2specgen: Display deprecated warning on classes marked owl:deprecated."
2566 rdfs:label "Fix -Wconversion warnings in headers."
2568 rdfs:label "Upgrade to waf 1.7.16."
2572 doap:revision "1.8.0" ;
2573 doap:created "2014-01-04" ;
2574 doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ;
2575 dcs:blame <http://drobilla.net/drobilla#me> ;
2578 rdfs:label "Add scope example plugin from Robin Gareus."
2580 rdfs:label "lv2specgen: Fix links to externally defined terms."
2582 rdfs:label "Install lv2specgen for use by other projects."
2586 doap:revision "1.6.0" ;
2587 doap:created "2013-08-09" ;
2588 doap:file-release <http://lv2plug.in/spec/lv2-1.6.0.tar.bz2> ;
2589 dcs:blame <http://drobilla.net/drobilla#me> ;
2592 rdfs:label "Fix port indices of metronome example."
2594 rdfs:label "Fix lv2specgen usage from command line."
2596 rdfs:label "Upgrade to waf 1.7.11."
2600 doap:revision "1.4.0" ;
2601 doap:created "2013-02-17" ;
2602 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
2603 dcs:blame <http://drobilla.net/drobilla#me> ;
2606 rdfs:label "Add metronome example plugin to demonstrate sample accurate tempo sync."
2608 rdfs:label "Generate book-style HTML documentation from example plugins."
2612 doap:revision "1.2.0" ;
2613 doap:created "2012-10-14" ;
2614 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
2615 dcs:blame <http://drobilla.net/drobilla#me> ;
2618 rdfs:label "Move all project metadata for extensions (e.g. change log) to separate files to spare hosts from loading them during discovery."
2620 rdfs:label "Use stricter datatype definitions conformant with the XSD and OWL specifications for better validation."
2624 doap:revision "1.0.0" ;
2625 doap:created "2012-04-16" ;
2626 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
2627 dcs:blame <http://drobilla.net/drobilla#me> ;
2630 rdfs:label """Initial release as a unified project. Projects can now simply depend on the pkg-config package 'lv2' for all official LV2 APIs."""
2632 rdfs:label "New extensions: atom, log, parameters, patch, port-groups, port-props, resize-port, state, time, worker."
2639, juce::lv2::BundleResource
2642R
"lv2ttl(@prefix foaf: <http://xmlns.com/foaf/0.1/> .
2643@prefix meta: <http://lv2plug.in/ns/meta#> .
2644@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2646<http://drobilla.net/drobilla#me>
2648 foaf:name "David Robillard" ;
2649 foaf:mbox <mailto:d@drobilla.net> ;
2650 rdfs:seeAlso <http://drobilla.net/drobilla> .
2652<http://plugin.org.uk/swh.xrdf#me>
2654 foaf:name "Steve Harris" ;
2655 foaf:mbox <mailto:steve@plugin.org.uk> ;
2656 rdfs:seeAlso <http://plugin.org.uk/swh.xrdf> .
2660 foaf:name "Lars Luthman" ;
2661 foaf:mbox <mailto:lars.luthman@gmail.com> .
2665 foaf:name "Gabriel M. Beddingfield" ;
2666 foaf:mbox <mailto:gabrbedd@gmail.com> .
2670 foaf:name """Stefano D'Angelo""" ;
2671 foaf:mbox <mailto:zanga.mail@gmail.com> .
2675 foaf:name "Krzysztof Foltman" ;
2676 foaf:mbox <mailto:wdev@foltman.com> .
2680 foaf:name "Leonard Ritter" ;
2681 foaf:mbox <mailto:paniq@paniq.org> .
2685 foaf:name "Harry van Haaren" ;
2686 foaf:mbox <harryhaaren@gmail.com> .
2690 foaf:name "Bernhard M. Wiedemann" ;
2691 foaf:mbox <bwiedemann@suse.de> .
2695, juce::lv2::BundleResource
2698R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
2699@prefix dcs: <http://ontologi.es/doap-changeset#> .
2700@prefix doap: <http://usefulinc.com/ns/doap#> .
2701@prefix foaf: <http://xmlns.com/foaf/0.1/> .
2702@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
2704<http://lv2plug.in/ns/lv2core>
2706 doap:license <http://opensource.org/licenses/isc> ;
2708 doap:homepage <http://lv2plug.in> ;
2709 doap:created "2004-04-21" ;
2710 doap:shortdesc "An extensible open standard for audio plugins" ;
2711 doap:programming-language "C" ;
2712 doap:developer <http://plugin.org.uk/swh.xrdf#me> ,
2713 <http://drobilla.net/drobilla#me> ;
2714 doap:maintainer <http://drobilla.net/drobilla#me> ;
2716 doap:revision "18.0" ;
2717 doap:created "2020-04-26" ;
2718 doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ;
2719 dcs:blame <http://drobilla.net/drobilla#me> ;
2722 rdfs:label "Add lv2:Markdown datatype."
2724 rdfs:label "Deprecate lv2:reportsLatency."
2728 doap:revision "16.0" ;
2729 doap:created "2019-02-03" ;
2730 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
2731 dcs:blame <http://drobilla.net/drobilla#me> ;
2734 rdfs:label "Add lv2:MIDIPlugin class."
2736 rdfs:label "Rework port restrictions so that presets can be validated."
2740 doap:revision "14.0" ;
2741 doap:created "2016-09-18" ;
2742 doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
2743 dcs:blame <http://drobilla.net/drobilla#me> ;
2746 rdfs:label "Add lv2_util.h with lv2_features_data() and lv2_features_query()."
2748 rdfs:label "Add lv2:enabled designation."
2752 doap:revision "12.4" ;
2753 doap:created "2015-04-07" ;
2754 doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ;
2755 dcs:blame <http://drobilla.net/drobilla#me> ;
2758 rdfs:label "Relax domain of lv2:minimum lv2:maximum and lv2:default so they can be used to describe properties/parameters as well."
2760 rdfs:label "Add extern C and visibility attribute to LV2_SYMBOL_EXPORT."
2762 rdfs:label "Add lv2:isSideChain port property."
2766 doap:revision "12.2" ;
2767 doap:created "2014-08-08" ;
2768 doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ;
2769 dcs:blame <http://drobilla.net/drobilla#me> ;
2772 rdfs:label "Clarify lv2_descriptor() and lv2_lib_descriptor() documentation."
2776 doap:revision "12.0" ;
2777 doap:created "2014-01-04" ;
2778 doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ;
2779 dcs:blame <http://drobilla.net/drobilla#me> ;
2782 rdfs:label "Add lv2:prototype for property inheritance."
2786 doap:revision "10.0" ;
2787 doap:created "2013-02-17" ;
2788 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
2789 dcs:blame <http://drobilla.net/drobilla#me> ;
2792 rdfs:label "Add lv2:EnvelopePlugin class."
2794 rdfs:label "Add lv2:control for designating primary event-based control ports."
2796 rdfs:label "Set range of lv2:designation to lv2:Designation."
2798 rdfs:label "Make lv2:Parameter rdfs:subClassOf rdf:Property."
2800 rdfs:label "Reserve minor version 0 for unstable development plugins."
2804 doap:revision "8.2" ;
2805 doap:created "2012-10-14" ;
2806 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
2807 dcs:blame <http://drobilla.net/drobilla#me> ;
2810 rdfs:label "Use consistent label style."
2814 doap:revision "8.0" ;
2815 doap:created "2012-04-17" ;
2816 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
2817 dcs:blame <http://drobilla.net/drobilla#me> ;
2820 rdfs:label "Fix LV2_SYMBOL_EXPORT and lv2_descriptor prototype for Windows."
2822 rdfs:label "Add metadata concept of a designation, a channel or parameter description which can be assigned to ports for more intelligent use by hosts."
2824 rdfs:label "Add new discovery API which allows libraries to read bundle files during discovery, makes library construction/destruction explicit, and adds extensibility to prevent future breakage."
2826 rdfs:label "Relax the range of lv2:index so it can be used for things other than ports."
2828 rdfs:label "Remove lv2:Resource, which turned out to be meaningless."
2830 rdfs:label "Add lv2:CVPort."
2832 rdfs:label "Merge with unified LV2 package."
2836 doap:revision "6.0" ;
2837 doap:created "2011-11-21" ;
2838 doap:file-release <http://lv2plug.in/spec/lv2core-6.0.tar.bz2> ;
2839 dcs:blame <http://drobilla.net/drobilla#me> ;
2842 rdfs:label "Rename core.lv2 and lv2.ttl to lv2core.lv2 and lv2core.ttl to adhere to modern conventions."
2844 rdfs:label "Add lv2:extensionData and lv2:ExtensionData for plugins to indicate that they support some URI for extension_data()."
2846 rdfs:label "Remove lv2config in favour of the simple convention that specifications install headers to standard URI-based paths."
2848 rdfs:label "Switch to the ISC license, a simple BSD-style license (with permission of all contributors to lv2.h and its ancestor, ladspa.h)."
2850 rdfs:label "Make lv2core.ttl a valid OWL 2 DL ontology."
2852 rdfs:label "Improve documentation."
2856 doap:revision "4.0" ;
2857 doap:created "2011-03-18" ;
2858 doap:file-release <http://lv2plug.in/spec/lv2core-4.0.tar.bz2> ;
2859 dcs:blame <http://drobilla.net/drobilla#me> ;
2862 rdfs:label "Make doap:license suggested, but not required (for wrappers)."
2864 rdfs:label "Define lv2:binary (MUST be in manifest.ttl)."
2866 rdfs:label "Define lv2:minorVersion and lv2:microVersion (MUST be in manifest.ttl)."
2868 rdfs:label "Define lv2:documentation and use it to document lv2core."
2870 rdfs:label "Add lv2:FunctionPlugin and lv2:ConstantPlugin classes."
2872 rdfs:label "Move lv2:AmplifierPlugin under lv2:DynamicsPlugin."
2874 rdfs:label "Loosen domain of lv2:optionalFeature and lv2:requiredFeature (to allow re-use in extensions)."
2876 rdfs:label "Add generic lv2:Resource and lv2:PluginBase classes."
2878 rdfs:label "Fix definition of lv2:minimum etc. (used for values, not scale points)."
2880 rdfs:label "More precisely define properties with OWL."
2882 rdfs:label "Move project metadata to manifest."
2884 rdfs:label "Add lv2:enumeration port property."
2886 rdfs:label "Define run() pre-roll special case (sample_count == 0)."
2890 doap:revision "3.0" ;
2891 doap:created "2008-11-08" ;
2892 doap:file-release <http://lv2plug.in/spec/lv2core-3.0.tar.bz2> ;
2893 dcs:blame <http://drobilla.net/drobilla#me> ;
2896 rdfs:label "Require that serialisations refer to ports by symbol rather than index."
2898 rdfs:label "Minor stylistic changes to lv2.ttl."
2900 rdfs:label "No header changes."
2904 doap:revision "2.0" ;
2905 doap:created "2008-02-10" ;
2906 doap:file-release <http://lv2plug.in/spec/lv2core-2.0.tar.gz> ;
2907 dcs:blame <http://drobilla.net/drobilla#me> ;
2910 rdfs:label "Initial release."
2914 lv2:documentation """
2916LV2 is an interface for writing audio plugins in C or compatible languages,
2917which can be dynamically loaded into many _host_ applications. This core
2918specification is simple and minimal, but is designed so that _extensions_ can
2919be defined to add more advanced features, making it possible to implement
2922LV2 maintains a strong distinction between code and data. Plugin code is in a
2923shared library, while data is in a companion data file written in
2924[Turtle](https://www.w3.org/TR/turtle/). Code, data, and any other resources
2925(such as wav)lv2ttl" R"lv2ttl(eforms) are shipped together in a bundle directory. The code
2926contains only the executable portions of the plugin. All other data is
2927provided in the data file(s). This makes plugin data flexible and extensible,
2928and allows the host to do everything but run the plugin without loading or
2929executing any code. Among other advantages, this makes hosts more robust
2930(broken plugins can't crash a host during discovery) and allows generic tools
2931written in any language to work with LV2 data. The LV2 specification itself is
2932distributed in a similar way.
2934An LV2 plugin library is suitable for dynamic loading (for example with
2935`dlopen()`) and provides one or more plugin descriptors via `lv2_descriptor()`
2936or `lv2_lib_descriptor()`. These can be instantiated to create plugin
2937instances, which can be run directly on data or connected together to perform
2938advanced signal processing tasks.
2940Plugins communicate via _ports_, which can transmit any type of data. Data is
2941processed by first connecting each port to a buffer, then repeatedly calling
2942the `run()` method to process blocks of data.
2944This core specification defines two types of port, equivalent to those in
2945[LADSPA](http://www.ladspa.org/), lv2:ControlPort and lv2:AudioPort, as well as
2946lv2:CVPort which has the same format as an audio port but is interpreted as
2947non-audible control data. Audio ports contain arrays with one `float` element
2948per sample, allowing a block of audio to be processed in a single call to
2949`run()`. Control ports contain single `float` values, which are fixed and
2950valid for the duration of the call to `run()`. Thus the _control rate_ is
2951determined by the block size, which is controlled by the host (and not
2952necessarily constant).
2956To faciliate use in multi-threaded programs, LV2 functions are partitioned into
2957several threading classes:
2959| Discovery Class | Instantiation Class | Audio Class |
2960|----------------------------------|-------------------------------|------------------------------- |
2961| lv2_descriptor() | LV2_Descriptor::instantiate() | LV2_Descriptor::run() |
2962| lv2_lib_descriptor() | LV2_Descriptor::cleanup() | LV2_Descriptor::connect_port() |
2963| LV2_Descriptor::extension_data() | LV2_Descriptor::activate() | |
2964| | LV2_Descriptor::deactivate() | |
2966Hosts MUST guarantee that:
2968 * A function in any class is never called concurrently with another function
2971 * A _Discovery_ function is never called concurrently with any other fuction
2972 in the same shared object file.
2974 * An _Instantiation_ function for an instance is never called concurrently
2975 with any other function for that instance.
2977Any simultaneous calls that are not explicitly forbidden by these rules are
2978allowed. For example, a host may call `run()` for two different plugin
2979instances simultaneously.
2981Plugin functions in any class MUST NOT manipulate any state which might affect
2982other plugins or the host (beyond the contract of that function), for example
2983by using non-reentrant global functions.
2985Extensions to this specification which add new functions MUST declare in which
2986of these classes the functions belong, define new classes for them, or
2987otherwise precisely describe their threading rules.
2992 lv2:documentation """
2994An LV2 specification typically contains a vocabulary description, C headers to
2995define an API, and any other resources that may be useful. Specifications,
2996like plugins, are distributed and installed as bundles so that hosts may
3002 lv2:documentation """
3004This datatype is typically used for documentation in
3005[Markdown](https://daringfireball.net/projects/markdown/syntax) syntax.
3007Generally, documentation with this datatype should stay as close to readable
3008plain text as possible, but may use core Markdown syntax for nicer
3009presentation. Documentation can assume that basic extensions like codehilite
3010and tables are available.
3015 lv2:documentation """
3017Relates a Resource to extended documentation.
3019LV2 specifications are documented using this property with an lv2:Markdown
3022If the value has no explicit datatype, it is assumed to be a valid XHTML Basic
30231.1 fragment suitable for use as the content of the `body` element of a page.
3025XHTML Basic is a W3C Recommendation which defines a simplified subset of XHTML
3026intended to be reasonable to implement with limited resources, for exampe on
3027embedded devices. See [XHTML Basic, Section
30283](http://www.w3.org/TR/xhtml-basic/#s_xhtmlmodules) for a list of valid tags.
3033 lv2:documentation """
3035An abstract plugin-like resource that may not actually be an LV2 plugin, for
3036example that may not have a lv2:binary. This is useful for describing things
3037that share common structure with a plugin, but are not themselves an actul
3038plugin, such as presets.
3043 lv2:documentation """
3045To be discovered by hosts, plugins MUST explicitly have an rdf:type of lv2:Plugin
3046in their bundle's manifest, for example:
3049 <http://example.org/my-plugin> a lv2:Plugin .
3051Plugins should have a doap:name property that is at most a few words in length
3052using title capitalization, for example <q>Tape Delay Unit</q>.
3057 lv2:documentation """
3059Similar to lv2:PluginBase, this is an abstract port-like resource that may not
3060be a fully specified LV2 port. For example, this is used for preset "ports"
3061which do not specify an index.
3066 lv2:documentation """
3068All LV2 port descriptions MUST have a rdf:type that is one of lv2:Port,
3069lv2:InputPort or lv2:OutputPort. Additionally, there MUST be at least one
3070other rdf:type which more precisely describes type of the port, for example
3073Hosts that do not support a specific port class MUST NOT instantiate the
3074plugin, unless that port has the lv2:connectionOptional property set.
3076A port has two identifiers: a (numeric) index, and a (textual) symbol. The
3077index can be used as an identifier at run-time, but persistent references to
3078ports (for example in presets or save files) MUST use the symbol. Only the
3079symbol is guaranteed to refer to the same port on all plugins with a given URI,
3080that is the index for a port may differ between plugin binaries.
3085 lv2:documentation """
3087Ports of this type are connected to a buffer of `float` audio samples, which
3088the host guarantees have `sample_count` elements in any call to
3089LV2_Descriptor::run().
3091Audio samples are normalized between -1.0 and 1.0, though there is no
3092requirement for samples to be strictly within this range.
3097 lv2:documentation """
3099Ports of this type have the same buffer format as an lv2:AudioPort, except the
3100buffer represents audio-rate control data rather than audio. Like a
3101lv2:ControlPort, a CV port SHOULD have properties describing its value, in
3102particular lv2:minimum, lv2:maximum, and lv2:default.
3104Hosts may present CV ports to users as controls in the same way as control
3105ports. Conceptually, aside from the buffer format, a CV port is the same as a
3106control port, so hosts can use all the same properties and expectations.
3108In particular, this port type does not imply any range, unit, or meaning for
3109its values. However, if there is no inherent unit to the values, for example
3110if the port is used to modulate some other value, then plugins SHOULD use a
3111normalized range, either from -1.0 to 1.0, or from 0.0 to 1.0.
3113It is generally safe to connect an audio output to a CV input, but not
3114vice-versa. Hosts must take care to prevent data from a CVPort port from being
3120 lv2:documentation """
3122This property provides a way to )lv2ttl" R"lv2ttl(group plugins and/or related resources. A
3123project may have useful metadata common to all plugins (such as homepage,
3124author, version history) which would be wasteful to list separately for each
3127Grouping via projects also allows users to find plugins in hosts by project,
3128which is often how they are remembered. For this reason, a project that
3129contains plugins SHOULD always have a doap:name. It is also a good idea for
3130each plugin and the project itself to have an lv2:symbol property, which allows
3131nice quasi-global identifiers for plugins, for example `myproj.superamp` which
3132can be useful for display or fast user entry.
3137 lv2:documentation """
3139This property can be used to <q>include</q> common properties in several
3140descriptions, serving as a sort of template mechanism. If a plugin has a
3141prototype, then the host must load all the properties for the prototype as if
3142they were properties of the plugin. That is, if `:plug lv2:prototype :prot`,
3143then for each triple `:prot p o`, the triple `:plug p o` should be loaded.
3145This facility is useful for distributing data-only plugins that rely on a
3146common binary, for example those where the internal state is loaded from some
3147other file. Such plugins can refer to a prototype in a template LV2 bundle
3148which is installed by the corresponding software.
3153 lv2:documentation """
3155This, along with lv2:microVersion, is used to distinguish between different
3156versions of the <q>same</q> resource, for example to load only the bundle with
3157the most recent version of a plugin. An LV2 version has a minor and micro
3158number with the usual semantics:
3160 * The minor version MUST be incremented when backwards (but not forwards)
3161 compatible additions are made, for example the addition of a port to a
3164 * The micro version is incremented for changes which do not affect
3165 compatibility at all, for example bug fixes or documentation updates.
3167Note that there is deliberately no major version: all versions with the same
3168URI are compatible by definition. Replacing a resource with a newer version of
3169that resource MUST NOT break anything. If a change violates this rule, then
3170the URI of the resource (which serves as the major version) MUST be changed.
3172Plugins and extensions MUST adhere to at least the following rules:
3174 * All versions of a plugin with a given URI MUST have the <q>same</q> set of
3175 mandatory (not lv2:connectionOptional) ports with respect to lv2:symbol and
3176 rdf:type. In other words, every port on a particular version is guaranteed
3177 to exist on a future version with same lv2:symbol and at least those
3180 * New ports MAY be added without changing the plugin URI if and only if they
3181 are lv2:connectionOptional and the minor version is incremented.
3183 * The minor version MUST be incremented if the index of any port (identified
3184 by its symbol) is changed.
3186 * All versions of a specification MUST be compatible in the sense that an
3187 implementation of the new version can interoperate with an implementation
3188 of any previous version.
3190Anything that depends on a specific version of a plugin (including referencing
3191ports by index) MUST refer to the plugin by both URI and version. However,
3192implementations should be tolerant where possible.
3194When hosts discover several installed versions of a resource, they SHOULD warn
3195the user and load only the most recent version.
3197An odd minor _or_ micro version, or minor version zero, indicates that the
3198resource is a development version. Hosts and tools SHOULD clearly indicate
3199this wherever appropriate. Minor version zero is a special case for
3200pre-release development of plugins, or experimental plugins that are not
3201intended for stable use at all. Hosts SHOULD NOT expect such a plugin to
3202remain compatible with any future version. Where feasible, hosts SHOULD NOT
3203expose such plugins to users by default, but may provide an option to display
3209 lv2:documentation """
3211Releases of plugins and extensions MUST be explicitly versioned. Correct
3212version numbers MUST always be maintained for any versioned resource that is
3213published. For example, after a release, if a change is made in the development
3214version in source control, the micro version MUST be incremented (to an odd
3215number) to distinguish this modified version from the previous release.
3217This property describes half of a resource version. For detailed documentation
3218on LV2 resource versioning, see lv2:minorVersion.
3223 lv2:documentation """
3225The value of this property must be the URI of a shared library object,
3226typically in the same bundle as the data file which contains this property.
3227The actual type of the library is platform specific.
3229This is a required property of a lv2:Plugin which MUST be included in the
3230bundle's `manifest.ttl` file. The lv2:binary of a lv2:Plugin is the shared
3231object containing the lv2_descriptor() or lv2_lib_descriptor() function. This
3232probably may also be used similarly by extensions to relate other resources to
3233their implementations (it is not implied that a lv2:binary on an arbitrary
3234resource is an LV2 plugin library).
"""^^lv2:Markdown .
3237 lv2:documentation """
3239This is primarily intended for discovery purposes: bundles that describe
3240resources that work with particular plugins (like presets or user interfaces)
3241SHOULD specify this in their `manifest.ttl` so the host can associate them with
3242the correct plugin. For example:
3247 lv2:appliesTo <plugin> ;
3248 rdfs:seeAlso <thing.ttl> .
3250Using this pattern is preferable for large amounts of data, since the host may
3251choose whether/when to load the data.
3256 lv2:documentation """
3258The first character of a symbol must be one of `_`, `a-z` or `A-Z`, and
3259subsequent characters may additionally be `0-9`. This is, among other things,
3260a valid C identifier, and generally compatible in most contexts which have
3261restrictions on string identifiers, such as file paths.
3266 lv2:documentation """
3268The value of this property MUST be a valid lv2:Symbol, and MUST NOT have a
3271A symbol is a unique identifier with respect to the parent, for example a
3272port's symbol is a unique identifiers with respect to its plugin. The plugin
3273author MUST change the plugin URI if any port symbol is changed or removed.
3278 lv2:documentation """
3280Unlike lv2:symbol, this is unrestricted, may be translated, and is not relevant
3281for compatibility. The name is not necessarily unique and MUST NOT be used as
3287 lv2:documentation """
3289This is the same as lv2:name, with the additional requirement that the value is
3290shorter than 16 characters.
3295 lv2:documentation """
3297A designation is metadata that describes the meaning or role of something. By
3298assigning a designation to a port using lv2:designation, the port's content
3299becomes meaningful and can be used more intelligently by the host.
3304 lv2:documentation """
3306A specific channel, for example the <q>left</q> channel of a stereo stream. A
3307channel may be audio, or another type such as a MIDI control stream.
3312 lv2:documentation """
3314A parameter is a designation for a control.
3316A parameter defines the meaning of a control, not the method of conveying its
3317value. For example, a parameter could be controlled via a lv2:ControlPort,
3320A lv2:ControlPort can be associated with a parameter using lv2:designation.
3325 lv2:documentation """
3327This property is used to give a port's contents a well-defined meaning. For
3328example, if a port has the designation `eg:gain`, then the value of that port
3329re)lv2ttl" R"lv2ttl(presents the `eg:gain` of the plugin instance.
3331Ports should be given designations whenever possible, particularly if a
3332suitable designation is already defined. This allows the host to act more
3333intelligently and provide a more effective user interface. For example, if the
3334plugin has a BPM parameter, the host may automatically set that parameter to
3340 lv2:documentation """
3342If true, this means that all processing is happening as quickly as possible,
3343not in real-time. When free-wheeling there is no relationship between the
3344passage of real wall-clock time and the passage of time in the data being
3350 lv2:documentation """
3352If this value is greater than zero, the plugin processes normally. If this
3353value is zero, the plugin is expected to bypass all signals unmodified. The
3354plugin must provide a click-free transition between the enabled and disabled
3357Values less than zero are reserved for future use (such as click-free
3358insertion/removal of latent plugins), and should be treated like zero
3359(bypassed) by current implementations.
3364 lv2:documentation """
3366This should be used as the lv2:designation of ports that are used to send
3367commands and receive responses. Typically this will be an event port that
3368supports some protocol, for example MIDI or LV2 Atoms.
3373 lv2:documentation """
3375 * A Point MUST have at least one rdfs:label which is a string.
3377 * A Point MUST have exactly one rdf:value with a type that is compatible with
3378 the type of the corresponding Port.
3383 lv2:documentation """
3385The host SHOULD set the port to this value initially, and in any situation
3386where the port value should be cleared or reset.
3391 lv2:documentation """
3393This is a soft limit: the plugin is required to gracefully accept all values in
3394the range of a port's data type.
3399 lv2:documentation """
3401This is a soft limit: the plugin is required to gracefully accept all values in
3402the range of a port's data type.
3407 lv2:documentation """
3409To support this feature, the host MUST pass its URI and any additional data to
3410the plugin in LV2_Descriptor::instantiate().
3412The plugin MUST NOT fail to instantiate if an optional feature is not supported
3418 lv2:documentation """
3420To support this feature, the host MUST pass its URI and any additional data to
3421the plugin in LV2_Descriptor::instantiate().
3423The host MUST check this property before attempting to instantiate a plugin,
3424and not attempt to instantiate plugins which require features it does not
3425support. The plugin MUST fail to instantiate if a required feature is not
3426supported by the host. Note that these rules are intentionally redundant for
3427resilience: neither host nor plugin should assume that the other does not
3433 lv2:documentation """
3435This is additional data that a plugin may return from
3436LV2_Descriptor::extension_data(). This is generally used to add APIs to extend
3437that defined by LV2_Descriptor.
3442 lv2:documentation """
3444If a plugin has a value for this property, it must be a URI that defines the
3445extension data. The plugin should return the appropriate data when
3446LV2_Descriptor::extension_data() is called with that URI as a parameter.
3451 lv2:documentation """
3453This feature is for plugins that have time-sensitive internals, for example
3454communicating in real time over a socket. It indicates to the host that its
3455input and output must not be cached or subject to significant latency, and that
3456calls to LV2_Descriptor::run() should be made at a rate that roughly
3457corresponds to wall clock time (according to the `sample_count` parameter).
3459Note that this feature is not related to <q>hard real-time</q> execution
3460requirements (see lv2:hardRTCapable).
"""^^lv2:Markdown .
3463 lv2:documentation """
3465This feature indicates that the plugin may not work correctly if the host
3466elects to use the same data location for both input and output. Plugins that
3467will fail to work correctly if ANY input port is connected to the same location
3468as ANY output port MUST require this feature. Doing so should be avoided
3469whenever possible since it prevents hosts from running the plugin on data
3475 lv2:documentation """
3477This feature indicates that the plugin is capable of running in a <q>hard
3478real-time</q> environment. This should be the case for most audio processors,
3479so most plugins are expected to have this feature.
3481To support this feature, plugins MUST adhere to the following in all of their
3482audio class functions (LV2_Descriptor::run() and
3483LV2_Descriptor::connect_port()):
3485 * There is no use of `malloc()`, `free()` or any other heap memory management
3488 * There is no use of any library functions which do not adhere to these
3489 rules. The plugin may assume that the standard C math library functions
3492 * There is no access to files, devices, pipes, sockets, system calls, or any
3493 other mechanism that might result in the process or thread blocking.
3495 * The maximum amount of time for a `run()` call is bounded by some expression
3496 of the form `A + B * sample_count`, where `A` and `B` are platform specific
3497 constants. Note that this bound does not depend on input signals or plugin
3503 lv2:documentation """
3505States that a port has a particular lv2:PortProperty. This may be ignored
3506without catastrophic effects, though it may be useful, for example to provide a
3507sensible user interface for the port.
3511lv2:connectionOptional
3512 lv2:documentation """
3514This property means that the port does not have to be connected to valid data
3515by the host. To leave a port <q>unconnected</q>, the host MUST explicitly
3516connect the port to `NULL`.
3521 lv2:documentation """
3523This property indicates that the port is used to express the processing latency
3524incurred by the plugin, expressed in samples. The latency may be affected by
3525the current sample rate, plugin settings, or other factors, and may be changed
3526by the plugin at any time. Where the latency is frequency dependent the plugin
3527may choose any appropriate value. If a plugin introduces latency it MUST
3528provide EXACTLY ONE port with this property set. In <q>fuzzy</q> cases the
3529value should be the most reasonable one based on user expectation of
3530input/output alignment. For example, musical delay plugins should not report
3531their delay as latency, since it is an intentional effect that the host should
3534This property is deprecated, use a lv2:designation of lv2:latency instead,
3535following the same rules as above:
3538 <http://example.org/plugin>
3540 a lv2:OutputPort , lv2:ControlPort ;
3541 lv2:designation lv2:latency ;
3542 lv2:symbol "latency" ;
3548 lv2:documentation """
3550Indicates that the data item should be considered a boolean toggle. Data less
3551than or equal to zero should be considered <q>off</q> or <q>false</q>, and data
3552above zero should be considered <q>on</q> or <q>true</q>.
3557 lv2:documentation """
3559Indicates that any specified bounds should be interpreted as multiples of the
3560sample rate. For example, a frequency range from 0 Hz to the Nyquist frequency
3561(half the sample rate) can be specified by using this property with lv2:minimum
35620.0 and lv2:maximum 0.5. Hosts that support bounds at all MUST support this
3568 lv2:documentation """
3570Indicates that all the reasonable values for a port)lv2ttl" R"lv2ttl( are integers. For such
3571ports, a user interface should provide a stepped control that only allows
3572choosing integer values.
3574Note that this is only a hint, and that the plugin MUST operate reasonably even
3575if such a port has a non-integer value.
3580 lv2:documentation """
3582Indicates that all the rasonable values for a port are defined by
3583lv2:scalePoint properties. For such ports, a user interface should provide a selector that allows the user to choose any of the scale point values by name. It is recommended to show the value as well if possible.
3585Note that this is only a hint, and that the plugin MUST operate reasonably even
3586if such a port has a value that does not correspond to a scale point.
3591 lv2:documentation """
3593Indicates that a port is a <q>sidechain</q>, which affects the output somehow
3594but should not be considered a part of the main signal chain. Sidechain ports
3595SHOULD be lv2:connectionOptional, and may be ignored by hosts.
3601, juce::lv2::BundleResource
3604R
"lv2ttl(@prefix doap: <http://usefulinc.com/ns/doap#> .
3605@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
3606@prefix owl: <http://www.w3.org/2002/07/owl#> .
3607@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
3608@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
3609@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
3611<http://lv2plug.in/ns/lv2core>
3614 rdfs:comment "An extensible open standard for audio plugins." ;
3615 rdfs:seeAlso <lv2.h> ,
3617 <lv2core.meta.ttl> .
3622 rdfs:subClassOf doap:Project ;
3623 rdfs:label "Specification" ;
3624 rdfs:comment "An LV2 specifiation." .
3628 owl:onDatatype xsd:string ;
3629 rdfs:label "Markdown" ;
3630 rdfs:comment "A string in Markdown syntax." .
3634 owl:AnnotationProperty ;
3635 rdfs:range rdfs:Literal ;
3636 rdfs:label "documentation" ;
3637 rdfs:comment "Extended documentation." ;
3638 rdfs:seeAlso <http://www.w3.org/TR/xhtml-basic/> .
3643 rdfs:label "Plugin Base" ;
3644 rdfs:comment "Base class for a plugin-like resource." .
3649 rdfs:subClassOf lv2:PluginBase ;
3650 rdfs:label "Plugin" ;
3651 rdfs:comment "An LV2 plugin." ;
3654 owl:onProperty doap:name ;
3655 owl:someValuesFrom rdf:PlainLiteral ;
3656 rdfs:comment "A plugin MUST have at least one untranslated doap:name."
3659 owl:onProperty lv2:port ;
3660 owl:allValuesFrom lv2:Port ;
3661 rdfs:comment "All ports on a plugin MUST be fully specified lv2:Port instances."
3667 rdfs:label "Port Base" ;
3668 rdfs:comment "Base class for a port-like resource." ;
3671 owl:onProperty lv2:symbol ;
3673 rdfs:comment "A port MUST have exactly one lv2:symbol."
3680 rdfs:comment "An LV2 plugin port." ;
3681 rdfs:subClassOf lv2:PortBase ,
3684 owl:onProperty lv2:name ;
3685 owl:minCardinality 1 ;
3686 rdfs:comment "A port MUST have at least one lv2:name."
3692 rdfs:subClassOf lv2:Port ;
3693 rdfs:label "Input Port" ;
3694 rdfs:comment "A port connected to constant data which is read during `run()`." .
3699 rdfs:subClassOf lv2:Port ;
3700 rdfs:label "Output Port" ;
3701 rdfs:comment "A port connected to data which is written during `run()`." .
3706 rdfs:subClassOf lv2:Port ;
3707 rdfs:label "Control Port" ;
3708 rdfs:comment "A port connected to a single `float`." .
3713 rdfs:subClassOf lv2:Port ;
3714 rdfs:label "Audio Port" ;
3715 rdfs:comment "A port connected to an array of float audio samples." .
3720 rdfs:subClassOf lv2:Port ;
3721 rdfs:label "CV Port" ;
3722 rdfs:comment "A port connected to an array of float control values." .
3726 owl:ObjectProperty ;
3727 rdfs:domain lv2:PluginBase ;
3728 rdfs:range lv2:PortBase ;
3730 rdfs:comment "A port (input or output) on this plugin." .
3734 owl:ObjectProperty ;
3735 rdfs:range doap:Project ;
3736 rdfs:label "project" ;
3737 rdfs:comment "The project this is a part of." .
3741 owl:ObjectProperty ;
3742 rdfs:label "prototype" ;
3743 rdfs:comment "The prototype to inherit properties from." .
3747 owl:DatatypeProperty ;
3748 rdfs:range xsd:nonNegativeInteger ;
3749 rdfs:label "minor version" ;
3750 rdfs:comment "The minor version of this resource." .
3754 owl:DatatypeProperty ;
3755 rdfs:range xsd:nonNegativeInteger ;
3756 rdfs:label "micro version" ;
3757 rdfs:comment "The micro version of this resource." .
3761 owl:ObjectProperty ;
3762 rdfs:range owl:Thing ;
3763 rdfs:label "binary" ;
3764 rdfs:comment "The binary of this resource." .
3768 owl:ObjectProperty ;
3769 rdfs:range lv2:Plugin ;
3770 rdfs:label "applies to" ;
3771 rdfs:comment "The plugin this resource is related to." .
3775 owl:DatatypeProperty ,
3776 owl:FunctionalProperty ;
3777 rdfs:range xsd:unsignedInt ;
3778 rdfs:label "index" ;
3779 rdfs:comment "A non-negative zero-based 32-bit index." .
3783 owl:onDatatype xsd:string ;
3784 owl:withRestrictions (
3786 xsd:pattern "[_a-zA-Z][_a-zA-Z0-9]*"
3789 rdfs:label "Symbol" ;
3790 rdfs:comment "A short restricted name used as a strong identifier." .
3794 owl:DatatypeProperty ,
3795 owl:FunctionalProperty ;
3796 rdfs:label "symbol" ;
3797 rdfs:range lv2:Symbol ,
3799 rdfs:comment "The symbol that identifies this resource in the context of its parent." .
3803 owl:DatatypeProperty ;
3805 rdfs:range xsd:string ;
3806 rdfs:comment "A display name for labeling in a user interface." .
3810 owl:DatatypeProperty ;
3811 rdfs:label "short name" ;
3812 rdfs:range xsd:string ;
3813 rdfs:comment "A short display name for labeling in a user interface." .
3818 rdfs:subClassOf rdf:Property ;
3819 rdfs:label "Designation" ;
3820 rdfs:comment "A designation which defines the meaning of some data." .
3825 rdfs:subClassOf lv2:Designation ;
3826 rdfs:label "Channel" ;
3827 rdfs:comment "An individual channel, such as left or right." .
3832 rdfs:subClassOf lv2:Designation ,
3834 rdfs:label "Parameter" ;
3835 rdfs:comment "A property that is a plugin parameter." .
3839 owl:ObjectProperty ,
3840 owl:FunctionalProperty ;
3841 rdfs:range rdf:Property ;
3842 rdfs:label "designation" ;
3843 rdfs:comment "The designation that defines the meaning of this input or output." .
3847 owl:DatatypeProperty ;
3848 rdfs:range xsd:nonNegativeInteger ;
3849 rdfs:label "latency" ;
3850 rdfs:comment "The latency introduced, in frames." .
3854 owl:DatatypeProperty ;
3855 rdfs:label "free-wheeling" ;
3856 rdfs:range xsd:boolean ;
3857 rdfs:comment "Whether processing is currently free-wheeling." .
3861 owl:DatatypeProperty ;
3862 rdfs:label "enabled" ;
3863 rdfs:range xsd:int ;
3864 rdfs:comment "Whether processing is currently enabled (not bypassed)." .
3868 rdfs:label "control" ;
3869 rdfs:comment "The primary control channel." .
3874 rdfs:label "Point" ;
3875 rdfs:comment "An interesting point in a value range." .
3880 rdfs:subClassOf lv2:Point ;
3881 rdfs:label "Scale Point" ;
3882 rdfs:comment "A single `float` Point for control inputs." .
3886 owl:ObjectProperty ;
3887 rdfs:range lv2:ScalePoint ;
3888 rdfs:label "scale point" ;
3889 rdfs:comment "A scale point of a port or parameter." .
3893 owl:DatatypeProperty ,
3894 owl:FunctionalProperty ;
3895 rdfs:label "default" ;
3896 rdfs:comment "The default value for this control." .
3900 owl:DatatypeProperty ,
3901 owl:FunctionalProperty ;
3902 rdfs:label "minimum" ;
3903 rdfs:comment "The minimum value for this control." .
3907 owl:DatatypeProperty ,
3908 owl:FunctionalProperty ;
3909 rdfs:label "maximum" ;
3910 rdfs:comment "The maximum value for this control." .
3915 rdfs:label "Feature" ;
3916 rdfs:comment "An additional feature which may be used or required." .
3920 owl:ObjectProperty ;
3921 rdfs:range lv2:Feature ;
3922 rdfs:label "optional feature" ;
3923 rdfs:comment "An optional feature that is supported if available." .
3927 owl:ObjectProperty ;
3928 rdfs:range lv2:Feature ;
3929 rdfs:label "required feature" ;
3930 rdfs:comment "A requir)lv2ttl" R"lv2ttl(ed feature that must be available to run." .
3935 rdfs:label "Extension Data" ;
3936 rdfs:comment "Additional data defined by an extension." .
3940 owl:ObjectProperty ;
3941 rdfs:range lv2:ExtensionData ;
3942 rdfs:label "extension data" ;
3943 rdfs:comment "Extension data provided by a plugin or other binary." .
3947 rdfs:label "is live" ;
3948 rdfs:comment "Plugin has a real-time dependency." .
3952 rdfs:label "in-place broken" ;
3953 rdfs:comment "Plugin requires separate locations for input and output." .
3957 rdfs:label "hard real-time capable" ;
3958 rdfs:comment "Plugin is capable of running in a hard real-time environment." .
3963 rdfs:label "Port Property" ;
3964 rdfs:comment "A particular property that a port has." .
3968 owl:ObjectProperty ;
3969 rdfs:domain lv2:Port ;
3970 rdfs:range lv2:PortProperty ;
3971 rdfs:label "port property" ;
3972 rdfs:comment "A property of this port hosts may find useful." .
3974lv2:connectionOptional
3975 a lv2:PortProperty ;
3976 rdfs:label "connection optional" ;
3977 rdfs:comment "The property that this port may be connected to NULL." .
3980 a lv2:PortProperty ;
3981 owl:deprecated "true"^^xsd:boolean ;
3982 rdfs:label "reports latency" ;
3983 rdfs:comment "Control port value is the plugin latency in frames." .
3986 a lv2:PortProperty ;
3987 rdfs:label "toggled" ;
3988 rdfs:comment "Control port value is considered a boolean toggle." .
3991 a lv2:PortProperty ;
3992 rdfs:label "sample rate" ;
3993 rdfs:comment "Control port bounds are interpreted as multiples of the sample rate." .
3996 a lv2:PortProperty ;
3997 rdfs:label "integer" ;
3998 rdfs:comment "Control port values are treated as integers." .
4001 a lv2:PortProperty ;
4002 rdfs:label "enumeration" ;
4003 rdfs:comment "Control port scale points represent all useful values." .
4006 a lv2:PortProperty ;
4007 rdfs:label "is side-chain" ;
4008 rdfs:comment "Signal for port should not be considered a main input or output." .
4013 rdfs:subClassOf lv2:Plugin ;
4014 rdfs:label "Generator Plugin" ;
4015 rdfs:comment "A plugin that generates new sound internally." .
4020 rdfs:subClassOf lv2:GeneratorPlugin ;
4021 rdfs:label "Instrument Plugin" ;
4022 rdfs:comment "A plugin intended to be played as a musical instrument." .
4027 rdfs:subClassOf lv2:GeneratorPlugin ;
4028 rdfs:label "Oscillator Plugin" ;
4029 rdfs:comment "A plugin that generates output with an oscillator." .
4034 rdfs:subClassOf lv2:Plugin ;
4035 rdfs:label "Utility Plugin" ;
4036 rdfs:comment "A utility plugin that is not a typical audio effect or generator." .
4041 rdfs:subClassOf lv2:UtilityPlugin ;
4042 rdfs:label "Converter Plugin" ;
4043 rdfs:comment "A plugin that converts its input into a different form." .
4048 rdfs:subClassOf lv2:UtilityPlugin ;
4049 rdfs:label "Analyser Plugin" ;
4050 rdfs:comment "A plugin that analyses its input and emits some useful information." .
4055 rdfs:subClassOf lv2:UtilityPlugin ;
4056 rdfs:label "Mixer Plugin" ;
4057 rdfs:comment "A plugin that mixes some number of inputs into some number of outputs." .
4062 rdfs:subClassOf lv2:Plugin ;
4063 rdfs:label "Simulator Plugin" ;
4064 rdfs:comment "A plugin that aims to emulate some environmental effect or musical equipment." .
4069 rdfs:subClassOf lv2:Plugin ;
4070 rdfs:label "Delay Plugin" ;
4071 rdfs:comment "An effect that intentionally delays its input as an effect." .
4076 rdfs:subClassOf lv2:Plugin ;
4077 rdfs:label "Modulator Plugin" ;
4078 rdfs:comment "An effect that modulats its input as an effect." .
4083 rdfs:subClassOf lv2:Plugin ,
4084 lv2:SimulatorPlugin ,
4086 rdfs:label "Reverb Plugin" ;
4087 rdfs:comment "An effect that adds reverberation to its input." .
4092 rdfs:subClassOf lv2:ModulatorPlugin ;
4093 rdfs:label "Phaser Plugin" ;
4094 rdfs:comment "An effect that periodically sweeps a filter over its input." .
4099 rdfs:subClassOf lv2:ModulatorPlugin ;
4100 rdfs:label "Flanger Plugin" ;
4101 rdfs:comment "An effect that mixes slightly delayed copies of its input." .
4106 rdfs:subClassOf lv2:ModulatorPlugin ;
4107 rdfs:label "Chorus Plugin" ;
4108 rdfs:comment "An effect that mixes significantly delayed copies of its input." .
4113 rdfs:subClassOf lv2:Plugin ;
4114 rdfs:label "Filter Plugin" ;
4115 rdfs:comment "An effect that manipulates the frequency spectrum of its input." .
4120 rdfs:subClassOf lv2:FilterPlugin ;
4121 rdfs:label "Lowpass Filter Plugin" ;
4122 rdfs:comment "A filter that attenuates frequencies above some cutoff." .
4127 rdfs:subClassOf lv2:FilterPlugin ;
4128 rdfs:label "Bandpass Filter Plugin" ;
4129 rdfs:comment "A filter that attenuates frequencies outside of some band." .
4134 rdfs:subClassOf lv2:FilterPlugin ;
4135 rdfs:label "Highpass Filter Plugin" ;
4136 rdfs:comment "A filter that attenuates frequencies below some cutoff." .
4141 rdfs:subClassOf lv2:FilterPlugin ;
4142 rdfs:label "Comb FilterPlugin" ;
4143 rdfs:comment "A filter that adds a delayed version of its input to itself." .
4148 rdfs:subClassOf lv2:FilterPlugin ;
4149 rdfs:label "Allpass Plugin" ;
4150 rdfs:comment "A filter that changes the phase relationship between frequency components." .
4155 rdfs:subClassOf lv2:FilterPlugin ;
4156 rdfs:label "Equaliser Plugin" ;
4157 rdfs:comment "A plugin that adjusts the balance between frequency components." .
4162 rdfs:subClassOf lv2:EQPlugin ;
4163 rdfs:label "Parametric EQ Plugin" ;
4164 rdfs:comment "A plugin that adjusts the balance between configurable frequency components." .
4169 rdfs:subClassOf lv2:EQPlugin ;
4170 rdfs:label "Multiband EQ Plugin" ;
4171 rdfs:comment "A plugin that adjusts the balance between a fixed set of frequency components." .
4176 rdfs:subClassOf lv2:Plugin ;
4177 rdfs:label "Spatial Plugin" ;
4178 rdfs:comment "A plugin that manipulates the position of audio in space." .
4183 rdfs:subClassOf lv2:Plugin ;
4184 rdfs:label "Spectral Plugin" ;
4185 rdfs:comment "A plugin that alters the spectral properties of audio." .
4190 rdfs:subClassOf lv2:SpectralPlugin ;
4191 rdfs:label "Pitch Shifter Plugin" ;
4192 rdfs:comment "A plugin that shifts the pitch of its input." .
4197 rdfs:subClassOf lv2:DynamicsPlugin ;
4198 rdfs:label "Amplifier Plugin" ;
4199 rdfs:comment "A plugin that primarily changes the volume of its input." .
4204 rdfs:subClassOf lv2:DynamicsPlugin ;
4205 rdfs:label "Envelope Plugin" ;
4206 rdfs:comment "A plugin that applies an envelope to its input." .
4211 rdfs:subClassOf lv2:Plugin ;
4212 rdfs:label "Distortion Plugin" ;
4213 rdfs:comment "A plugin that adds distortion to its input." .
4218 rdfs:subClassOf lv2:DistortionPlugin ;
4219 rdfs:label "Waveshaper Plugin" ;
4220 rdfs:comment "An effect that alters t)lv2ttl" R"lv2ttl(he shape of input waveforms." .
4225 rdfs:subClassOf lv2:Plugin ;
4226 rdfs:label "Dynamics Plugin" ;
4227 rdfs:comment "A plugin that alters the envelope or dynamic range of its input." .
4232 rdfs:subClassOf lv2:DynamicsPlugin ;
4233 rdfs:label "Compressor Plugin" ;
4234 rdfs:comment "A plugin that reduces the dynamic range of its input." .
4239 rdfs:subClassOf lv2:DynamicsPlugin ;
4240 rdfs:label "Expander Plugin" ;
4241 rdfs:comment "A plugin that expands the dynamic range of its input." .
4246 rdfs:subClassOf lv2:DynamicsPlugin ;
4247 rdfs:label "Limiter Plugin" ;
4248 rdfs:comment "A plugin that limits its input to some maximum level." .
4253 rdfs:subClassOf lv2:DynamicsPlugin ;
4254 rdfs:label "Gate Plugin" ;
4255 rdfs:comment "A plugin that attenuates signals below some threshold." .
4260 rdfs:subClassOf lv2:UtilityPlugin ;
4261 rdfs:label "Function Plugin" ;
4262 rdfs:comment "A plugin whose output is a mathmatical function of its input." .
4267 rdfs:subClassOf lv2:GeneratorPlugin ;
4268 rdfs:label "Constant Plugin" ;
4269 rdfs:comment "A plugin that emits constant values." .
4274 rdfs:subClassOf lv2:Plugin ;
4275 rdfs:label "MIDI Plugin" ;
4276 rdfs:comment "A plugin that primarily processes MIDI messages." .
4287juce::lv2::BundleResource
4290R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
4291@prefix owl: <http://www.w3.org/2002/07/owl#> .
4292@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> .
4293@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
4294@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4295@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
4297<http://lv2plug.in/ns/ext/port-props>
4299 rdfs:label "LV2 Port Properties" ;
4300 rdfs:comment "Various properties for LV2 plugin ports." ;
4301 rdfs:seeAlso <port-props.meta.ttl> .
4304 a lv2:PortProperty ;
4305 rdfs:label "trigger" ;
4306 rdfs:comment "Port is a momentary trigger." .
4308pprops:supportsStrictBounds
4310 rdfs:label "supports strict bounds" ;
4311 rdfs:comment "A feature indicating plugin support for strict port bounds." .
4313pprops:hasStrictBounds
4314 a lv2:PortProperty ;
4315 rdfs:label "has strict bounds" ;
4316 rdfs:comment "Port has strict bounds which are not internally clamped." .
4319 a lv2:PortProperty ;
4320 rdfs:label "changes are expensive" ;
4321 rdfs:comment "Input port is expensive to change." .
4323pprops:causesArtifacts
4324 a lv2:PortProperty ;
4325 rdfs:label "changes cause artifacts" ;
4326 rdfs:comment "Input port causes audible artifacts when changed." .
4329 a lv2:PortProperty ;
4330 rdfs:label "smooth modulation signal" ;
4331 rdfs:comment "Port carries a smooth modulation signal." .
4334 a lv2:PortProperty ;
4335 rdfs:label "discrete modulation signal" ;
4336 rdfs:comment "Port carries a discrete modulation signal." .
4339 a lv2:PortProperty ;
4340 rdfs:label "logarithmic" ;
4341 rdfs:comment "Port value is logarithmic." .
4344 a lv2:PortProperty ;
4345 rdfs:label "not automatic" ;
4346 rdfs:comment "Port that is not intended to be fed with a modulation signal." .
4349 a lv2:PortProperty ;
4350 rdfs:label "not on GUI" ;
4351 rdfs:comment "Port that should not be displayed on a GUI." .
4353pprops:displayPriority
4355 owl:DatatypeProperty ;
4356 rdfs:domain lv2:Port ;
4357 rdfs:range xsd:nonNegativeInteger ;
4358 rdfs:label "display priority" ;
4359 rdfs:comment "A priority ranking this port in importance to its plugin." .
4363 owl:DatatypeProperty ;
4364 rdfs:domain lv2:Port ;
4365 rdfs:range xsd:nonNegativeInteger ;
4366 rdfs:label "range steps" ;
4367 rdfs:comment "The number of even steps the range should be divided into." .
4371, juce::lv2::BundleResource
4374R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
4375@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4377<http://lv2plug.in/ns/ext/port-props>
4378 a lv2:Specification ;
4379 lv2:minorVersion 1 ;
4380 lv2:microVersion 2 ;
4381 rdfs:seeAlso <port-props.ttl> .
4385, juce::lv2::BundleResource
4387"port-props.meta.ttl",
4388R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
4389@prefix doap: <http://usefulinc.com/ns/doap#> .
4390@prefix foaf: <http://xmlns.com/foaf/0.1/> .
4391@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
4392@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> .
4393@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
4394@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4396<http://lv2plug.in/ns/ext/port-props>
4398 doap:name "LV2 Port Properties" ;
4399 doap:created "2009-01-01" ;
4400 doap:shortdesc "Various properties for LV2 plugin ports." ;
4401 doap:maintainer <http://drobilla.net/drobilla#me> ;
4402 doap:developer <http://lv2plug.in/ns/meta#kfoltman> ;
4404 doap:revision "1.2" ;
4405 doap:created "2012-10-14" ;
4406 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
4407 dcs:blame <http://drobilla.net/drobilla#me> ;
4410 rdfs:label "Use consistent label style."
4414 doap:revision "1.0" ;
4415 doap:created "2012-04-17" ;
4416 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
4417 dcs:blame <http://drobilla.net/drobilla#me> ;
4420 rdfs:label "Initial release."
4424 lv2:documentation """
4426This vocabulary defines various properties for plugin ports, which can be used
4427to better describe how a plugin can be controlled. Using this metadata, hosts
4428can build better UIs for plugins, and provide more advanced automatic
4434 lv2:documentation """
4436Indicates that the data item corresponds to a momentary event that has been
4437detected (control output ports) or is to be triggered (control input ports).
4438For input ports, the port needs to be reset to lv2:default value after run()
4439function of the plugin has returned. If the control port is assigned a GUI
4440widget by the host, the widget should be of auto-off (momentary, one-shot) type
4441- for example, a push button if the port is also declared as lv2:toggled, or a
4442series of push button or auto-clear input box with a "Send" button if the port
4447pprops:supportsStrictBounds
4448 lv2:documentation """
4450Indicates use of host support for pprops:hasStrictBounds port property. A
4451plugin that specifies it as optional feature can omit value clamping for
4452hasStrictBounds ports, if the feature is supported by the host. When specified
4453as required feature, it indicates that the plugin does not do any clamping for
4454input ports that have a pprops:hasStrictBounds property.
4458pprops:hasStrictBounds
4459 lv2:documentation """
4461For hosts that support pprops:supportsStrictBounds, this indicates that the
4462value of the port should never exceed the port's minimum and maximum control
4463points. For input ports, it moves the responsibility for limiting the range of
4464values to host, if it supports pprops:supportsStrictBounds. For output ports,
4465it indicates that values within specified range are to be expected, and
4466breaking that should be considered by the host as error in plugin
4472 lv2:documentation """
4474Input ports only. Indicates that any changes to the port value may trigger
4475expensive background calculation (for example, regeneration of lookup tables in
4476a background thread). Any value changes may have not have immediate effect, or
4477may cause silence or diminished-quality version of the output until background
4478processing is finished. Ports having this property are typically not well
4479suited for connection to outputs of other plugins, and should not be offered as
4480connection targets or for automation by default.
4484pprops:causesArtifacts
4485 lv2:documentation """
4487Input ports only. Indicates that any changes to the port value may produce
4488slight artifacts to produced audio signals (zipper noise and other results of
4489signal discontinuities). Connecting ports of this type to continuous signals
4490is not recommended, and when presenting a list of automation targets, those
4491ports may be marked as artifact-producing.
4496 lv2:documentation """
4498Indicates that the port carries a "smooth" modulation signal. Control input
4499ports of this type are well-suited for being connected to sources of smooth
4500signals (knobs with smoothing, modulation rate oscillators, output ports with
4501continuousCV type, etc.). Typically, the plugin with ports which have this
4502property will implement appropriate smoothing to avoid audio artifacts. For
4503output ports, this property suggests the value of the port is likely to change
4504frequently, and describes a smooth signal (so successive values may be
4505considered points along a curve).
"""^^lv2:Markdown .
4508 lv2:documentation """
4510Indicates that the port carries a "discrete" modulation signal. Input ports of
4511this type are well-suited for being connected to sources of discrete signals
4512(switches, buttons, classifiers, event detectors, etc.). May be combined with
4513pprops:trigger property. For output ports, this property suggests the value of
4514the port describe discrete values that should be interpreted as steps (and not
4515points along a curve).
"""^^lv2:Markdown .
4518 lv2:documentation """
4520Indicates that port value behaviour within specified range (bounds) is a value
4521using logarithmic scale. The lower and upper bounds must be specified, and
4522must be of the same sign.
4527 lv2:documentation """
4529Indicates that the port is not primarily intended to be fed with modulation
4530signals from external sources (other plugins, etc.). It is merely a UI hint
4531and hosts may allow the user to override it.
4536 lv2:documentation """
4538Indicates that the port is not primarily intended to be represented by a
4539separate control in the user interface window (or any similar mechanism used
4540for direct, immediate control of control ports). It is merely a UI hint and
4541hosts may allow the user to override it.
4545pprops:displayPriority
4546 lv2:documentation """
4548Indicates how important a port is to controlling the plugin. If a host can
4549only display some ports of a plugin, it should prefer ports with a higher
4550display priority. Priorities do not need to be unique, and are only meaningful
4551when compared to each other.
4556 lv2:documentation """
4558This value indicates into how many evenly-divided points the (control) port
4559range should be divided for step-wise control. This may be used for changing
4560the value with step-based controllers like arrow keys, mouse wheel, rotary
4563Note that when used with a pprops:logarithmic port, the steps are logarithmic
4564too, and port value can be calculated as:
4567 value = lower * pow(upper / lower, step / (steps - 1))
4569and the step from value is:
4572 step = (steps - 1) * log(value / lower) / log(upper / lower)
4576 * `value` is the port value.
4578 * `step` is the step number (0..steps).
4580 * `steps` is the number of steps (= value of :rangeSteps property).
4582 * `lower` and <code>upper</code> are the bounds.
4595juce::lv2::BundleResource
4598R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
4599@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4601<http://lv2plug.in/ns/ext/midi>
4602 a lv2:Specification ;
4603 lv2:minorVersion 1 ;
4604 lv2:microVersion 10 ;
4605 rdfs:seeAlso <midi.ttl> .
4609, juce::lv2::BundleResource
4612R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
4613@prefix doap: <http://usefulinc.com/ns/doap#> .
4614@prefix foaf: <http://xmlns.com/foaf/0.1/> .
4615@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
4616@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
4617@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4619<http://lv2plug.in/ns/ext/midi>
4621 doap:license <http://opensource.org/licenses/isc> ;
4622 doap:name "LV2 MIDI" ;
4623 doap:shortdesc "A normalised definition of raw MIDI." ;
4624 doap:maintainer <http://drobilla.net/drobilla#me> ;
4625 doap:created "2006-00-00" ;
4626 doap:developer <http://lv2plug.in/ns/meta#larsl> ,
4627 <http://drobilla.net/drobilla#me> ;
4629 doap:revision "1.10" ;
4630 doap:created "2019-02-03" ;
4631 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
4632 dcs:blame <http://drobilla.net/drobilla#me> ;
4635 rdfs:label "Fix incorrect range of midi:chunk."
4639 doap:revision "1.8" ;
4640 doap:created "2012-10-14" ;
4641 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
4642 dcs:blame <http://drobilla.net/drobilla#me> ;
4645 rdfs:label "Use consistent label style."
4647 rdfs:label "Add midi:binding and midi:channel predicates."
4649 rdfs:label "Add midi:HexByte datatype for status bytes and masks."
4651 rdfs:label "Remove non-standard midi:Tick message type."
4653 rdfs:label "Add C definitions for message types and standard controllers."
4655 rdfs:label "Fix definition of SystemExclusive status byte."
4659 doap:revision "1.6" ;
4660 doap:created "2012-04-17" ;
4661 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
4662 dcs:blame <http://drobilla.net/drobilla#me> ;
4665 rdfs:label "Add class definitions for various message types."
4667 rdfs:label "Document how to serialise a MidiEvent to a string."
4669 rdfs:label "Merge with unified LV2 package."
4673 doap:revision "1.4" ;
4674 doap:created "2011-11-21" ;
4675 doap:file-release <http://lv2plug.in/spec/lv2-midi-1.4.tar.bz2> ;
4676 dcs:blame <http://drobilla.net/drobilla#me> ;
4679 rdfs:label "Update packaging."
4681 rdfs:label "Improve documentation."
4685 doap:revision "1.2" ;
4686 doap:created "2011-05-26" ;
4687 doap:file-release <http://lv2plug.in/spec/lv2-midi-1.2.tar.bz2> ;
4688 dcs:blame <http://drobilla.net/drobilla#me> ;
4691 rdfs:label "Add build system for installation."
4693 rdfs:label "Switch to ISC license."
4697 doap:revision "1.0" ;
4698 doap:created "2010-10-04" ;
4699 doap:file-release <http://lv2plug.in/spec/lv2-midi-1.0.tar.gz> ;
4700 dcs:blame <http://drobilla.net/drobilla#me> ;
4703 rdfs:label "Initial release."
4707 lv2:documentation """
4709This specification defines a data type for a MIDI message, midi:MidiEvent,
4710which is normalised for fast and convenient real-time processing. MIDI is the
4711<q>Musical Instrument Digital Interface</q>, a ubiquitous binary standard for
4712controlling digital music devices.
4714For plugins that process MIDI (or other situations where MIDI is sent via a
4715generic transport) the main type defined here, midi:MidiEvent, can be mapped to
4716an integer and used as the type of an LV2 [Atom](atom.html#Atom) or
4717[Event](event.html#Event).
4719This specification also defines a complete vocabulary for the MIDI standard,
4720except for standard controller numbers. These descriptions are detailed enough
4721to express any MIDI message as properties.
4726 lv2:documentation """
4728A single raw MIDI message (a sequence of bytes).
4730This is equivalent to a standard MIDI messages, except with the following
4731restrictions to simplify handling:
4733 * Running status is not allowed, every message must have its own status byte.
4735 * Note On messages with velocity 0 are not allowed. These messages are
4736 equivalent to Note Off in standard MIDI streams, but here only proper Note
4737 Off messages are allowed.
4739 * "Realtime messages" (status bytes 0xF8 to 0xFF) are allowed, but may not
4740 occur inside other messages like they can in standard MIDI streams.
4742 * All messages are complete valid MIDI messages. This means, for example,
4743 that only the first byte in each event (the status byte) may have the
4744 eighth bit set, that Note On and Note Off events are always 3 bytes long,
4747Where messages are communicated, the writer is responsible for writing valid
4748messages, and the reader may assume that all events are valid.
4750If a midi:MidiEvent is serialised to a string, the format should be
4751xsd:hexBinary, for example:
4754 [] eg:someEvent "901A01"^^midi:MidiEvent .
4759 lv2:documentation """
4761This is a status byte with the lower nibble set to zero.
4767, juce::lv2::BundleResource
4770R
"lv2ttl(@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
4771@prefix ev: <http://lv2plug.in/ns/ext/event#> .
4772@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
4773@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
4774@prefix owl: <http://www.w3.org/2002/07/owl#> .
4775@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
4776@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4777@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
4779<http://lv2plug.in/ns/ext/midi>
4781 rdfs:label "LV2 MIDI" ;
4782 rdfs:comment "A normalised definition of raw MIDI." ;
4783 rdfs:seeAlso <midi.h> ,
4788 rdfs:subClassOf midi:SystemRealtime ;
4789 rdfs:label "Active Sense" ;
4790 rdfs:comment "MIDI active sense message." ;
4791 midi:status "FE"^^xsd:hexBinary .
4795 rdfs:subClassOf midi:VoiceMessage ;
4796 rdfs:label "Aftertouch" ;
4797 rdfs:comment "MIDI aftertouch message." ;
4798 midi:statusMask "A0"^^xsd:hexBinary ;
4801 midi:property midi:noteNumber
4804 midi:property midi:pressure
4809 rdfs:subClassOf midi:VoiceMessage ;
4810 rdfs:label "Bender" ;
4811 rdfs:comment "MIDI bender message." ;
4812 midi:statusMask "E0"^^xsd:hexBinary ;
4816 midi:property midi:benderValue
4821 rdfs:subClassOf midi:VoiceMessage ;
4822 rdfs:label "Channel Pressure" ;
4823 rdfs:comment "MIDI channel pressure message." ;
4824 midi:statusMask "D0"^^xsd:hexBinary ;
4827 midi:property midi:pressure
4832 rdfs:label "Chunk" ;
4833 rdfs:comment "A sequence of contiguous bytes in a MIDI message." .
4837 rdfs:subClassOf midi:SystemRealtime ;
4838 rdfs:label "Clock" ;
4839 rdfs:comment "MIDI clock message." ;
4840 midi:status "F8"^^xsd:hexBinary .
4844 rdfs:subClassOf midi:SystemRealtime ;
4845 rdfs:label "Continue" ;
4846 rdfs:comment "MIDI continue message." ;
4847 midi:status "FB"^^xsd:hexBinary .
4851 rdfs:subClassOf midi:VoiceMessage ;
4852 rdfs:label "Controller" ;
4853 rdfs:comment "MIDI controller change message." ;
4854 midi:statusMask "B0"^^xsd:hexBinary ;
4857 midi:property midi:controllerNumber
4860 midi:property midi:controllerValue
4865 owl:onDatatype xsd:hexBinary ;
4866 owl:withRestrictions (
4868 xsd:maxInclusive "FF"
4871 rdfs:label "Hex Byte" ;
4872 rdfs:comment "A hexadecimal byte, which has a value <= FF." .
4877 rdfs:subClassOf ev:Event ,
4879 owl:onDatatype xsd:hexBinary ;
4880 rdfs:label "MIDI Message" ;
4881 rdfs:comment "A single raw MIDI message." .
4885 rdfs:subClassOf midi:VoiceMessage ;
4886 rdfs:label "Note Off" ;
4887 rdfs:comment "MIDI note off message." ;
4888 midi:statusMask "80"^^xsd:hexBinary ;
4891 midi:property midi:noteNumber
4894 midi:property midi:velocity
4899 rdfs:subClassOf midi:VoiceMessage ;
4900 rdfs:label "Note On" ;
4901 rdfs:comment "MIDI note on message." ;
4902 midi:statusMask "90"^^xsd:hexBinary ;
4905 midi:property midi:noteNumber
4908 midi:property midi:velocity
4913 rdfs:subClassOf midi:VoiceMessage ;
4914 rdfs:label "Program Change" ;
4915 rdfs:comment "MIDI program change message." ;
4916 midi:statusMask "C0"^^xsd:hexBinary ;
4919 midi:property midi:programNumber
4924 rdfs:subClassOf midi:SystemCommon ;
4925 rdfs:label "Quarter Frame" ;
4926 rdfs:comment "MIDI quarter frame message." ;
4927 midi:status "F1"^^xsd:hexBinary .
4931 rdfs:subClassOf midi:SystemRealtime ;
4932 rdfs:label "Reset" ;
4933 rdfs:comment "MIDI reset message." ;
4934 midi:status "FF"^^xsd:hexBinary .
4938 rdfs:subClassOf midi:SystemCommon ;
4939 rdfs:label "Song Position" ;
4940 rdfs:comment "MIDI song position pointer message." ;
4941 midi:status "F2"^^xsd:hexBinary ;
4945 midi:property midi:songPosition
4950 rdfs:subClassOf midi:SystemCommon ;
4951 rdfs:label "Song Select" ;
4952 rdfs:comment "MIDI song select message." ;
4953 midi:status "F3"^^xsd:hexBinary .
4957 rdfs:subClassOf midi:SystemRealtime ;
4958 rdfs:label "Start" ;
4959 rdfs:comment "MIDI start message." ;
4960 midi:status "FA"^^xsd:hexBinary .
4964 rdfs:subClassOf midi:SystemRealtime ;
4966 rdfs:comment "MIDI stop message." ;
4967 midi:status "FC"^^xsd:hexBinary .
4971 rdfs:subClassOf midi:SystemMessage ;
4972 rdfs:label "System Common" ;
4973 rdfs:comment "MIDI system common message." .
4977 rdfs:subClassOf midi:SystemMessage ;
4978 rdfs:label "System Exclusive" ;
4979 rdfs:comment "MIDI system exclusive message." ;
4980 midi:status "F0"^^xsd:hexBinary .
4984 rdfs:subClassOf midi:MidiEvent ;
4985 rdfs:label "System Message" ;
4986 rdfs:comment "MIDI system message." ;
4987 midi:statusMask "F0"^^xsd:hexBinary .
4991 rdfs:subClassOf midi:SystemMessage ;
4992 rdfs:label "System Realtime" ;
4993 rdfs:comment "MIDI system realtime message." .
4997 rdfs:subClassOf midi:SystemCommon ;
4998 rdfs:label "Tune Request" ;
4999 rdfs:comment "MIDI tune request message." ;
5000 midi:status "F6"^^xsd:hexBinary .
5004 rdfs:subClassOf midi:MidiEvent ;
5005 rdfs:label "Voice Message" ;
5006 rdfs:comment "MIDI voice message." ;
5007 midi:statusMask "F0"^^xsd:hexBinary .
5011 owl:DatatypeProperty ,
5012 owl:FunctionalProperty ;
5013 rdfs:label "bender value" ;
5014 rdfs:range xsd:short ;
5015 rdfs:comment "MIDI pitch bender message (-8192 to 8192)." .
5019 owl:ObjectProperty ;
5020 rdfs:range midi:MidiEvent ;
5021 rdfs:label "binding" ;
5022 rdfs:comment "The MIDI event to bind a parameter to." .
5026 owl:DatatypeProperty ;
5027 rdfs:label "byte number" ;
5028 rdfs:domain midi:Chunk ;
5029 rdfs:range xsd:unsignedByte ;
5030 rdfs:comment "The 0-based index of a byte which is part of this chunk." .
5034 owl:DatatypeProperty ,
5035 owl:FunctionalProperty ;
5036 rdfs:label "MIDI channel" ;
5037 rdfs:range xsd:unsignedByte ;
5038 rdfs:comment "The channel number of a MIDI message." .
5042 owl:ObjectProperty ;
5043 rdfs:range midi:Chunk ;
5044 rdfs:label "MIDI chunk" ;
5045 rdfs:comment "A chunk of a MIDI message." .
5047midi:controllerNumber
5049 owl:DatatypeProperty ,
5050 owl:FunctionalProperty ;
5051 rdfs:label "MIDI controller number" ;
5052 rdfs:range xsd:byte ;
5053 rdfs:comment "The numeric ID of a controller (0 to 127)." .
5057 owl:DatatypeProperty ,
5058 owl:FunctionalProperty ;
5059 rdfs:label "MIDI controller value" ;
5060 rdfs:range xsd:byte ;
5061 rdfs:comment "The value of a controller (0 to 127)." .
5065 owl:DatatypeProperty ,
5066 owl:FunctionalProperty ;
5067 rdfs:label "note number" ;
5068 rdfs:range xsd:byte ;
5069 rdfs:comment "The numeric ID of a note (0 to 127)." .
5073 owl:DatatypeProperty ,
5074 owl:FunctionalProperty ;
5075 rdfs:label "key pressure" ;
5076 rdfs:range xsd:byte ;
5077 rdfs:comment "Key pressure (0 to 127)." .
5081 owl:DatatypeProperty ,
5082 owl:FunctionalProperty ;
5083 rdfs:label "program number" ;
5084 rdfs:range xsd:byte ;
5085 rdfs:comment "The numeric ID of a program (0 to 127)." .
5089 owl:ObjectProperty ,
5090 owl:FunctionalProperty ;
5091 rdfs:label "property" ;
5092 rdfs:domain midi:Chunk ;
5093 rdfs:range rdf:Property ;
5094 rdfs:comment "The property this chunk represents." .
5098 owl:)lv2ttl" R"lv2ttl(DatatypeProperty ,
5099 owl:FunctionalProperty ;
5100 rdfs:label "song number" ;
5101 rdfs:range xsd:byte ;
5102 rdfs:comment "The numeric ID of a song (0 to 127)." .
5106 owl:DatatypeProperty ,
5107 owl:FunctionalProperty ;
5108 rdfs:label "song position" ;
5109 rdfs:range xsd:short ;
5110 rdfs:comment "Song position in MIDI beats (16th notes) (-8192 to 8192)." .
5114 owl:DatatypeProperty ,
5115 owl:FunctionalProperty ;
5116 rdfs:label "status byte" ;
5117 rdfs:range midi:HexByte ;
5118 rdfs:comment "The exact status byte for a message of this type." .
5122 owl:DatatypeProperty ,
5123 owl:FunctionalProperty ;
5124 rdfs:label "status mask" ;
5125 rdfs:range midi:HexByte ;
5126 rdfs:comment "The status byte for a message of this type on channel 1." .
5130 owl:DatatypeProperty ,
5131 owl:FunctionalProperty ;
5132 rdfs:label "velocity" ;
5133 rdfs:range midi:HexByte ;
5134 rdfs:comment "The velocity of a note message (0 to 127)." .
5145juce::lv2::BundleResource
5148R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
5149@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
5151<http://lv2plug.in/ns/ext/atom>
5152 a lv2:Specification ;
5153 lv2:minorVersion 2 ;
5154 lv2:microVersion 2 ;
5155 rdfs:seeAlso <atom.ttl> .
5159, juce::lv2::BundleResource
5162R
"lv2ttl(@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
5163@prefix dcs: <http://ontologi.es/doap-changeset#> .
5164@prefix doap: <http://usefulinc.com/ns/doap#> .
5165@prefix foaf: <http://xmlns.com/foaf/0.1/> .
5166@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
5167@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
5169<http://lv2plug.in/ns/ext/atom>
5171 doap:name "LV2 Atom" ;
5172 doap:shortdesc "A generic value container and several data types." ;
5173 doap:license <http://opensource.org/licenses/isc> ;
5174 doap:created "2007-00-00" ;
5175 doap:developer <http://drobilla.net/drobilla#me> ;
5177 doap:revision "2.2" ;
5178 doap:created "2019-02-03" ;
5179 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
5180 dcs:blame <http://drobilla.net/drobilla#me> ;
5183 rdfs:label "Add lv2_atom_object_get_typed() for easy type-safe access to object properties."
5187 doap:revision "2.0" ;
5188 doap:created "2014-08-08" ;
5189 doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ;
5190 dcs:blame <http://drobilla.net/drobilla#me> ;
5193 rdfs:label "Deprecate Blank and Resource in favour of just Object."
5195 rdfs:label "Add lv2_atom_forge_is_object_type() and lv2_atom_forge_is_blank() to ease backwards compatibility."
5197 rdfs:label "Add lv2_atom_forge_key() for terser object writing."
5199 rdfs:label "Add lv2_atom_sequence_clear() and lv2_atom_sequence_append_event() helper functions."
5203 doap:revision "1.8" ;
5204 doap:created "2014-01-04" ;
5205 doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ;
5206 dcs:blame <http://drobilla.net/drobilla#me> ;
5209 rdfs:label "Make lv2_atom_*_is_end() arguments const."
5213 doap:revision "1.6" ;
5214 doap:created "2013-05-26" ;
5215 doap:file-release <http://lv2plug.in/spec/lv2-1.6.0.tar.bz2> ;
5216 dcs:blame <http://drobilla.net/drobilla#me> ;
5219 rdfs:label "Fix crash in forge.h when pushing atoms to a full buffer."
5223 doap:revision "1.4" ;
5224 doap:created "2013-01-27" ;
5225 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
5226 dcs:blame <http://drobilla.net/drobilla#me> ;
5229 rdfs:label "Fix lv2_atom_sequence_end()."
5231 rdfs:label "Remove atom:stringType in favour of owl:onDatatype so generic tools can understand and validate atom literals."
5233 rdfs:label "Improve atom documentation."
5237 doap:revision "1.2" ;
5238 doap:created "2012-10-14" ;
5239 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
5240 dcs:blame <http://drobilla.net/drobilla#me> ;
5243 rdfs:label "Fix implicit conversions in forge.h that are invalid in C++11."
5245 rdfs:label "Fix lv2_atom_object_next() on 32-bit platforms."
5247 rdfs:label "Add lv2_atom_object_body_get()."
5249 rdfs:label "Fix outdated documentation in forge.h."
5251 rdfs:label "Use consistent label style."
5253 rdfs:label "Add LV2_ATOM_CONTENTS_CONST and LV2_ATOM_BODY_CONST."
5257 doap:revision "1.0" ;
5258 doap:created "2012-04-17" ;
5259 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
5260 dcs:blame <http://drobilla.net/drobilla#me> ;
5263 rdfs:label "Initial release."
5267 lv2:documentation """
5269An atom:Atom is a simple generic data container for holding any type of Plain
5270Old Data (POD). An Atom can contain simple primitive types like integers,
5271floating point numbers, and strings; as well as structured data like lists and
5272dictionary-like <q>Objects</q>. Since Atoms are POD, they can be easily copied
5273(for example, with `memcpy()`) anywhere and are suitable for use in real-time
5276Every atom starts with an LV2_Atom header, followed by the contents. This
5277allows code to process atoms without requiring special code for every type of
5278data. For example, plugins that mutually understand a type can be used
5279together in a host that does not understand that type, because the host is only
5280required to copy atoms, not interpret their contents. Similarly, plugins (such
5281as routers, delays, or data structures) can meaningfully process atoms of a
5282type unknown to them.
5284Atoms should be used anywhere values of various types must be stored or
5285transmitted. An atom:AtomPort can be used to transmit atoms via ports. An
5286atom:AtomPort that contains a atom:Sequence can be used for sample accurate
5287communication of events, such as MIDI.
5291Each Atom type defines a binary format for use at runtime, but also a
5292serialisation that is natural to express in Turtle format. Thus, this
5293specification defines a powerful real-time appropriate data model, as well as a
5294portable way to serialise any data in that model. This is particularly useful
5295for inter-process communication, saving/restoring state, and describing values
5296in plugin data files.
5298### Custom Atom Types
5300While it is possible to define new Atom types for any binary format, the
5301standard types defined here are powerful enough to describe almost anything.
5302Implementations SHOULD build structures out of the types provided here, rather
5303than define new binary formats (for example, using atom:Object rather than a
5304new C `struct` type). Host and tool implementations have support for
5305serialising all standard types, so new binary formats are an implementation
5306burden which harms interoperabilty. In particular, plugins SHOULD NOT expect
5307UI communication or state saving with custom binary types to work. In general,
5308new Atom types should only be defined where absolutely necessary due to
5309performance reasons and serialisation is not a concern.
5314 lv2:documentation """
5316An LV2_Atom has a 32-bit `size` and `type`, followed by a body of `size` bytes.
5317Atoms MUST be 64-bit aligned.
5319All concrete Atom types (subclasses of this class) MUST define a precise binary
5320layout for their body.
5322The `type` field is the URI of an Atom type mapped to an integer.
5323Implementations SHOULD gracefully pass through, or ignore, atoms with unknown
5326All atoms are POD by definition except references, which as a special case have
5327`type` 0. An Atom MUST NOT contain a Reference. It is safe to copy any
5328non-reference Atom with a simple `memcpy`, even if the implementation does not
5329understand `type`. Though this extension reserves the type 0 for references,
5330the details of reference handling are currently unspecified. A future revision
5331of this extension, or a different extension, may define how to use non-POD data
5332and references. Implementations MUST NOT send references to another
5333implementation unless the receiver is explicitly known to support references
5334(e.g. by supporting a feature).
5336The special case of a null atom with both `type` and `size` 0 is not considered
5342 lv2:documentation """
5344This type is used to indicate a certain amount of space is available. For
5345example, output ports with a variably sized type are connected to a Chunk so
5346the plugin knows the size of the buffer available for writing.
5348The use of a Chunk should be constrained to a local scope, since
5349interpreting it is impossible without context. However, if serialised to RDF,
5350a Chunk may be represented directly as an xsd:base64Binary string, for example:
5353 [] eg:someChunk "vu/erQ=="^^xsd:base64Binary .
5358 lv2:documentation """
5360The body of an LV2_Atom_String is a C string in UTF-8 encoding, i.e. an array
5361of bytes (`uint8_t`) terminated with a NULL byte (`'\\0'`).
5363This type is for free-form strings, but SHOULD NOT be used for typed data or
5364text in any language. Use atom:Literal unless translating the string does not
5365make sense and the string has no meaningful datatype.
5370 lv2:documentation """
5372This type is compatible with rdfs:Literal and is capable of )lv2ttl" R"lv2ttl(expressing a
5373string in any language or a value of any type. A Literal has a
5374`datatype` and `lang` followed by string data in UTF-8
5375encoding. The length of the string data in bytes is `size -
5376sizeof(LV2_Atom_Literal)`, including the terminating NULL character. The
5377`lang` field SHOULD be a URI of the form
5378`http://lexvo.org/id/iso639-3/LANG` or
5379`http://lexvo.org/id/iso639-1/LANG` where LANG is a 3-character ISO 693-3
5380language code, or a 2-character ISO 693-1 language code, respectively.
5382A Literal may have a `datatype` or a `lang`, but never both.
5384For example, a Literal can be <q>Hello</q> in English:
5387 void set_to_hello_in_english(LV2_Atom_Literal* lit) {
5388 lit->atom.type = map(expand("atom:Literal"));
5389 lit->atom.size = 14;
5390 lit->body.datatype = 0;
5391 lit->body.lang = map("http://lexvo.org/id/iso639-1/en");
5392 memcpy(LV2_ATOM_CONTENTS(LV2_Atom_Literal, lit),
5394 sizeof("Hello")); // Assumes enough space
5400 void set_to_turtle_string(LV2_Atom_Literal* lit, const char* ttl) {
5401 lit->atom.type = map(expand("atom:Literal"));
5402 lit->atom.size = 64;
5403 lit->body.datatype = map("http://www.w3.org/2008/turtle#turtle");
5405 memcpy(LV2_ATOM_CONTENTS(LV2_Atom_Literal, lit),
5407 strlen(ttl) + 1); // Assumes enough space
5413 lv2:documentation """
5415A Path is a URI reference with only a path component: no scheme, authority,
5416query, or fragment. In particular, paths to files in the same bundle may be
5417cleanly written in Turtle files as a relative URI. However, implementations
5418may assume any binary Path (e.g. in an event payload) is a valid file path
5419which can passed to system functions like fopen() directly, without any
5420character encoding or escape expansion required.
5422Any implemenation that creates a Path atom to transmit to another is
5423responsible for ensuring it is valid. A Path SHOULD always be absolute, unless
5424there is some mechanism in place that defines a base path. Since this is not
5425the case for plugin instances, effectively any Path sent to or received from a
5426plugin instance MUST be absolute.
5431 lv2:documentation """
5433This is useful when a URI is needed but mapping is inappropriate, for example
5434with temporary or relative URIs. Since the ability to distinguish URIs from
5435plain strings is often necessary, URIs MUST NOT be transmitted as atom:String.
5437This is not strictly a URI, since UTF-8 is allowed. Escaping and related
5438issues are the host's responsibility.
5443 lv2:documentation """
5445A URID is typically generated with the LV2_URID_Map provided by the host .
5450 lv2:documentation """
5452A homogeneous series of atom bodies with equivalent type and size.
5454An LV2_Atom_Vector is a 32-bit `child_size` and `child_type` followed by `size
5455/ child_size` atom bodies.
5457For example, an atom:Vector containing 42 elements of type atom:Float:
5460 struct VectorOf42Floats {
5461 uint32_t size; // sizeof(LV2_Atom_Vector_Body) + (42 * sizeof(float);
5462 uint32_t type; // map(expand("atom:Vector"))
5463 uint32_t child_size; // sizeof(float)
5464 uint32_t child_type; // map(expand("atom:Float"))
5468Note that it is possible to construct a valid Atom for each element of the
5469vector, even by an implementation which does not understand `child_type`.
5471If serialised to RDF, a Vector SHOULD have the form:
5476 atom:childType atom:Int ;
5487 lv2:documentation """
5489The body of a Tuple is simply a series of complete atoms, each aligned to
5492If serialised to RDF, a Tuple SHOULD have the form:
5506 lv2:documentation """
5508An LV2_Atom_Property has a URID `key` and `context`, and an Atom `value`. This
5509corresponds to an RDF Property, where the <q>key</q> is the <q>predicate</q>
5510and the <q>value</q> is the object.
5512The `context` field can be used to specify a different context for each
5513property, where this is useful. Otherwise, it may be 0.
5515Properties generally only exist as part of an atom:Object. Accordingly,
5516they will typically be represented directly as properties in RDF (see
5517atom:Object). If this is not possible, they may be expressed as partial
5518reified statements, for example:
5522 rdf:predicate eg:theKey ;
5523 rdf:object eg:theValue .
5528 lv2:documentation """
5530An <q>Object</q> is an atom with a set of properties. This corresponds to an
5531RDF Resource, and can be thought of as a dictionary with URID keys.
5533An LV2_Atom_Object body has a uint32_t `id` and `type`, followed by a series of
5534atom:Property bodies (LV2_Atom_Property_Body). The LV2_Atom_Object_Body::otype
5535field is equivalent to a property with key rdf:type, but is included in the
5536structure to allow for fast dispatching.
5538Code SHOULD check for objects using lv2_atom_forge_is_object() or
5539lv2_atom_forge_is_blank() if a forge is available, rather than checking the
5540atom type directly. This will correctly handle the deprecated atom:Resource
5541and atom:Blank types.
5543When serialised to RDF, an Object is represented as a resource, for example:
5547 eg:firstPropertyKey "first property value" ;
5548 eg:secondPropertyKey "first loser" ;
5549 eg:andSoOn "and so on" .
5554 lv2:documentation """
5556This class is deprecated. Use atom:Object directly instead.
5558An atom:Object where the <code>id</code> field is a URID, that is, an Object
5564 lv2:documentation """
5566This class is deprecated. Use atom:Object with ID 0 instead.
5568An atom:Object where the LV2_Atom_Object::id is a blank node ID (NOT a URI).
5569The ID of a Blank is valid only within the context the Blank appears in. For
5570ports this is the context of the associated run() call, i.e. all ports share
5571the same context so outputs can contain IDs that correspond to IDs of blanks in
5577 lv2:documentation """
5579The format of a atom:Sound is the same as the buffer format for lv2:AudioPort
5580(except the size may be arbitrary). An atom:Sound inherently depends on the
5581sample rate, which is assumed to be known from context. Because of this,
5582directly serialising an atom:Sound is probably a bad idea, use a standard
5583format like WAV instead.
5588 lv2:documentation """
5590An Event is typically an element of an atom:Sequence. Note that this is not an Atom type since it begins with a timestamp, not an atom header.
5595 lv2:documentation """
5597A flat sequence of atom:Event, that is, a series of time-stamped Atoms.
5599LV2_Atom_Sequence_Body.unit describes the time unit for the contained atoms.
5600If the unit is known from context (e.g. run() stamps are always audio frames),
5601this field may be zero. Otherwise, it SHOULD be either units:frame or
5602units:beat, in which case ev.time.frames or ev.time.beats is valid,
5605If serialised to RDF, a Sequence has a similar form to atom:Vector, but for
5606brevity the elements may be assumed to be atom:Event, for example:
5614 rdf:value "901A01"^^midi:MidiEvent
5616 atom:frame)lv2ttl" R"lv2ttl(Time 3 ;
5617 rdf:value "902B02"^^midi:MidiEvent
5624 lv2:documentation """
5626Ports of this type are connected to an LV2_Atom with a type specified by
5629Output ports with a variably sized type MUST be initialised by the host before
5630every run() to an atom:Chunk with size set to the available space. The plugin
5631reads this size to know how much space is available for writing. In all cases,
5632the plugin MUST write a complete atom (including header) to outputs. However,
5633to be robust, hosts SHOULD initialise output ports to a safe sentinel (e.g. the
5634null Atom) before calling run().
"""^^lv2:Markdown .
5637 lv2:documentation """
5639Indicates that an AtomPort may be connected to a certain Atom type. A port MAY
5640support several buffer types. The host MUST NOT connect a port to an Atom with
5641a type not explicitly listed with this property. The value of this property
5642MUST be a sub-class of atom:Atom. For example, an input port that is connected
5643directly to an LV2_Atom_Double value is described like so:
5648 a lv2:InputPort , atom:AtomPort ;
5649 atom:bufferType atom:Double ;
5652This property only describes the types a port may be directly connected to. It
5653says nothing about the expected contents of containers. For that, use
5659 lv2:documentation """
5661This property is defined loosely, it may be used to indicate that anything
5662<q>supports</q> an Atom type, wherever that may be useful. It applies
5663<q>recursively</q> where collections are involved.
5665In particular, this property can be used to describe which event types are
5666expected by a port. For example, a port that receives MIDI events is described
5672 a lv2:InputPort , atom:AtomPort ;
5673 atom:bufferType atom:Sequence ;
5674 atom:supports midi:MidiEvent ;
5680 lv2:documentation """
5682Transfer of individual events in a port buffer. Useful as the `format` for a
5683LV2UI_Write_Function.
5685This protocol applies to ports which contain events, usually in an
5686atom:Sequence. The host must transfer each individual event to the recipient.
5687The format of the received data is an LV2_Atom, there is no timestamp header.
5692 lv2:documentation """
5694Transfer of the complete atom in a port buffer. Useful as the `format` for a
5695LV2UI_Write_Function.
5697This protocol applies to atom ports. The host must transfer the complete atom
5698contained in the port, including header.
5704, juce::lv2::BundleResource
5707R
"lv2ttl(@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
5708@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
5709@prefix owl: <http://www.w3.org/2002/07/owl#> .
5710@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
5711@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
5712@prefix ui: <http://lv2plug.in/ns/extensions/ui#> .
5713@prefix units: <http://lv2plug.in/ns/extensions/units#> .
5714@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
5716<http://lv2plug.in/ns/ext/atom>
5718 rdfs:seeAlso <atom.h> ,
5722 rdfs:label "LV2 Atom" ;
5723 rdfs:comment "A generic value container and several data types." .
5727 owl:DatatypeProperty ,
5728 owl:FunctionalProperty ;
5729 rdfs:label "C type" ;
5730 rdfs:comment "The C type that describes the binary representation of an Atom type." ;
5731 rdfs:domain rdfs:Class ;
5732 rdfs:range lv2:Symbol .
5737 rdfs:comment "Abstract base class for all atoms." ;
5738 atom:cType "LV2_Atom" .
5743 rdfs:subClassOf atom:Atom ;
5744 rdfs:label "Chunk" ;
5745 rdfs:comment "A chunk of memory with undefined contents." ;
5746 owl:onDatatype xsd:base64Binary .
5750 rdfs:subClassOf atom:Atom ;
5751 rdfs:label "Number" ;
5752 rdfs:comment "Base class for numeric types." .
5757 rdfs:subClassOf atom:Number ;
5759 rdfs:comment "A native `int32_t`." ;
5760 atom:cType "LV2_Atom_Int" ;
5761 owl:onDatatype xsd:int .
5766 rdfs:subClassOf atom:Number ;
5768 rdfs:comment "A native `int64_t`." ;
5769 atom:cType "LV2_Atom_Long" ;
5770 owl:onDatatype xsd:long .
5775 rdfs:subClassOf atom:Number ;
5776 rdfs:label "Float" ;
5777 rdfs:comment "A native `float`." ;
5778 atom:cType "LV2_Atom_Float" ;
5779 owl:onDatatype xsd:float .
5784 rdfs:subClassOf atom:Number ;
5785 rdfs:label "Double" ;
5786 rdfs:comment "A native `double`." ;
5787 atom:cType "LV2_Atom_Double" ;
5788 owl:onDatatype xsd:double .
5793 rdfs:subClassOf atom:Atom ;
5795 rdfs:comment "An atom:Int where 0 is false and any other value is true." ;
5796 atom:cType "LV2_Atom_Bool" ;
5797 owl:onDatatype xsd:boolean .
5802 rdfs:subClassOf atom:Atom ;
5803 rdfs:label "String" ;
5804 rdfs:comment "A UTF-8 string." ;
5805 atom:cType "LV2_Atom_String" ;
5806 owl:onDatatype xsd:string .
5810 rdfs:subClassOf atom:Atom ;
5811 rdfs:label "Literal" ;
5812 rdfs:comment "A UTF-8 string literal with optional datatype or language." ;
5813 atom:cType "LV2_Atom_Literal" .
5818 rdfs:subClassOf atom:URI ;
5819 owl:onDatatype atom:URI ;
5821 rdfs:comment "A local file path." .
5826 rdfs:subClassOf atom:String ;
5827 owl:onDatatype xsd:anyURI ;
5829 rdfs:comment "A URI string." .
5833 rdfs:subClassOf atom:Atom ;
5835 rdfs:comment "An unsigned 32-bit integer ID for a URI." ;
5836 atom:cType "LV2_Atom_URID" .
5840 rdfs:subClassOf atom:Atom ;
5841 rdfs:label "Vector" ;
5842 rdfs:comment "A homogeneous sequence of atom bodies with equivalent type and size." ;
5843 atom:cType "LV2_Atom_Vector" .
5847 rdfs:subClassOf atom:Atom ;
5848 rdfs:label "Tuple" ;
5849 rdfs:comment "A sequence of atoms with varying type and size." .
5853 rdfs:subClassOf atom:Atom ;
5854 rdfs:label "Property" ;
5855 rdfs:comment "A property of an atom:Object." ;
5856 atom:cType "LV2_Atom_Property" .
5860 rdfs:subClassOf atom:Atom ;
5861 rdfs:label "Object" ;
5862 rdfs:comment "A collection of properties." ;
5863 atom:cType "LV2_Atom_Object" .
5867 rdfs:subClassOf atom:Object ;
5868 rdfs:label "Resource" ;
5869 rdfs:comment "A named collection of properties with a URI." ;
5870 owl:deprecated "true"^^xsd:boolean ;
5871 atom:cType "LV2_Atom_Object" .
5875 rdfs:subClassOf atom:Object ;
5876 rdfs:label "Blank" ;
5877 rdfs:comment "An anonymous collection of properties without a URI." ;
5878 owl:deprecated "true"^^xsd:boolean ;
5879 atom:cType "LV2_Atom_Object" .
5883 rdfs:subClassOf atom:Vector ;
5884 rdfs:label "Sound" ;
5885 rdfs:comment "A atom:Vector of atom:Float which represents an audio waveform." ;
5886 atom:cType "LV2_Atom_Vector" .
5890 owl:DatatypeProperty ,
5891 owl:FunctionalProperty ;
5892 rdfs:range xsd:decimal ;
5893 rdfs:label "frame time" ;
5894 rdfs:comment "A time stamp in audio frames." .
5898 owl:DatatypeProperty ,
5899 owl:FunctionalProperty ;
5900 rdfs:range xsd:decimal ;
5901 rdfs:label "beat time" ;
5902 rdfs:comment "A time stamp in beats." .
5906 rdfs:label "Event" ;
5907 atom:cType "LV2_Atom_Event" ;
5908 rdfs:comment "An atom with a time stamp prefix in a sequence." .
5912 rdfs:subClassOf atom:Atom ;
5913 rdfs:label "Sequence" ;
5914 atom:cType "LV2_Atom_Sequence" ;
5915 rdfs:comment "A sequence of events." .
5919 rdfs:subClassOf lv2:Port ;
5920 rdfs:label "Atom Port" ;
5921 rdfs:comment "A port which contains an atom:Atom." .
5925 owl:ObjectProperty ;
5926 rdfs:domain atom:AtomPort ;
5927 rdfs:range rdfs:Class ;
5928 rdfs:label "buffer type" ;
5929 rdfs:comment "An atom type that a port may be connected to." .
5933 owl:ObjectProperty ;
5934 rdfs:label "child type" ;
5935 rdfs:comment "The type of children in a container." .
5939 owl:ObjectProperty ;
5940 rdfs:label "supports" ;
5941 rdfs:comment "A supported atom type." ;
5942 rdfs:range rdfs:Class .
5946 rdfs:label "event transfer" ;
5947 rdfs:comment "A port protocol for transferring events." .
5951 rdfs:label "atom transfer" ;
5952 rdfs:comment "A port protocol for transferring atoms." .
5963juce::lv2::BundleResource
5966R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
5967@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
5969<http://lv2plug.in/ns/ext/buf-size>
5970 a lv2:Specification ;
5971 lv2:minorVersion 1 ;
5972 lv2:microVersion 4 ;
5973 rdfs:seeAlso <buf-size.ttl> .
5977, juce::lv2::BundleResource
5980R
"lv2ttl(@prefix bufsz: <http://lv2plug.in/ns/ext/buf-size#> .
5981@prefix dcs: <http://ontologi.es/doap-changeset#> .
5982@prefix doap: <http://usefulinc.com/ns/doap#> .
5983@prefix foaf: <http://xmlns.com/foaf/0.1/> .
5984@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
5985@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
5987<http://lv2plug.in/ns/ext/buf-size>
5989 doap:name "LV2 Buf Size" ;
5990 doap:shortdesc "Access to, and restrictions on, buffer sizes." ;
5991 doap:created "2012-08-07" ;
5992 doap:developer <http://drobilla.net/drobilla#me> ;
5994 doap:revision "1.4" ;
5995 doap:created "2015-09-18" ;
5996 doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
5997 dcs:blame <http://drobilla.net/drobilla#me> ;
6000 rdfs:label "Add bufsz:nominalBlockLength option."
6002 rdfs:label "Add bufsz:coarseBlockLength feature."
6006 doap:revision "1.2" ;
6007 doap:created "2012-12-21" ;
6008 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
6009 dcs:blame <http://drobilla.net/drobilla#me> ;
6012 rdfs:label "Fix typo in bufsz:sequenceSize label."
6016 doap:revision "1.0" ;
6017 doap:created "2012-10-14" ;
6018 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
6019 dcs:blame <http://drobilla.net/drobilla#me> ;
6022 rdfs:label "Initial release."
6026 lv2:documentation """
6028This extension defines a facility for plugins to get information about the
6029block length (the sample_count parameter of LV2_Descriptor::run) and port
6030buffer sizes, as well as several features which can be used to restrict the
6033This extension defines features and properties but has no special purpose
6034API of its own. The host provides all the relevant information to the plugin
6035as [options](options.html).
6037To require restrictions on the block length, plugins can require additional
6038features: bufsz:boundedBlockLength, bufsz:powerOf2BlockLength, and
6039bufsz:fixedBlockLength. These features are data-only, that is they merely
6040indicate a restriction and do not carry any data or API.
6044bufsz:boundedBlockLength
6045 lv2:documentation """
6047A feature that indicates the host will provide both the bufsz:minBlockLength
6048and bufsz:maxBlockLength options to the plugin. Plugins that copy data from
6049audio inputs can require this feature to ensure they know how much space is
6050required for auxiliary buffers. Note the minimum may be zero, this feature is
6051mainly useful to ensure a maximum is available.
6053All hosts SHOULD support this feature, since it is simple to support and
6054necessary for any plugins that may need to copy the input.
6058bufsz:fixedBlockLength
6059 lv2:documentation """
6061A feature that indicates the host will always call LV2_Descriptor::run() with
6062the same value for sample_count. This length MUST be provided as the value of
6063both the bufsz:minBlockLength and bufsz:maxBlockLength options.
6065Note that requiring this feature may severely limit the number of hosts capable
6066of running the plugin.
6070bufsz:powerOf2BlockLength
6071 lv2:documentation """
6073A feature that indicates the host will always call LV2_Descriptor::run() with a
6074power of two sample_count. Note that this feature does not guarantee the value
6075is the same each call, to guarantee a fixed power of two block length plugins
6076must require both this feature and bufsz:fixedBlockLength.
6078Note that requiring this feature may severely limit the number of hosts capable
6079of running the plugin.
6083bufsz:coarseBlockLength
6084 lv2:documentation """
6086A feature that indicates the plugin prefers coarse, regular block lengths. For
6087example, plugins that do not implement sample-accurate control use this feature
6088to indicate that the host should not split the run cycle because controls have
6091Note that this feature is merely a hint, and does not guarantee a fixed block
6092length. The run cycle may be split for other reasons, and the blocksize itself
6098 lv2:documentation """
6100The maximum block length the host will ever request the plugin to process at
6101once, that is, the maximum `sample_count` parameter that will ever be passed to
6102LV2_Descriptor::run().
"""^^lv2:Markdown .
6105 lv2:documentation """
6107The minimum block length the host will ever request the plugin to process at
6108once, that is, the minimum `sample_count` parameter that will ever be passed to
6109LV2_Descriptor::run().
"""^^lv2:Markdown .
6111bufsz:nominalBlockLength
6112 lv2:documentation """
6114The typical block length the host will request the plugin to process at once,
6115that is, the typical `sample_count` parameter that will be passed to
6116LV2_Descriptor::run(). This will usually be equivalent, or close to, the
6117maximum block length, but there are no strong guarantees about this value
6118whatsoever. Plugins may use this length for optimization purposes, but MUST
6119NOT assume the host will always process blocks of this length. In particular,
6120the host MAY process longer blocks.
6125 lv2:documentation """
6127This should be provided as an option by hosts that support event ports
6128(including but not limited to MIDI), so plugins have the ability to allocate
6129auxiliary buffers large enough to copy the input.
6135, juce::lv2::BundleResource
6138R
"lv2ttl(@prefix bufsz: <http://lv2plug.in/ns/ext/buf-size#> .
6139@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6140@prefix opts: <http://lv2plug.in/ns/ext/options#> .
6141@prefix owl: <http://www.w3.org/2002/07/owl#> .
6142@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
6143@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6144@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
6146<http://lv2plug.in/ns/ext/buf-size>
6148 rdfs:label "LV2 Buf Size" ;
6149 rdfs:comment "Access to, and restrictions on, buffer sizes." ;
6150 rdfs:seeAlso <buf-size.h> ,
6151 <buf-size.meta.ttl> .
6153bufsz:boundedBlockLength
6155 rdfs:label "bounded block length" ;
6156 rdfs:comment "Block length has lower and upper bounds." .
6158bufsz:fixedBlockLength
6160 rdfs:label "fixed block length" ;
6161 rdfs:comment "Block length never changes." .
6163bufsz:powerOf2BlockLength
6165 rdfs:label "power of 2 block length" ;
6166 rdfs:comment "Block length is a power of 2." .
6168bufsz:coarseBlockLength
6170 rdfs:label "coarse block length" ;
6171 rdfs:comment "Plugin prefers coarse block length without buffer splitting." .
6175 owl:DatatypeProperty ,
6177 rdfs:label "maximum block length" ;
6178 rdfs:comment "Block length has an upper bound." ;
6179 rdfs:range xsd:nonNegativeInteger .
6183 owl:DatatypeProperty ,
6185 rdfs:label "minimum block length" ;
6186 rdfs:comment "Block length has a lower bound." ;
6187 rdfs:range xsd:nonNegativeInteger .
6189bufsz:nominalBlockLength
6191 owl:DatatypeProperty ,
6193 rdfs:label "nominal block length" ;
6194 rdfs:comment "Typical block length that will most often be processed." ;
6195 rdfs:range xsd:nonNegativeInteger .
6199 owl:DatatypeProperty ,
6201 rdfs:label "sequence size" ;
6202 rdfs:comment "The maximum size of a sequence, in bytes." ;
6203 rdfs:range xsd:nonNegativeInteger .
6214juce::lv2::BundleResource
6217R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6218@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6220<http://lv2plug.in/ns/ext/morph>
6221 a lv2:Specification ;
6222 lv2:minorVersion 1 ;
6223 lv2:microVersion 0 ;
6224 rdfs:seeAlso <morph.ttl> .
6228, juce::lv2::BundleResource
6231R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
6232@prefix doap: <http://usefulinc.com/ns/doap#> .
6233@prefix foaf: <http://xmlns.com/foaf/0.1/> .
6234@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6235@prefix morph: <http://lv2plug.in/ns/ext/morph#> .
6236@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6238<http://lv2plug.in/ns/ext/morph>
6240 doap:name "LV2 Morph" ;
6241 doap:shortdesc "Ports that can dynamically change type." ;
6242 doap:created "2012-05-22" ;
6243 doap:developer <http://drobilla.net/drobilla#me> ;
6245 doap:revision "1.0" ;
6246 doap:created "2012-10-14" ;
6247 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
6248 dcs:blame <http://drobilla.net/drobilla#me> ;
6251 rdfs:label "Initial release."
6255 lv2:documentation """
6257This extension defines two port types: morph:MorphPort, which has a
6258host-configurable type, and morph:AutoMorphPort, which may automatically change
6259type when a MorphPort's type is changed. These ports always have a default
6260type and work normally work in hosts that are unaware of this extension. Thus,
6261this extension provides a backwards compatibility mechanism which allows
6262plugins to use new port types but gracefully fall back to a default type in
6263hosts that do not support them.
6265This extension only defines port types and properties for describing morph
6266ports. The actual run-time switching is done via the opts:interface API.
6271 lv2:documentation """
6273Ports of this type MUST have another type which defines the default buffer
6274format (for example lv2:ControlPort) but can be dynamically changed to a
6275different type in hosts that support opts:interface.
6277The host may change the type of a MorphPort by setting its morph:currentType
6278with LV2_Options_Interface::set(). If the plugin has any morph:AutoMorphPort
6279ports, the host MUST check their types after changing any port type since they
6285 lv2:documentation """
6287Ports of this type MUST have another type which defines the default buffer
6288format (for example, lv2:ControlPort) but may dynamically change types based on
6289the configured types of any morph:MorphPort ports on the same plugin instance.
6291The type of a port may only change in response to a host call to
6292LV2_Options_Interface::set(). Whenever any port type on the instance changes,
6293the host MUST check the type of all morph:AutoMorphPort ports with
6294LV2_Options_Interface::get() before calling run() again, since they may have
6295changed. If the type of any port is zero, it means the current configuration
6296is invalid and the plugin may not be run (unless that port is
6297lv2:connectionOptional and connected to NULL).
6299This is mainly useful for outputs whose type depends on the type of
6300corresponding inputs.
6305 lv2:documentation """
6307Indicates that a port supports being switched to a certain type. A MorphPort
6308MUST list each type it supports being switched to in the plugin data using this
6314 lv2:documentation """
6316The currently active type of the port. This is for dynamic use as an option
6317and SHOULD NOT be listed in the static plugin data.
6323, juce::lv2::BundleResource
6326R
"lv2ttl(@prefix doap: <http://usefulinc.com/ns/doap#> .
6327@prefix foaf: <http://xmlns.com/foaf/0.1/> .
6328@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6329@prefix morph: <http://lv2plug.in/ns/ext/morph#> .
6330@prefix opts: <http://lv2plug.in/ns/ext/options#> .
6331@prefix owl: <http://www.w3.org/2002/07/owl#> .
6332@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
6333@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6334@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
6336<http://lv2plug.in/ns/ext/morph>
6338 rdfs:label "LV2 Morph" ;
6339 rdfs:comment "Ports that can dynamically change type." ;
6340 rdfs:seeAlso <morph.h> ,
6346 rdfs:subClassOf lv2:Port ;
6347 rdfs:label "Morph Port" ;
6348 rdfs:comment "A port which can be switched to another type." .
6353 rdfs:subClassOf lv2:Port ;
6354 rdfs:label "Auto Morph Port" ;
6355 rdfs:comment "A port that can change its type based on that of another." .
6359 owl:ObjectProperty ;
6360 rdfs:domain morph:MorphPort ;
6361 rdfs:label "supports type" ;
6362 rdfs:comment "A type that a port supports being switched to." .
6367 owl:ObjectProperty ;
6368 rdfs:domain morph:MorphPort ;
6369 rdfs:label "current type" ;
6370 rdfs:comment "The currently active type of the port." .
6381juce::lv2::BundleResource
6384R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6385@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6387<http://lv2plug.in/ns/ext/state>
6388 a lv2:Specification ;
6389 lv2:minorVersion 2 ;
6390 lv2:microVersion 8 ;
6391 rdfs:seeAlso <state.ttl> .
6395, juce::lv2::BundleResource
6398R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6399@prefix owl: <http://www.w3.org/2002/07/owl#> .
6400@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
6401@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6402@prefix state: <http://lv2plug.in/ns/ext/state#> .
6404<http://lv2plug.in/ns/ext/state>
6406 rdfs:label "LV2 State" ;
6407 rdfs:comment "An interface for LV2 plugins to save and restore state." ;
6408 rdfs:seeAlso <state.h> ,
6412 a lv2:ExtensionData ;
6413 rdfs:label "interface" ;
6414 rdfs:comment "A plugin interface for saving and restoring state." .
6418 rdfs:label "State" ;
6419 rdfs:comment "LV2 plugin state." .
6421state:loadDefaultState
6423 rdfs:label "load default state" ;
6424 rdfs:comment "A feature indicating that the plugin has default state." .
6428 owl:ObjectProperty ;
6429 rdfs:label "state" ;
6430 rdfs:range state:State ;
6431 rdfs:comment "The state of an LV2 plugin instance." .
6435 rdfs:label "map path" ;
6436 rdfs:comment "A feature for mapping between absolute and abstract file paths." .
6440 rdfs:label "make path" ;
6441 rdfs:comment "A feature for creating new files and directories." .
6443state:threadSafeRestore
6445 rdfs:label "thread-safe restore" ;
6446 rdfs:comment "A feature indicating support for thread-safe state restoration." .
6450 rdfs:label "free path" ;
6451 rdfs:comment "A feature for freeing paths allocated by the host." .
6455 rdfs:label "State Changed" ;
6456 rdfs:comment "A notification that the internal state of the plugin has changed." .
6460, juce::lv2::BundleResource
6463R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
6464@prefix doap: <http://usefulinc.com/ns/doap#> .
6465@prefix foaf: <http://xmlns.com/foaf/0.1/> .
6466@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6467@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6468@prefix state: <http://lv2plug.in/ns/ext/state#> .
6470<http://lv2plug.in/ns/ext/state>
6472 doap:created "2010-11-09" ;
6473 doap:name "LV2 State" ;
6474 doap:shortdesc "An interface for LV2 plugins to save and restore state." ;
6475 doap:license <http://opensource.org/licenses/isc> ;
6476 doap:developer <http://lv2plug.in/ns/meta#paniq> ,
6477 <http://drobilla.net/drobilla#me> ;
6478 doap:maintainer <http://drobilla.net/drobilla#me> ;
6480 doap:revision "2.8" ;
6481 doap:created "2021-01-07" ;
6482 doap:file-release <http://lv2plug.in/spec/lv2-1.18.2.tar.bz2> ;
6483 dcs:blame <http://drobilla.net/drobilla#me> ;
6486 rdfs:label "Fix state:StateChanged URI in metadata and documentation."
6490 doap:revision "2.6" ;
6491 doap:created "2020-04-26" ;
6492 doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ;
6493 dcs:blame <http://drobilla.net/drobilla#me> ;
6496 rdfs:label "Add state:freePath feature."
6500 doap:revision "2.4" ;
6501 doap:created "2019-02-03" ;
6502 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
6503 dcs:blame <http://drobilla.net/drobilla#me> ;
6506 rdfs:label "Add state:StateChanged for notification events."
6510 doap:revision "2.2" ;
6511 doap:created "2016-07-31" ;
6512 doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
6513 dcs:blame <http://drobilla.net/drobilla#me> ;
6516 rdfs:label "Add LV2_STATE_ERR_NO_SPACE status flag."
6518 rdfs:label "Add state:threadSafeRestore feature for dropout-free state restoration."
6522 doap:revision "2.0" ;
6523 doap:created "2013-01-16" ;
6524 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
6525 dcs:blame <http://drobilla.net/drobilla#me> ;
6528 rdfs:label "Add state:loadDefaultState feature so plugins can have their default state loaded without hard-coding default state as a special case."
6532 doap:revision "1.2" ;
6533 doap:created "2012-10-14" ;
6534 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
6535 dcs:blame <http://drobilla.net/drobilla#me> ;
6538 rdfs:label "Use consistent label style."
6542 doap:revision "1.0" ;
6543 doap:created "2012-04-17" ;
6544 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
6545 dcs:blame <http://drobilla.net/drobilla#me> ;
6548 rdfs:label "Initial release."
6552 lv2:documentation """
6554This extension defines a simple mechanism that allows hosts to save and restore
6555a plugin instance's state. The goal is for an instance's state to be
6556completely described by port values and a simple dictionary.
6558The <q>state</q> defined here is conceptually a key:value dictionary, with URI keys
6559and values of any type. For performance reasons the key and value type are
6560actually a "URID", a URI mapped to an integer. A single key:value pair is
6563This state model is simple yet has many benefits:
6565 * Both fast and extensible thanks to URID keys.
6567 * No limitations on possible value types.
6569 * Easy to serialise in almost any format.
6571 * Easy to store in a typical "map" or "dictionary" data structure.
6573 * Elegantly described in Turtle, so state can be described in LV2 data files
6574 (including presets).
6576 * Does not impose any file formats, data structures, or file system
6579 * Suitable for portable persistent state as well as fast in-memory snapshots.
6581 * Keys _may_ be well-defined and used meaningfully across several
6584 * State _may_ be dynamic, but plugins are not required to have a dynamic
6585 dictionary data structure available.
6587To implement state, the plugin provides a state:interface to the host. To save
6588or restore, the host calls LV2_State_Interface::save() or
6589LV2_State_Interface::restore(), passing a callback to be used for handling a
6590single property. The host is free to implement property storage and retrieval
6593Since value types are defined by URI, any type is possible. However, a set of
6594standard types is defined by the [LV2 Atom](atom.html) extension. Use of these
6595types is recommended. Hosts MUST implement at least
6596[atom:String](atom.html#String), which is simply a C string.
6598### Referring to Files
6600Plugins may need to refer to existing files (such as loaded samples) in their
6601state. This is done by storing the file's path as a property just like any
6602other value. However, there are some rules which MUST be followed when storing
6603paths, see state:mapPath for details. Plugins MUST use the type
6604[atom:Path](atom.html#Path) for all paths in their state.
6606Plugins are strongly encouraged to avoid creating files, instead storing all
6607state as properties. However, occasionally the ability to create files is
6608necessary. To make this possible, the host can provide the feature
6609state:makePath which allocates paths for plugin-created files. Plugins MUST
6610NOT create files in any other locations.
6612### Plugin Code Example
6616 /* Namespace for this plugin's keys. This SHOULD be something that could be
6617 published as a document, even if that document does not exist right now.
6619 #define NS_MY "http://example.org/myplugin/schema#"
6621 #define DEFAULT_GREETING "Hello"
6626 MyPlugin* plugin = ...;
6627 plugin->uris.atom_String = map_uri(LV2_ATOM__String);
6628 plugin->uris.my_greeting = map_uri(NS_MY "greeting");
6629 plugin->state.greeting = strdup(DEFAULT_GREETING);
6634 my_save(LV2_Handle instance,
6635 LV2_State_Store_Function store,
6636 LV2_State_Handle handle,
6638 const LV2_Feature *const * features)
6640 MyPlugin* plugin = (MyPlugin*)instance;
6641 const char* greeting = plugin->state.greeting;
6644 plugin->uris.my_greeting,
6646 strlen(greeting) + 1, // Careful! Need space for terminator
6647 plugin->uris.atom_String,
6648 LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE);
6650 return LV2_STATE_SUCCESS;
6654 my_restore(LV2_Handle instance,
6655 LV2_State_Retrieve_Function retrieve,
6656 LV2_State_Handle handle,
6658 const LV2_Feature *const * features)
6660 MyPlugin* plugin = (MyPlugin*)instance;
6665 const char* greeting = retrieve(
6666 handle, plugin->uris.my_greeting, &size, &type, &flags);
6669 free(plugin->state->greeting);
6670 plugin->state->greeting = strdup(greeting);
6672 plugin->state->greeting = strdup(DEFAULT_GREETING);
6675 return LV2_STATE_SUCCESS;
6679 my_extension_data(const char* uri)
6681 static const LV2_State_Interface state_iface = { my_save, my_restore };
6682 if (!strcmp(uri, LV2_STATE__interface)) {
6683 return &state_iface;
6687### Host Code Example
6691 store_callback(LV2_State_Handle handle,
6698 if ((flags & LV2_STATE_IS_POD)) {
6699 // We only care about POD since we're keeping sta)lv2ttl" R"lv2ttl(te in memory only.
6700 // Disk or network use would also require LV2_STATE_IS_PORTABLE.
6701 Map* state_map = (Map*)handle;
6702 state_map->insert(key, Value(copy(value), size, type));
6703 return LV2_STATE_SUCCESS;;
6705 return LV2_STATE_ERR_BAD_FLAGS; // Non-POD events are unsupported
6710 get_plugin_state(LV2_Handle instance)
6712 LV2_State* state = instance.extension_data(LV2_STATE__interface);
6714 // Request a fast/native/POD save, since we're just copying in memory
6716 state.save(instance, store_callback, &state_map,
6717 LV2_STATE_IS_POD|LV2_STATE_IS_NATIVE);
6722### Extensions to this Specification
6724It is likely that other interfaces for working with plugin state will be
6725developed as needed. This is encouraged, however everything SHOULD work within
6726the state _model_ defined here. That is, **do not complicate the state
6727model**. Implementations can assume the following:
6729 * The current port values and state dictionary completely describe a plugin
6730 instance, at least well enough that saving and restoring will yield an
6731 "identical" instance from the user's perspective.
6733 * Hosts are not expected to save and/or restore any other attributes of a
6736### The "Property Principle"
6738The main benefit of this meaningful state model is that it can double as a
6739plugin control/query mechanism. For plugins that require more advanced control
6740than simple control ports, instead of defining a set of commands, define
6741properties whose values can be set appropriately. This provides both a way to
6742control and save that state "for free", since there is no need to define
6743commands _and_ a set of properties for storing their effects. In particular,
6744this is a good way for UIs to achieve more advanced control of plugins.
6746This "property principle" is summed up in the phrase: "Don't stop; set playing
6749This extension does not define a dynamic mechanism for state access and
6750manipulation. The [LV2 Patch](patch.html) extension defines a generic set of
6751messages which can be used to access or manipulate properties, and the [LV2
6752Atom](atom.html) extension defines a port type and data container capable of
6753transmitting those messages.
6758 lv2:documentation """
6760A structure (LV2_State_Interface) which contains functions to be called by the
6761host to save and restore state. In order to support this extension, the plugin
6762must return a valid LV2_State_Interface from LV2_Descriptor::extension_data()
6763when it is called with URI LV2_STATE__interface.
6765The plugin data file should describe this like so:
6768 @prefix state: <http://lv2plug.in/ns/ext/state#> .
6772 lv2:extensionData state:interface .
6777 lv2:documentation """
6779This type should be used wherever instance state is described. The properties
6780of a resource with this type correspond directly to the properties of the state
6781dictionary (except the property that states it has this type).
"""^^lv2:Markdown .
6783state:loadDefaultState
6784 lv2:documentation """
6786This feature indicates that the plugin has default state listed with the
6787state:state property which should be loaded by the host before running the
6788plugin. Requiring this feature allows plugins to implement a single state
6789loading mechanism which works for initialisation as well as restoration,
6790without having to hard-code default state.
6792To support this feature, the host MUST restore the default state after
6793instantiating the plugin but before calling run().
"""^^lv2:Markdown .
6796 lv2:documentation """
6798This property may be used anywhere a state needs to be described, for example:
6801 @prefix eg: <http://example.org/> .
6805 eg:somekey "some value" ;
6806 eg:someotherkey "some other value" ;
6807 eg:favourite-number 2
6813 lv2:documentation """
6815This feature maps absolute paths to/from <q>abstract paths</q> which are stored
6816in state. To support this feature a host must pass an LV2_Feature with URI
6817LV2_STATE__mapPath and data pointed to an LV2_State_Map_Path to the plugin's
6818LV2_State_Interface methods.
6820The plugin MUST map _all_ paths stored in its state (including those inside any
6821files). This is necessary so that hosts can handle file system references
6822correctly, for example to share common files, or bundle state for distribution
6825For example, a plugin may write a path to a state file like so:
6828 void write_path(LV2_State_Map_Path* map_path, FILE* myfile, const char* path)
6830 char* abstract_path = map_path->abstract_path(map_path->handle, path);
6831 fprintf(myfile, "%s", abstract_path);
6832 free(abstract_path);
6835Then, later reload the path like so:
6838 char* read_path(LV2_State_Map_Path* map_path, FILE* myfile)
6840 /* Obviously this is not production quality code! */
6841 char abstract_path[1024];
6842 fscanf(myfile, "%s", abstract_path);
6843 return map_path->absolute_path(map_path->handle, abstract_path);
6849 lv2:documentation """
6851This feature allows plugins to create new files and/or directories. To support
6852this feature the host passes an LV2_Feature with URI LV2_STATE__makePath and
6853data pointed to an LV2_State_Make_Path to the plugin. The host may make this
6854feature available only during save by passing it to
6855LV2_State_Interface::save(), or available any time by passing it to
6856LV2_Descriptor::instantiate(). If passed to LV2_State_Interface::save(), the
6857feature MUST NOT be used beyond the scope of that call.
6859The plugin is guaranteed a hierarchical namespace unique to that plugin
6860instance, and may expect the returned path to have the requested path as a
6861suffix. There is one such namespace, even if the feature is passed to both
6862LV2_Descriptor::instantiate() and LV2_State_Interface::save(). Beyond this,
6863the plugin MUST NOT make any assumptions about the returned paths.
6865Like any other paths, the plugin MUST map these paths using state:mapPath
6866before storing them in state. The plugin MUST NOT assume these paths will be
6867available across a save/restore otherwise, that is, only mapped paths saved to
6868state are persistent, any other created paths are temporary.
6870For example, a plugin may create a file in a subdirectory like so:
6873 char* save_myfile(LV2_State_Make_Path* make_path)
6875 char* path = make_path->path(make_path->handle, "foo/bar/myfile.txt");
6876 FILE* myfile = fopen(path, 'w');
6877 fprintf(myfile, "I am some data");
6884state:threadSafeRestore
6885 lv2:documentation """
6887If a plugin supports this feature, its LV2_State_Interface::restore method is
6888thread-safe and may be called concurrently with audio class functions.
6890To support this feature, the host MUST pass a
6891[work:schedule](worker.html#schedule) feature to the restore method, which will
6892be used to complete the state restoration. The usual mechanics of the worker
6893apply: the host will call the plugin's work method, which emits a response
6894which is later applied in the audio thread.
6896The host is not required to block audio processing while restore() and work()
6897load the state, so this feature allows state to be restored without dropouts.
6902 lv2:documentation """
6904This feature provides a function that can be used by plugins to free paths that
6905were allocated by the host via other state features (state:mapPath and
6906state:makePath).
"""^^lv2:Markdown .
6909 lv2:documentation """
6911A notification that the internal state of the plugin has been changed in a way
6912that the host can not otherwise know about.
6914This is a one-way)lv2ttl" R"lv2ttl( notification, intended to be used as the type of an
6915[Object](atom.html#Object) sent from plugins when necessary.
6917Plugins SHOULD emit such an event whenever a change has occurred that would
6918result in a different state being saved, but not when the host explicity makes
6919a change which it knows is likely to have that effect, such as changing a
6933juce::lv2::BundleResource
6936R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
6937@prefix doap: <http://usefulinc.com/ns/doap#> .
6938@prefix foaf: <http://xmlns.com/foaf/0.1/> .
6939@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
6940@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6941@prefix time: <http://lv2plug.in/ns/ext/time#> .
6943<http://lv2plug.in/ns/ext/time>
6945 doap:name "LV2 Time" ;
6946 doap:shortdesc "A vocabulary for describing musical time." ;
6947 doap:created "2011-10-05" ;
6948 doap:developer <http://drobilla.net/drobilla#me> ;
6950 doap:revision "1.6" ;
6951 doap:created "2019-02-03" ;
6952 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
6953 dcs:blame <http://drobilla.net/drobilla#me> ;
6956 rdfs:label "Clarify time:beat origin."
6960 doap:revision "1.4" ;
6961 doap:created "2016-07-31" ;
6962 doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
6963 dcs:blame <http://drobilla.net/drobilla#me> ;
6966 rdfs:label "Define LV2_TIME_PREFIX."
6970 doap:revision "1.2" ;
6971 doap:created "2012-10-14" ;
6972 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
6973 dcs:blame <http://drobilla.net/drobilla#me> ;
6976 rdfs:label "Use consistent label style."
6980 doap:revision "1.0" ;
6981 doap:created "2012-04-17" ;
6982 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
6983 dcs:blame <http://drobilla.net/drobilla#me> ;
6986 rdfs:label "Initial release."
6990 lv2:documentation """
6992This is a vocabulary for describing a position in time and the speed of time
6993passage, in both real and musical terms.
6995In addition to real time (based on seconds), two units of time are used:
6996_frames_ and _beats_. A frame is a numbered quantum of time. Frame time is
6997related to real-time by the _frame rate_ or _sample rate_,
6998time:framesPerSecond. A beat is a single pulse of musical time. Beat time is
6999related to real-time by the _tempo_, time:beatsPerMinute.
7001Musical time additionally has a _meter_ which describes passage of time in
7002terms of musical _bars_. A bar is a higher level grouping of beats. The meter
7003describes how many beats are in one bar.
7008 lv2:documentation """
7010A point in time and/or the speed at which time is passing. A position is both
7011a point and a speed, which precisely defines a time within a timeline.
7016 lv2:documentation """
7018The rate of passage of time in terms of one unit with respect to another.
7023 lv2:documentation """
7025This is not the beat within a bar like time:barBeat, but relative to the same
7026origin as time:bar and monotonically increases unless the transport is
7032 lv2:documentation """
7034Beat unit, the note value that counts as one beat. This is the bottom number
7035in a time signature: 2 for half note, 4 for quarter note, and so on.
7040 lv2:documentation """
7042The rate of the progress of time as a fraction of normal speed. For example, a
7043rate of 0.0 is stopped, 1.0 is rolling at normal speed, 0.5 is rolling at half
7044speed, -1.0 is reverse, and so on.
7050, juce::lv2::BundleResource
7053R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
7054@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
7056<http://lv2plug.in/ns/ext/time>
7057 a lv2:Specification ;
7058 lv2:minorVersion 1 ;
7059 lv2:microVersion 6 ;
7060 rdfs:seeAlso <time.ttl> .
7064, juce::lv2::BundleResource
7067R
"lv2ttl(@prefix owl: <http://www.w3.org/2002/07/owl#> .
7068@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
7069@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
7070@prefix time: <http://lv2plug.in/ns/ext/time#> .
7071@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
7073<http://lv2plug.in/ns/ext/time>
7075 rdfs:label "LV2 Time" ;
7076 rdfs:comment "A vocabulary for describing musical time." ;
7077 rdfs:seeAlso <time.h> ,
7083 rdfs:subClassOf time:Position ;
7085 rdfs:comment "A point in time in some unit/dimension." .
7090 rdfs:label "Position" ;
7091 rdfs:comment "A point in time and/or the speed at which time is passing." .
7096 rdfs:subClassOf time:Position ;
7098 rdfs:comment "The rate of passage of time." .
7102 owl:ObjectProperty ,
7103 owl:FunctionalProperty ;
7104 rdfs:range time:Position ;
7105 rdfs:label "position" ;
7106 rdfs:comment "A musical position." .
7110 owl:DatatypeProperty ,
7111 owl:FunctionalProperty ;
7112 rdfs:domain time:Time ;
7113 rdfs:range xsd:float ;
7114 rdfs:label "beat within bar" ;
7115 rdfs:comment "The beat number within the bar, from 0 to time:beatsPerBar." .
7119 owl:DatatypeProperty ,
7120 owl:FunctionalProperty ;
7121 rdfs:domain time:Time ;
7122 rdfs:range xsd:long ;
7124 rdfs:comment "A musical bar or measure." .
7128 owl:DatatypeProperty ,
7129 owl:FunctionalProperty ;
7130 rdfs:domain time:Time ;
7131 rdfs:range xsd:double ;
7133 rdfs:comment "The global running beat number." .
7137 owl:DatatypeProperty ,
7138 owl:FunctionalProperty ;
7139 rdfs:domain time:Rate ;
7140 rdfs:range xsd:nonNegativeInteger ;
7141 rdfs:label "beat unit" ;
7142 rdfs:comment "The note value that counts as one beat." .
7146 owl:DatatypeProperty ,
7147 owl:FunctionalProperty ;
7148 rdfs:domain time:Rate ;
7149 rdfs:range xsd:float ;
7150 rdfs:label "beats per bar" ;
7151 rdfs:comment "The number of beats in one bar." .
7155 owl:DatatypeProperty ,
7156 owl:FunctionalProperty ;
7157 rdfs:domain time:Rate ;
7158 rdfs:range xsd:float ;
7159 rdfs:label "beats per minute" ;
7160 rdfs:comment "Tempo in beats per minute." .
7164 owl:DatatypeProperty ,
7165 owl:FunctionalProperty ;
7166 rdfs:domain time:Time ;
7167 rdfs:range xsd:long ;
7168 rdfs:label "frame" ;
7169 rdfs:comment "A time stamp in audio frames." .
7173 owl:DatatypeProperty ,
7174 owl:FunctionalProperty ;
7175 rdfs:domain time:Rate ;
7176 rdfs:range xsd:float ;
7177 rdfs:label "frames per second" ;
7178 rdfs:comment "Frame rate in frames per second." .
7182 owl:DatatypeProperty ,
7183 owl:FunctionalProperty ;
7184 rdfs:domain time:Rate ;
7185 rdfs:range xsd:float ;
7186 rdfs:label "speed" ;
7187 rdfs:comment "The rate of the progress of time as a fraction of normal speed." .
7198juce::lv2::BundleResource
7201R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
7202@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
7204<http://lv2plug.in/ns/extensions/units>
7205 a lv2:Specification ;
7206 lv2:minorVersion 5 ;
7207 lv2:microVersion 12 ;
7208 rdfs:seeAlso <units.ttl> .
7212, juce::lv2::BundleResource
7215R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
7216@prefix doap: <http://usefulinc.com/ns/doap#> .
7217@prefix foaf: <http://xmlns.com/foaf/0.1/> .
7218@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
7219@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
7220@prefix units: <http://lv2plug.in/ns/extensions/units#> .
7222<http://lv2plug.in/ns/extensions/units>
7224 doap:name "LV2 Units" ;
7225 doap:shortdesc "Units for LV2 values." ;
7226 doap:created "2007-02-06" ;
7227 doap:homepage <http://lv2plug.in/ns/extensions/units> ;
7228 doap:license <http://opensource.org/licenses/isc> ;
7230 doap:revision "5.12" ;
7231 doap:created "2019-02-03" ;
7232 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
7233 dcs:blame <http://drobilla.net/drobilla#me> ;
7236 rdfs:label "Fix outdated port description in documentation."
7238 rdfs:label "Remove overly restrictive domain from units:unit."
7242 doap:revision "5.10" ;
7243 doap:created "2015-04-07" ;
7244 doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ;
7245 dcs:blame <http://drobilla.net/drobilla#me> ;
7248 rdfs:label "Fix non-existent port type in examples."
7250 rdfs:label "Add lv2:Parameter to domain of units:unit."
7254 doap:revision "5.8" ;
7255 doap:created "2012-10-14" ;
7256 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
7257 dcs:blame <http://drobilla.net/drobilla#me> ;
7260 rdfs:label "Remove units:name in favour of rdfs:label."
7262 rdfs:label "Use consistent label style."
7266 doap:revision "5.6" ;
7267 doap:created "2012-04-17" ;
7268 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
7269 dcs:blame <http://drobilla.net/drobilla#me> ;
7272 rdfs:label "Add unit for audio frames."
7274 rdfs:label "Add header of URI defines."
7276 rdfs:label "Merge with unified LV2 package."
7280 doap:revision "5.4" ;
7281 doap:created "2011-11-21" ;
7282 doap:file-release <http://lv2plug.in/spec/lv2-units-5.4.tar.bz2> ;
7283 dcs:blame <http://drobilla.net/drobilla#me> ;
7286 rdfs:label "Make units.ttl a valid OWL 2 DL ontology."
7288 rdfs:label "Define used but undefined resources (units:name, units:render, units:symbol, units:Conversion, units:conversion, units:prefixConversion, units:to, and units:factor)."
7290 rdfs:label "Update packaging."
7292 rdfs:label "Improve documentation."
7296 doap:revision "5.2" ;
7297 doap:created "2010-10-05" ;
7298 doap:file-release <http://lv2plug.in/spec/lv2-units-5.2.tar.bz2> ;
7299 dcs:blame <http://drobilla.net/drobilla#me> ;
7302 rdfs:label "Add build system (for installation)."
7304 rdfs:label "Convert documentation to HTML and use lv2:documentation."
7308 doap:revision "5.0" ;
7309 doap:created "2010-10-05" ;
7310 doap:file-release <http://lv2plug.in/spec/lv2-units-5.0.tar.gz> ;
7311 dcs:blame <http://drobilla.net/drobilla#me> ;
7314 rdfs:label "Initial release."
7316 rdfs:label "Define used but undefined resources (units:name, units:render, units:symbol, units:Conversion, units:conversion, units:prefixConversion, units:to, and units:factor)."
7318 rdfs:label "Update packaging."
7320 rdfs:label "Improve documentation."
7324 doap:developer <http://plugin.org.uk/swh.xrdf#me> ;
7325 doap:maintainer <http://drobilla.net/drobilla#me> ;
7326 lv2:documentation """
7328This is a vocabulary for units typically used for control values in audio
7331For example, to say that a gain control is in decibels:
7334 @prefix units: <http://lv2plug.in/ns/extensions/units#> .
7335 @prefix eg: <http://example.org/> .
7337 eg:plugin lv2:port [
7338 a lv2:ControlPort , lv2:InputPort ;
7345Using the same form, plugins may also specify one-off units inline, to give
7346better display hints to hosts:
7349 eg:plugin lv2:port [
7350 a lv2:ControlPort , lv2:InputPort ;
7353 lv2:name "frob level" ;
7356 rdfs:label "frobnication" ;
7362It is also possible to define conversions between various units, which makes it
7363possible for hosts to automatically convert between units where possible. The
7364units defined in this extension include conversion definitions where it makes
7371, juce::lv2::BundleResource
7374R
"lv2ttl(@prefix owl: <http://www.w3.org/2002/07/owl#> .
7375@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
7376@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
7377@prefix units: <http://lv2plug.in/ns/extensions/units#> .
7378@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
7380<http://lv2plug.in/ns/extensions/units>
7382 rdfs:label "LV2 Units" ;
7383 rdfs:comment "Units for LV2 values." ;
7384 rdfs:seeAlso <units.h> ,
7391 rdfs:comment "A unit for a control value." .
7395 owl:ObjectProperty ;
7396 rdfs:range units:Unit ;
7398 rdfs:comment "The unit used by the value of a port or parameter." .
7402 owl:DatatypeProperty ;
7403 rdfs:label "unit format string" ;
7404 rdfs:domain units:Unit ;
7405 rdfs:range xsd:string ;
7406 rdfs:comment """A printf format string for rendering a value (e.g., "%f dB").""" .
7410 owl:DatatypeProperty ;
7411 rdfs:label "unit symbol" ;
7412 rdfs:domain units:Unit ;
7413 rdfs:range xsd:string ;
7414 rdfs:comment """The abbreviated symbol for this unit (e.g., "dB").""" .
7421 owl:onProperty units:to ;
7423 rdfs:comment "A conversion MUST have exactly 1 units:to property."
7425 rdfs:label "Conversion" ;
7426 rdfs:comment "A conversion from one unit to another." .
7430 owl:ObjectProperty ;
7431 rdfs:domain units:Unit ;
7432 rdfs:range units:Conversion ;
7433 rdfs:label "conversion" ;
7434 rdfs:comment "A conversion from this unit to another." .
7436units:prefixConversion
7438 owl:ObjectProperty ;
7439 rdfs:subPropertyOf units:conversion ;
7440 rdfs:domain units:Unit ;
7441 rdfs:range units:Conversion ;
7442 rdfs:label "prefix conversion" ;
7443 rdfs:comment "A conversion from this unit to another with the same base but a different prefix." .
7447 owl:ObjectProperty ;
7448 rdfs:domain units:Conversion ;
7449 rdfs:range units:Unit ;
7450 rdfs:label "conversion target" ;
7451 rdfs:comment "The target unit this conversion converts to." .
7455 owl:DatatypeProperty ;
7456 rdfs:domain units:Conversion ;
7457 rdfs:label "conversion factor" ;
7458 rdfs:comment "The factor to multiply the source value by in order to convert to the target unit." .
7463 units:factor 0.0166666666 ;
7466 rdfs:label "seconds" ;
7467 rdfs:comment "Seconds, the SI base unit for time." ;
7468 units:prefixConversion [
7472 units:render "%f s" ;
7477 rdfs:label "milliseconds" ;
7478 rdfs:comment "Milliseconds (thousandths of seconds)." ;
7479 units:prefixConversion [
7480 units:factor 0.001 ;
7483 units:render "%f ms" ;
7492 rdfs:label "minutes" ;
7493 rdfs:comment "Minutes (60s of seconds and 60ths of an hour)." ;
7494 units:render "%f mins" ;
7495 units:symbol "min" .
7500 rdfs:comment "Musical bars or measures." ;
7501 units:render "%f bars" ;
7502 units:symbol "bars" .
7506 rdfs:label "beats" ;
7507 rdfs:comment "Musical beats." ;
7508 units:render "%f beats" ;
7509 units:symbol "beats" .
7513 rdfs:label "audio frames" ;
7514 rdfs:comment "Audio frames or samples." ;
7515 units:render "%f frames" ;
7516 units:symbol "frames" .
7521 units:factor 39.37 ;
7524 rdfs:label "metres" ;
7525 rdfs:comment "Metres, the SI base unit for length." ;
7526 units:prefixConversion [
7533 units:factor 0.001 ;
7536 units:render "%f m" ;
7542 units:factor 0.3937 ;
7545 rdfs:label "centimetres" ;
7546 rdfs:comment "Centimetres (hundredths of metres)." ;
7547 units:prefixConversion [
7554 units:factor 0.00001 ;
7557 units:render "%f cm" ;
7563 units:factor 0.03937 ;
7566 rdfs:label "millimetres" ;
7567 rdfs:comment "Millimetres (thousandths of metres)." ;
7568 units:prefixConversion [
7569 units:factor 0.001 ;
7575 units:factor 0.000001 ;
7578 units:render "%f mm" ;
7584 units:factor 0.62138818 ;
7587 rdfs:label "kilometres" ;
7588 rdfs:comment "Kilometres (thousands of metres)." ;
7589 units:prefixConversion [
7593 units:factor 100000 ;
7596 units:factor 1000000 ;
7599 units:render "%f km" ;
7605 units:factor 0.0254 ;
7608 rdfs:label "inches" ;
7609 rdfs:comment "An inch, defined as exactly 0.0254 metres." ;
7610 units:render "%f\"" ;
7616 units:factor 1609.344 ;
7619 rdfs:label "miles" ;
7620 rdfs:comment "A mile, defined as exactly 1609.344 metres." ;
7621 units:render "%f mi" ;
7626 rdfs:label "decibels" ;
7627 rdfs:comment "Decibels, a logarithmic relative unit where 0 is unity." ;
7628 units:render "%f dB" ;
7637 rdfs:label "percent" ;
7638 rdfs:comment "Percentage, a ratio as a fraction of 100." ;
7639 units:render "%f%%" ;
7648 rdfs:label "coefficient" ;
7649 rdfs:comment "A scale coefficient where 1 is unity, or 100 percent." ;
7650 units:render "* %f" ;
7655 rdfs:label "hertz" ;
7656 rdfs:comment "Hertz, or inverse seconds, the SI derived unit for frequency." ;
7657 units:prefixConversion [
7658 units:factor 0.001 ;
7661 units:factor 0.000001 ;
7664 units:render "%f Hz" ;
7669 rdfs:label "kilohertz" ;
7670 rdfs:comment "Kilohertz (thousands of Hertz)." ;
7671 units:prefixConversion [
7675 units:factor 0.001 ;
7678 units:render "%f kHz" ;
7679 units:symbol "kHz" .
7683 rdfs:label "megahertz" ;
7684 rdfs:comment "Megahertz (millions of Hertz)." ;
7685 units:prefixConversion [
7686 units:factor 1000000 ;
7689 units:factor 0.001 ;
7692 units:render "%f MHz" ;
7693 units:symbol "MHz" .
7697 rdfs:label "beats per minute" ;
7698 rdfs:comment "Beats Per Minute (BPM), the standard unit for musical tempo." ;
7699 units:prefixConversion [
7700 units:factor 0.0166666666 ;
7703 units:render "%f BPM" ;
7704 units:symbol "BPM" .
7710 units:to units:semitone12TET
7712 rdfs:label "octaves" ;
7713 rdfs:comment "Octaves, relative musical pitch where +1 octave doubles the frequency." ;
7714 units:render "%f octaves" ;
7715 units:symbol "oct" .
7721 units:to units:semitone12TET
7723 rdfs:label "cents" ;
7724 rdfs:comment "Cents (hundredths of semitones)." ;
7725 units:render "%f ct" ;
7731 units:factor 0.083333333 ;
7734 rdfs:label "semitones" ;
7735 rdfs:comment "A semiton)lv2ttl" R"lv2ttl(e in the 12-tone equal temperament scale." ;
7736 units:render "%f semi" ;
7737 units:symbol "semi" .
7741 rdfs:label "degrees" ;
7742 rdfs:comment "An angle where 360 degrees is one full rotation." ;
7743 units:render "%f deg" ;
7744 units:symbol "deg" .
7748 rdfs:label "MIDI note" ;
7749 rdfs:comment "A MIDI note number." ;
7750 units:render "MIDI note %d" ;
7751 units:symbol "note" .
7762juce::lv2::BundleResource
7765R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
7766@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
7768<http://lv2plug.in/ns/ext/patch>
7769 a lv2:Specification ;
7770 lv2:minorVersion 2 ;
7771 lv2:microVersion 8 ;
7772 rdfs:seeAlso <patch.ttl> .
7776, juce::lv2::BundleResource
7779R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
7780@prefix doap: <http://usefulinc.com/ns/doap#> .
7781@prefix foaf: <http://xmlns.com/foaf/0.1/> .
7782@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
7783@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
7784@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
7786<http://lv2plug.in/ns/ext/patch>
7788 doap:created "2012-02-09" ;
7789 doap:license <http://opensource.org/licenses/isc> ;
7790 doap:developer <http://drobilla.net/drobilla#me> ;
7791 doap:name "LV2 Patch" ;
7792 doap:shortdesc "A protocol for accessing and manipulating properties." ;
7794 doap:revision "2.8" ;
7795 doap:created "2020-04-26" ;
7796 doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ;
7797 dcs:blame <http://drobilla.net/drobilla#me> ;
7800 rdfs:label "Fix incorrect type of patch:sequenceNumber."
7804 doap:revision "2.6" ;
7805 doap:created "2019-02-03" ;
7806 doap:file-release <http://lv2plug.in/spec/lv2-1.16.0.tar.bz2> ;
7807 dcs:blame <http://drobilla.net/drobilla#me> ;
7810 rdfs:label "Add patch:accept property."
7812 rdfs:label "Add patch:context property."
7816 doap:revision "2.4" ;
7817 doap:created "2015-04-07" ;
7818 doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ;
7819 dcs:blame <http://drobilla.net/drobilla#me> ;
7822 rdfs:label "Define patch:Get with no subject to implicitly apply to reciever. This can be used by UIs to get an initial description of a plugin."
7824 rdfs:label "Add patch:Copy method."
7828 doap:revision "2.2" ;
7829 doap:created "2014-08-08" ;
7830 doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ;
7831 dcs:blame <http://drobilla.net/drobilla#me> ;
7834 rdfs:label "Add patch:sequenceNumber for associating replies with requests."
7838 doap:revision "2.0" ;
7839 doap:created "2013-01-10" ;
7840 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
7841 dcs:blame <http://drobilla.net/drobilla#me> ;
7844 rdfs:label "Make patch:Set a compact message for setting one property."
7846 rdfs:label "Add patch:readable and patch:writable for describing available properties."
7850 doap:revision "1.0" ;
7851 doap:created "2012-04-17" ;
7852 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
7853 dcs:blame <http://drobilla.net/drobilla#me> ;
7856 rdfs:label "Initial release."
7860 lv2:documentation """
7862This is a vocabulary for messages that access and manipulate properties.
7863It can be used as a dynamic control interface for plugins,
7864or anything else with a property-based model.
7866The key underlying concept here is to control things by manipulating arbitrary properties,
7867rather than by calling application-specific methods.
7868This allows implementations to understand what messages do
7869(at least in a mechanical sense),
7870which makes things like caching, proxying, or undo relatively straightforward to implement.
7871Note, however, that this is only conceptual:
7872there is no requirement to implement a general property store.
7873Typically, a plugin will understand a fixed set of properties that represent its parameters or other internal state, and ignore everything else.
7875This protocol is syntax-agnostic,
7876and [homoiconic](https://en.wikipedia.org/wiki/Homoiconicity)
7877in the sense that the messages use the same format as the data they manipulate.
7878In particular, messages can be serialised as a binary [Object](atom.html#Object) for realtime plugin control,
7879or as Turtle for saving to a file,
7880sending over a network,
7881printing for debugging purposes,
7884This specification only defines a semantic protocol,
7885there is no corresponding API.
7886It can be used with the [Atom](atom.html) extension to control plugins which support message-based parameters as defined by the [Parameters](parameters.html) extension.
7888For example, if a plugin defines a `eg:volume` parameter, it can be controlled by the host by sending a patch:Set message to the plugin instance:
7893 patch:property eg:volume ;
7897Similarly, the host could get the current value for this parameter by sending a patch:Get message:
7902 patch:property eg:volume ;
7905The plugin would then respond with the same patch:Set message as above.
7906In this case, the plugin instance is implicitly the patch:subject,
7907but a specific subject can also be given for deeper control.
7912 lv2:documentation """
7914After this, the destination has the same description as the subject,
7915and the subject is unchanged.
7917It is an error if the subject does not exist,
7918or if the destination already exists.
7920Multiple subjects may be given if the destination is a container,
7921but the semantics of this case are application-defined.
7926 lv2:documentation """
7928If a patch:property is given,
7929then the receiver should respond with a patch:Set message that gives only that property.
7931Otherwise, it should respond with a [concise bounded description](http://www.w3.org/Submission/CBD/) in a patch:Put message,
7932that is, a description that recursively includes any blank node values.
7934If a patch:subject is given, then the response should have the same subject.
7935If no subject is given, then the receiver is implicitly the subject.
7937If a patch:request node or a patch:sequenceNumber is given,
7938then the response should be a patch:Response and have the same property.
7939If neither is given, then the receiver can respond with a simple patch:Put message.
7945 patch:subject eg:something .
7952 patch:subject eg:something ;
7954 eg:name "Something" ;
7955 eg:ratio 1.6180339887 ;
7961 lv2:documentation """
7963If the subject does not exist, it is created. If the subject does already
7964exist, it is added to.
7966This request only adds properties, it never removes them. The user must take
7967care that multiple values are not set for properties which should only have
7973 lv2:documentation """
7975This is an abstract base class for all patch messages. Concrete messages are
7976either a patch:Request or a patch:Response.
7981 lv2:documentation """
7983After this, the destination has the description that the subject had, and the
7984subject no longer exists.
7986It is an error if the subject does not exist, or if the destination already
7992 lv2:documentation """
7994This method always has at least one subject, and exactly one patch:add and
7995patch:remove property. The value of patch:add and patch:remove are nodes which
7996have the properties to add or remove from the subject(s), respectively. The
7997special value patch:wildcard may be used as the value of a remove property to
7998remove all properties with the given predicate. For example:
8003 patch:subject <something> ;
8005 eg:name "New name" ;
8009 eg:name "Old name" ;
8010 eg:age patch:wildcard ; # Remove all old eg:age properties
8016 lv2:documentation """
8018If the subject does not already exist, it is created. If the subject does
8019already exist, the patch:body is considered an updated version of it, and the
8020previous version is replaced.
8025 patch:subject <something> ;
8027 eg:name "New name" ;
8035 rdfs:label "Request" ;
8036 rdfs:subClassOf)lv2ttl" R"lv2ttl( patch:Message ;
8037 lv2:documentation """
8039A request may have a patch:subject property, which specifies the resource that
8040the request applies to. The subject may be omitted in contexts where it is
8041implicit, for example if the recipient is the subject.
8046 lv2:documentation """
8048This is equivalent to a patch:Patch which removes _all_ pre-existing values for
8049the property before setting the new value. For example:
8054 patch:subject <something> ;
8055 patch:property eg:name ;
8056 patch:value "New name" .
8058Which is equivalent to:
8063 patch:subject <something> ;
8065 eg:name "New name" ;
8068 eg:name patch:wildcard ;
8074 lv2:documentation """
8076The details of this property's value depend on the type of message it is a part
8082 lv2:documentation """
8084For example, a plugin may have a special context for ephemeral properties which
8085are only relevant during the lifetime of the instance and should not be saved
8088The specific uses for contexts are application specific. However, the context
8089MUST be a URI, and can be interpreted as the ID of a data model where
8090properties should be stored. Implementations MAY have special support for
8091contexts, for example by storing in a quad store or serializing to a format
8092that supports multiple RDF graphs such as TriG.
8097 lv2:documentation """
8099See the similar patch:writable property for details.
8104 lv2:documentation """
8106This can be used if referring directly to the URI or blank node ID of the
8107request is possible. Otherwise, use patch:sequenceNumber.
8112 lv2:documentation """
8114This property is used to associate replies with requests when it is not
8115feasible to refer to request URIs with patch:request. A patch:Response with a
8116given sequence number is the reply to the previously send patch:Request with
8117the same sequence number.
8119The special sequence number 0 means that no reply is desired.
8124 lv2:documentation """
8126This makes it possible to describe the removal of all values for a given
8132 lv2:documentation """
8134This is used to list properties that can be changed, for example to allow user
8135interfaces to present appropriate controls. For example:
8138 @prefix eg: <http://example.org/> .
8139 @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
8140 @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8141 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
8145 rdfs:label "title" ;
8146 rdfs:range xsd:string .
8149 patch:writable eg:title .
8155, juce::lv2::BundleResource
8158R
"lv2ttl(@prefix foaf: <http://xmlns.com/foaf/0.1/> .
8159@prefix owl: <http://www.w3.org/2002/07/owl#> .
8160@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
8161@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
8162@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8163@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
8165<http://lv2plug.in/ns/ext/patch>
8167 rdfs:seeAlso <patch.h> ,
8169 rdfs:label "LV2 Patch" ;
8170 rdfs:comment "A protocol for accessing and manipulating properties." .
8174 rdfs:subClassOf patch:Response ;
8176 rdfs:comment "An acknowledgement that a request was successful." .
8180 rdfs:subClassOf patch:Request ;
8184 owl:minCardinality 1 ;
8185 owl:onProperty patch:subject
8189 owl:onProperty patch:destination
8191 rdfs:comment "A request to copy the patch:subject to the patch:destination." .
8195 rdfs:subClassOf patch:Request ;
8196 rdfs:label "Delete" ;
8197 rdfs:comment "Request that the patch:subject or subjects be deleted." .
8201 rdfs:subClassOf patch:Response ;
8202 rdfs:label "Error" ;
8203 rdfs:comment "A response indicating an error processing a request." .
8207 rdfs:subClassOf patch:Request ;
8209 rdfs:comment "A request for a description of the patch:subject." .
8213 rdfs:subClassOf patch:Request ;
8214 rdfs:label "Insert" ;
8218 owl:onProperty patch:subject
8220 rdfs:comment "A request to insert a patch:body into the patch:subject." .
8224 rdfs:label "Patch Message" ;
8225 rdfs:comment "A patch message." .
8229 rdfs:subClassOf patch:Request ;
8234 owl:onProperty patch:subject
8238 owl:onProperty patch:destination
8240 rdfs:comment "A request to move the patch:subject to the patch:destination." .
8244 rdfs:subClassOf patch:Request ,
8247 owl:minCardinality 1 ;
8248 owl:onProperty patch:subject
8252 owl:onProperty patch:add
8256 owl:onProperty patch:remove
8258 rdfs:label "Patch" ;
8259 rdfs:comment "A request to add and/or remove properties of the patch:subject." .
8263 rdfs:subClassOf patch:Request ;
8268 owl:onProperty patch:subject
8270 rdfs:comment "A request to put the patch:body as the patch:subject." .
8274 rdfs:label "Request" ;
8275 rdfs:subClassOf patch:Message ;
8276 rdfs:comment "A patch request message." .
8280 rdfs:subClassOf patch:Message ;
8281 rdfs:label "Response" ;
8282 rdfs:comment "A response to a patch:Request." .
8287 rdfs:subClassOf patch:Request ,
8291 owl:onProperty patch:property
8295 owl:onProperty patch:value
8297 rdfs:comment "A compact request to set a property to a value." .
8301 owl:ObjectProperty ;
8302 rdfs:label "accept" ;
8303 rdfs:domain patch:Request ;
8304 rdfs:range rdfs:Class ;
8305 rdfs:comment "An accepted type for a response." .
8309 owl:ObjectProperty ,
8310 owl:FunctionalProperty ;
8311 rdfs:domain patch:Patch ;
8312 rdfs:range rdfs:Resource ;
8314 rdfs:comment "The properties to add to the subject." .
8318 owl:ObjectProperty ,
8319 owl:FunctionalProperty ;
8320 rdfs:domain patch:Message ;
8322 rdfs:comment "The body of a message." .
8326 owl:ObjectProperty ;
8327 rdfs:domain patch:Message ;
8328 rdfs:label "context" ;
8329 rdfs:comment "The context of properties in this message." .
8333 owl:ObjectProperty ,
8334 owl:FunctionalProperty ;
8335 rdfs:domain patch:Message ;
8336 rdfs:label "destination" ;
8337 rdfs:comment "The destination to move the patch:subject to." .
8341 owl:ObjectProperty ;
8342 rdfs:label "property" ;
8343 rdfs:domain patch:Message ;
8344 rdfs:range rdf:Property ;
8345 rdfs:comment "The property for a patch:Set or patch:Get message." .
8349 owl:ObjectProperty ;
8350 rdfs:label "readable" ;
8351 rdfs:range rdf:Property ;
8352 rdfs:comment "A property that can be read with a patch:Get message." .
8356 owl:ObjectProperty ,
8357 owl:FunctionalProperty ;
8358 rdfs:label "remove" ;
8359 rdfs:domain patch:Patch ;
8360 rdfs:range rdfs:Resource ;
8361 rdfs:comment "The properties to remove from the subject." .
8365 owl:ObjectProperty ,
8366 owl:FunctionalProperty ;
8367 rdfs:label "request" ;
8368 rdfs:domain patch:Response ;
8369 rdfs:range patch:Request ;
8370 rdfs:comment "The request this is a response to." .
8374 owl:DatatypeProperty ,
8375 owl:FunctionalProperty ;
8376 rdfs:label "sequence number" ;
8377 rdfs:domain patch:Message ;
8378 rdfs:range xsd:int ;
8379 rdfs:comment "The sequence number of a request or response." .
8383 owl:ObjectProperty ,
8384 owl:FunctionalProperty ;
8385 rdfs:domain patch:Message ;
8386 rdfs:label "subject" ;
8387 rdfs:comment "The subject this message applies to." .
8391 owl:DatatypeProperty ;
8392 rdfs:label "value" ;
8393 rdfs:domain patch:Set ;
8394 rdfs:range rdf:Property ;
8395 rdfs:comment "The value of a property in a patch:Set message." .
8399 rdfs:label "wildcard" ;
8400 rdfs:comment "A wildcard that matches any resource." .
8404 owl:ObjectProperty ;
8405 rdfs:label "writable" ;
8406 rdfs:range rdf:Property ;
8407 rdfs:comment "A property that can be set with a patch:Set or patch:Patch message." .
8418juce::lv2::BundleResource
8421R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8422@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8424<http://lv2plug.in/ns/ext/parameters>
8425 a lv2:Specification ;
8426 lv2:minorVersion 1 ;
8427 lv2:microVersion 4 ;
8428 rdfs:seeAlso <parameters.ttl> .
8432, juce::lv2::BundleResource
8434"parameters.meta.ttl",
8435R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
8436@prefix doap: <http://usefulinc.com/ns/doap#> .
8437@prefix foaf: <http://xmlns.com/foaf/0.1/> .
8438@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8439@prefix param: <http://lv2plug.in/ns/ext/parameters#> .
8440@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8442<http://lv2plug.in/ns/ext/parameters>
8444 doap:name "LV2 Parameters" ;
8446 doap:revision "1.4" ;
8447 doap:created "2015-04-07" ;
8448 doap:file-release <http://lv2plug.in/spec/lv2-1.12.0.tar.bz2> ;
8449 dcs:blame <http://drobilla.net/drobilla#me> ;
8452 rdfs:label "Add range to parameters so hosts know how to control them."
8456 doap:revision "1.2" ;
8457 doap:created "2012-10-14" ;
8458 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
8459 dcs:blame <http://drobilla.net/drobilla#me> ;
8462 rdfs:label "Use consistent label style."
8464 rdfs:label "Add param:sampleRate."
8466 rdfs:label "Add parameters.h of URI defines for convenience."
8470 doap:revision "1.0" ;
8471 doap:created "2012-04-17" ;
8472 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
8473 dcs:blame <http://drobilla.net/drobilla#me> ;
8476 rdfs:label "Initial release."
8480 doap:created "2009-00-00" ;
8481 doap:shortdesc "Common parameters for audio processing." ;
8482 doap:maintainer <http://drobilla.net/drobilla#me> ;
8483 doap:developer <http://lv2plug.in/ns/meta#larsl> ;
8484 lv2:documentation """
8486This is a vocabulary for parameters that are common in audio processing
8487software. A <q>parameter</q> is purely a metadata concept, unrelated to any
8488particular code mechanism. Parameters are used to assign meaning to controls
8489(for example, using lv2:designation for ports) so they can be used more
8490intelligently or presented to the user more efficiently.
8496 rdfs:label "wet/dry ratio" ;
8497 lv2:documentation """
8499The ratio between processed and bypass components in output signal. The dry
8500and wet percentages can be calculated from the following equations:
8503 dry = (wetDryRatio.maximum - wetDryRatio.value) / wetDryRatio.maximum
8504 wet = wetDryRatio.value / wetDryRatio.maximum
8506Typically, maximum value of 1 or 100 and minimum value of 0 should be used.
8512, juce::lv2::BundleResource
8515R
"lv2ttl(@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
8516@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8517@prefix owl: <http://www.w3.org/2002/07/owl#> .
8518@prefix param: <http://lv2plug.in/ns/ext/parameters#> .
8519@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> .
8520@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
8521@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8522@prefix units: <http://lv2plug.in/ns/extensions/units#> .
8524<http://lv2plug.in/ns/ext/parameters>
8526 rdfs:label "LV2 Parameters" ;
8527 rdfs:comment "Common parameters for audio processing." ;
8528 rdfs:seeAlso <parameters.meta.ttl> .
8532 rdfs:subClassOf pg:Group ;
8533 rdfs:label "Control Group" ;
8534 rdfs:comment "A group representing a set of associated controls." .
8538 rdfs:range atom:Float ;
8539 rdfs:label "amplitude" ;
8540 rdfs:comment "An amplitude as a factor, where 0 is silent and 1 is unity." .
8544 rdfs:range atom:Float ;
8545 rdfs:label "attack" ;
8546 rdfs:comment "The duration of an envelope attack stage." .
8548param:cutoffFrequency
8550 rdfs:range atom:Float ;
8551 rdfs:label "cutoff frequency" ;
8552 rdfs:comment "The cutoff frequency, typically in Hz, for a filter." .
8556 rdfs:range atom:Float ;
8557 rdfs:label "decay" ;
8558 rdfs:comment "The duration of an envelope decay stage." .
8562 rdfs:range atom:Float ;
8563 rdfs:label "delay" ;
8564 rdfs:comment "The duration of an envelope delay stage." .
8568 rdfs:range atom:Float ;
8569 rdfs:label "frequency" ;
8570 rdfs:comment "A frequency, typically in Hz." .
8574 rdfs:range atom:Float ;
8576 rdfs:comment "The duration of an envelope hold stage." .
8580 rdfs:range atom:Float ;
8581 rdfs:label "pulse width" ;
8582 rdfs:comment "The width of a pulse of a rectangular waveform." .
8586 rdfs:range atom:Float ;
8587 rdfs:label "ratio" ;
8588 rdfs:comment "Compression ratio." .
8592 rdfs:range atom:Float ;
8593 rdfs:label "release" ;
8594 rdfs:comment "The duration of an envelope release stage." .
8598 rdfs:range atom:Float ;
8599 rdfs:label "resonance" ;
8600 rdfs:comment "The resonance of a filter." .
8604 rdfs:label "sustain" ;
8605 rdfs:range atom:Float ;
8606 rdfs:comment "The level of an envelope sustain stage as a factor." .
8610 rdfs:range atom:Float ;
8611 rdfs:label "threshold" ;
8612 rdfs:comment "Compression threshold." .
8616 rdfs:range atom:Float ;
8617 rdfs:label "waveform" ;
8618 rdfs:comment """The waveform "fader" for oscillators or modulators that have several.""" .
8622 rdfs:range atom:Float ;
8626 units:unit units:db ;
8628 rdfs:comment "Gain in decibels." .
8632 rdfs:label "wet/dry ratio" ;
8633 rdfs:comment "The ratio between processed and bypassed levels in the output." .
8637 rdfs:label "wet level" ;
8638 rdfs:comment "The level of the processed component of a signal." .
8642 rdfs:label "dry level" ;
8643 rdfs:comment "The level of the unprocessed component of a signal." .
8647 rdfs:label "bypass" ;
8648 rdfs:comment "A boolean parameter that disables processing if true." .
8652 rdfs:label "sample rate" ;
8653 rdfs:comment "A sample rate in Hz." .
8655param:EnvelopeControls
8657 rdfs:subClassOf param:ControlGroup ;
8658 rdfs:label "Envelope Controls" ;
8659 rdfs:comment "Typical controls for a DAHDSR envelope." ;
8662 lv2:designation param:delay
8665 lv2:designation param:attack
8668 lv2:designation param:hold
8671 lv2:designation param:decay
8674 lv2:designation param:sustain
8677 lv2:designation param:release
8680param:OscillatorControls
8682 rdfs:subClassOf param:ControlGroup ;
8683 rdfs:label "Oscillator Controls" ;
8684 rdfs:comment "Typical controls for an oscillator." ;
8686 lv2:designation param:frequency
8688 lv2:designation param:amplitude
8690 lv2:designation param:waveform
8692 lv2:designation param:pulseWidth
8697 rdfs:subClassOf param:ControlGroup ;
8698 rdfs:label "Filter Controls" ;
8699 rdfs:comment "Typical controls for a filter." ;
8701 lv2:designation param:cutoffFrequency
8703 lv2:designation param:resonance
8706param:CompressorControls
8708 rdfs:subClassOf param:ControlGroup ;
8709 rdfs:label "Compressor Controls" ;
8710 rdfs:comment "Typical controls for a compressor." ;
8712 lv2:designation param:threshold
8714 lv2:designation param:ratio
8726juce::lv2::BundleResource
8729R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8730@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8732<http://lv2plug.in/ns/ext/urid>
8733 a lv2:Specification ;
8734 lv2:minorVersion 1 ;
8735 lv2:microVersion 4 ;
8736 rdfs:seeAlso <urid.ttl> .
8740, juce::lv2::BundleResource
8743R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
8744@prefix doap: <http://usefulinc.com/ns/doap#> .
8745@prefix foaf: <http://xmlns.com/foaf/0.1/> .
8746@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8747@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8748@prefix urid: <http://lv2plug.in/ns/ext/urid#> .
8750<http://lv2plug.in/ns/ext/urid>
8752 doap:license <http://opensource.org/licenses/isc> ;
8753 doap:name "LV2 URID" ;
8754 doap:shortdesc "Features for mapping URIs to and from integers." ;
8755 doap:created "2011-07-22" ;
8756 doap:developer <http://lv2plug.in/ns/meta#gabrbedd> ;
8757 doap:maintainer <http://drobilla.net/drobilla#me> ;
8759 doap:revision "1.4" ;
8760 doap:created "2012-10-14" ;
8761 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
8762 dcs:blame <http://drobilla.net/drobilla#me> ;
8765 rdfs:label "Fix typo in urid:unmap documentation."
8769 doap:revision "1.2" ;
8770 doap:created "2012-04-17" ;
8771 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
8772 dcs:blame <http://drobilla.net/drobilla#me> ;
8775 rdfs:label "Add feature struct names."
8777 rdfs:label "Merge with unified LV2 package."
8781 doap:revision "1.0" ;
8782 doap:created "2011-11-21" ;
8783 doap:file-release <http://lv2plug.in/spec/lv2-urid-1.0.tar.bz2> ;
8784 dcs:blame <http://drobilla.net/drobilla#me> ;
8787 rdfs:label "Initial release."
8791 lv2:documentation """
8793This extension defines a simple mechanism for plugins to map URIs to and from
8794integers. This is usually used for performance reasons, for example for
8795processing events with URI types in real-time audio code). Typically, plugins
8796map URIs to integers for things they "understand" at instantiation time, and
8797store those values for use in the audio thread without doing any string
8798comparison. This allows for the extensibility of RDF but with the performance
8801This extension is intended as an improved and simplified replacement for the
8802[uri-map](uri-map.html) extension, since the `map` context parameter there has
8803proven problematic. This extension is functionally equivalent to the uri-map
8804extension with a NULL context. New implementations are encouraged to use this
8805extension for URI mapping.
8810 lv2:documentation """
8812To support this feature, the host must pass an LV2_Feature to
8813LV2_Descriptor::instantiate() with URI LV2_URID__map and data pointed to an
8814instance of LV2_URID_Map.
8819 lv2:documentation """
8821To support this feature, the host must pass an LV2_Feature to
8822LV2_Descriptor::instantiate() with URI LV2_URID__unmap and data pointed to an
8823instance of LV2_URID_Unmap.
8829, juce::lv2::BundleResource
8832R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8833@prefix owl: <http://www.w3.org/2002/07/owl#> .
8834@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8835@prefix urid: <http://lv2plug.in/ns/ext/urid#> .
8837<http://lv2plug.in/ns/ext/urid>
8839 rdfs:label "LV2 URID" ;
8840 rdfs:comment "Features for mapping URIs to and from integers." ;
8841 rdfs:seeAlso <urid.h> ,
8847 rdfs:comment "A feature to map URI strings to integer URIDs." .
8851 rdfs:label "unmap" ;
8852 rdfs:comment "A feature to unmap URIDs back to strings." .
8863juce::lv2::BundleResource
8866R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8867@prefix dcs: <http://ontologi.es/doap-changeset#> .
8868@prefix doap: <http://usefulinc.com/ns/doap#> .
8869@prefix foaf: <http://xmlns.com/foaf/0.1/> .
8870@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8872<http://lv2plug.in/ns/ext/uri-map>
8874 doap:maintainer <http://drobilla.net/drobilla#me> ;
8875 doap:created "2008-00-00" ;
8876 doap:developer <http://lv2plug.in/ns/meta#larsl> ,
8877 <http://drobilla.net/drobilla#me> ;
8878 doap:license <http://opensource.org/licenses/isc> ;
8879 doap:name "LV2 URI Map" ;
8880 doap:shortdesc "A feature for mapping URIs to integers." ;
8882 doap:revision "1.6" ;
8883 doap:created "2012-04-17" ;
8884 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
8885 dcs:blame <http://drobilla.net/drobilla#me> ;
8888 rdfs:label "Merge with unified LV2 package."
8892 doap:revision "1.4" ;
8893 doap:created "2011-11-21" ;
8894 dcs:blame <http://drobilla.net/drobilla#me> ;
8897 rdfs:label "Update packaging."
8899 rdfs:label "Deprecate uri-map in favour of urid."
8903 doap:revision "1.2" ;
8904 doap:created "2011-05-26" ;
8905 dcs:blame <http://drobilla.net/drobilla#me> ;
8908 rdfs:label "Add build system (for installation)."
8910 rdfs:label "Mark up documentation in HTML using lv2:documentation."
8914 doap:revision "1.0" ;
8915 doap:created "2010-10-18" ;
8916 dcs:blame <http://drobilla.net/drobilla#me> ;
8919 rdfs:label "Initial release."
8923 lv2:documentation """
8925<span class="warning">This extension is deprecated.</span> New implementations
8926should use [LV2 URID](urid.html) instead.
8928This extension defines a simple mechanism for plugins to map URIs to integers,
8929usually for performance reasons (e.g. processing events typed by URIs in real
8930time). The expected use case is for plugins to map URIs to integers for things
8931they 'understand' at instantiation time, and store those values for use in the
8932audio thread without doing any string comparison. This allows the
8933extensibility of RDF with the performance of integers (or centrally defined
8934enumerations).
"""^^lv2:Markdown .
8938, juce::lv2::BundleResource
8941R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8942@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8944<http://lv2plug.in/ns/ext/uri-map>
8945 a lv2:Specification ;
8946 lv2:minorVersion 1 ;
8947 lv2:microVersion 6 ;
8948 rdfs:seeAlso <uri-map.ttl> .
8952, juce::lv2::BundleResource
8955R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8956@prefix owl: <http://www.w3.org/2002/07/owl#> .
8957@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
8958@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8959@prefix umap: <http://lv2plug.in/ns/ext/uri-map#> .
8961<http://lv2plug.in/ns/ext/uri-map>
8963 owl:deprecated true ;
8964 rdfs:label "LV2 URI Map" ;
8965 rdfs:comment "A feature for mapping URIs to integers." ;
8966 rdfs:seeAlso <uri-map.h> ,
8967 <uri-map.meta.ttl> .
8978juce::lv2::BundleResource
8981R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
8982@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8984<http://lv2plug.in/ns/ext/log>
8985 a lv2:Specification ;
8986 lv2:minorVersion 2 ;
8987 lv2:microVersion 4 ;
8988 rdfs:seeAlso <log.ttl> .
8992, juce::lv2::BundleResource
8995R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
8996@prefix doap: <http://usefulinc.com/ns/doap#> .
8997@prefix foaf: <http://xmlns.com/foaf/0.1/> .
8998@prefix log: <http://lv2plug.in/ns/ext/log#> .
8999@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9000@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9002<http://lv2plug.in/ns/ext/log>
9004 doap:name "LV2 Log" ;
9005 doap:shortdesc "A feature for writing log messages." ;
9006 doap:created "2012-01-12" ;
9007 doap:developer <http://drobilla.net/drobilla#me> ;
9009 doap:revision "2.4" ;
9010 doap:created "2016-07-30" ;
9011 doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ;
9012 dcs:blame <http://drobilla.net/drobilla#me> ;
9015 rdfs:label "Add lv2_log_logger_set_map() for changing the URI map of an existing logger."
9019 doap:revision "2.2" ;
9020 doap:created "2014-01-04" ;
9021 doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ;
9022 dcs:blame <http://drobilla.net/drobilla#me> ;
9025 rdfs:label "Add missing include string.h to logger.h for memset."
9029 doap:revision "2.0" ;
9030 doap:created "2013-01-08" ;
9031 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
9032 dcs:blame <http://drobilla.net/drobilla#me> ;
9035 rdfs:label "Add logger convenience API."
9039 doap:revision "1.0" ;
9040 doap:created "2012-04-17" ;
9041 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
9042 dcs:blame <http://drobilla.net/drobilla#me> ;
9045 rdfs:label "Initial release."
9049 lv2:documentation """
9051This extension defines a feature, log:log, which allows plugins to print log
9052messages with an API similar to the standard C `printf` function. This allows,
9053for example, plugin logs to be nicely presented to the user in a graphical user
9056Different log levels are defined by URI and passed as an LV2_URID. This
9057extensions defines standard levels which are expected to be understood by all
9058implementations and should be sufficient in most cases, but advanced
9059implementations may define and use additional levels to suit their needs.
9065 rdfs:label "Log Entry" ;
9066 lv2:documentation """
9068Subclasses of this are passed as the `type` parameter to LV2_Log_Log methods to
9069describe the nature of the log entry.
9074 lv2:documentation """
9076An error should only be posted when a serious unexpected error occurs, and
9077should be actively shown to the user by the host.
9082 lv2:documentation """
9084A note records some useful piece of information, but may be ignored. The host
9085should provide passive access to note entries to the user.
9090 lv2:documentation """
9092A warning should be posted when an unexpected, but non-critical, error occurs.
9093The host should provide passive access to warnings entries to the user, but may
9094also choose to actively show them.
9099 lv2:documentation """
9101A trace should not be displayed during normal operation, but the host may
9102implement an option to display them for debugging purposes.
9104This entry type is special in that one may be posted in a real-time thread. It
9105is assumed that if debug tracing is enabled, real-time performance is not a
9106concern. However, the host MUST guarantee that posting a trace _is_ real-time
9107safe if debug tracing is not enabled (for example, by simply ignoring the call
9108as early as possible).
"""^^lv2:Markdown .
9111 lv2:documentation """
9113A feature which plugins may use to log messages. To support this feature,
9114the host must pass an LV2_Feature to LV2_Descriptor::instantiate() with URI
9115LV2_LOG__log and data pointed to an instance of LV2_Log_Log.
9121, juce::lv2::BundleResource
9124R
"lv2ttl(@prefix log: <http://lv2plug.in/ns/ext/log#> .
9125@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9126@prefix owl: <http://www.w3.org/2002/07/owl#> .
9127@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
9128@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9129@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
9131<http://lv2plug.in/ns/ext/log>
9133 rdfs:label "LV2 Log" ;
9134 rdfs:comment "A feature for writing log messages." ;
9135 rdfs:seeAlso <log.h> ,
9140 rdfs:label "Entry" ;
9141 rdfs:comment "A log entry." .
9145 rdfs:label "Error" ;
9146 rdfs:subClassOf log:Entry ;
9147 rdfs:comment "An error message." .
9152 rdfs:subClassOf log:Entry ;
9153 rdfs:comment "An informative message." .
9157 rdfs:label "Warning" ;
9158 rdfs:subClassOf log:Entry ;
9159 rdfs:comment "A warning message." .
9163 rdfs:label "Trace" ;
9164 rdfs:subClassOf log:Entry ;
9165 rdfs:comment "A debugging trace message." .
9170 rdfs:comment "Logging feature." .
9181juce::lv2::BundleResource
9184R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9185@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9187<http://lv2plug.in/ns/ext/dynmanifest>
9188 a lv2:Specification ;
9189 lv2:minorVersion 1 ;
9190 lv2:microVersion 6 ;
9191 rdfs:seeAlso <dynmanifest.ttl> .
9195, juce::lv2::BundleResource
9198R
"lv2ttl(@prefix dman: <http://lv2plug.in/ns/ext/dynmanifest#> .
9199@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9200@prefix owl: <http://www.w3.org/2002/07/owl#> .
9201@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
9202@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9203@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
9205<http://lv2plug.in/ns/ext/dynmanifest>
9207 rdfs:label "LV2 Dyn Manifest" ;
9208 rdfs:comment "Support for dynamic manifest data generation." ;
9209 rdfs:seeAlso <dynmanifest.h> ,
9210 <dynmanifest.meta.ttl> .
9214 rdfs:label "Dynamic Manifest" ;
9217 owl:onProperty lv2:binary ;
9218 owl:minCardinality 1 ;
9219 rdfs:comment "A DynManifest MUST have at least one lv2:binary."
9221 rdfs:comment "Dynamic manifest for an LV2 binary." .
9225, juce::lv2::BundleResource
9227"dynmanifest.meta.ttl",
9228R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
9229@prefix dman: <http://lv2plug.in/ns/ext/dynmanifest#> .
9230@prefix doap: <http://usefulinc.com/ns/doap#> .
9231@prefix foaf: <http://xmlns.com/foaf/0.1/> .
9232@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9233@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9235<http://lv2plug.in/ns/ext/dynmanifest>
9237 doap:license <http://opensource.org/licenses/isc> ;
9238 doap:name "LV2 Dynamic Manifest" ;
9239 doap:homepage <http://naspro.atheme.org> ;
9240 doap:created "2009-06-13" ;
9241 doap:shortdesc "Support for dynamic manifest data generation." ;
9242 doap:programming-language "C" ;
9243 doap:developer <http://lv2plug.in/ns/meta#daste> ;
9245 doap:revision "1.6" ;
9246 doap:created "2012-10-14" ;
9247 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
9248 dcs:blame <http://drobilla.net/drobilla#me> ;
9251 rdfs:label "Use consistent label style."
9255 doap:revision "1.4" ;
9256 doap:created "2012-04-17" ;
9257 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
9258 dcs:blame <http://drobilla.net/drobilla#me> ;
9261 rdfs:label "Merge with unified LV2 package."
9265 doap:revision "1.2" ;
9266 doap:created "2011-11-21" ;
9267 doap:file-release <http://lv2plug.in/spec/lv2-dynmanifest-1.2.tar.bz2> ;
9268 dcs:blame <http://drobilla.net/drobilla#me> ;
9271 rdfs:label "Improve documentation."
9275 doap:revision "1.0" ;
9276 doap:created "2010-04-10" ;
9277 doap:file-release <http://lv2plug.in/spec/lv2-dyn-manifest-1.0.tar.gz> ;
9278 dcs:blame <http://drobilla.net/drobilla#me> ;
9281 rdfs:label "Initial release."
9285 lv2:documentation """
9287The LV2 API, on its own, cannot be used to write plugin libraries where data is
9288dynamically generated at runtime, since LV2 requires needed information to be
9289provided in one or more static data (RDF) files. This API addresses this
9290limitation by extending the LV2 API.
9292To detect that a plugin library implements a dynamic manifest generator, the
9293host checks its static manifest for a description like:
9296 <http://example.org/my-dynamic-manifest>
9297 a dman:DynManifest ;
9298 lv2:binary <mydynmanifest.so> .
9300To load the data, the host loads the library (`mydynmanifest.so` in this
9301example) as usual and fetches the dynamic Turtle data from it using this API.
9303The host is allowed to request regeneration of the dynamic manifest multiple
9304times, and the plugin library is expected to provide updated data if/when
9305possible. All data and references provided via this API before the last
9306regeneration of the dynamic manifest is to be considered invalid by the host,
9307including plugin descriptors whose URIs were discovered using this API.
9311To access data using this API, the host must:
9313 1. Call lv2_dyn_manifest_open().
9315 2. Create a `FILE` for functions to write data to (for example with `tmpfile()`).
9317 3. Get a list of exposed subject URIs using lv2_dyn_manifest_get_subjects().
9319 4. Call lv2_dyn_manifest_get_data() for each URI of interest to write the
9320 related data to the file.
9322 5. Call lv2_dyn_manifest_close().
9324 6. Parse the content of the file(s).
9326 7. Remove the file(s).
9328Each call to the above mentioned dynamic manifest functions MUST write a
9329complete, valid Turtle document (including all needed prefix definitions) to
9332Each call to lv2_dyn_manifest_open() causes the (re)generation of the dynamic
9333manifest data, and invalidates all data fetched before the call.
9335In case the plugin library uses this same API to access other dynamic
9336manifests, it MUST implement some mechanism to avoid potentially endless loops
9337(such as A loads B, B loads A, etc.) and, in case such a loop is detected, the
9338operation MUST fail. For this purpose, use of a static boolean flag is
9343All of the functions defined by this specification belong to the Discovery
9350 lv2:documentation """
9352There MUST NOT be any instances of dman:DynManifest in the generated manifest.
9354All relative URIs in the generated data MUST be relative to the base path that
9355would be used to parse a normal LV2 manifest (the bundle path).
"""^^lv2:Markdown .
9366juce::lv2::BundleResource
9369R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9370@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9372<http://lv2plug.in/ns/ext/worker>
9373 a lv2:Specification ;
9374 lv2:minorVersion 1 ;
9375 lv2:microVersion 2 ;
9376 rdfs:seeAlso <worker.ttl> .
9380, juce::lv2::BundleResource
9383R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
9384@prefix doap: <http://usefulinc.com/ns/doap#> .
9385@prefix foaf: <http://xmlns.com/foaf/0.1/> .
9386@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9387@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9388@prefix work: <http://lv2plug.in/ns/ext/worker#> .
9390<http://lv2plug.in/ns/ext/worker>
9392 doap:name "LV2 Worker" ;
9393 doap:shortdesc "Support for doing non-realtime work in plugins." ;
9394 doap:created "2012-03-22" ;
9395 doap:developer <http://drobilla.net/drobilla#me> ;
9397 doap:revision "1.2" ;
9398 doap:created "2020-04-26" ;
9399 doap:file-release <http://lv2plug.in/spec/lv2-1.18.0.tar.bz2> ;
9400 dcs:blame <http://drobilla.net/drobilla#me> ;
9403 rdfs:label "Improve documentation."
9407 doap:revision "1.0" ;
9408 doap:created "2012-04-17" ;
9409 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
9410 dcs:blame <http://drobilla.net/drobilla#me> ;
9413 rdfs:label "Initial release."
9417 lv2:documentation """
9419This extension allows plugins to schedule work that must be performed in
9420another thread. Plugins can use this interface to safely perform work that is
9421not real-time safe, and receive the result in the run context. The details of
9422threading are managed by the host, allowing plugins to be simple and portable
9423while using resources more efficiently.
9425This interface is designed to gracefully support single-threaded synchronous
9426execution, which allows the same code to work with sample accuracy for offline
9427rendering. For example, a sampler plugin may schedule a sample to be loaded
9428from disk in another thread. During live execution, the host will call the
9429plugin's work method from another thread, and deliver the result to the audio
9430thread when it is finished. However, during offline export, the
9431<q>scheduled</q> load would be executed immediately in the same thread. This
9432enables reproducible offline rendering, where any changes affect the output
9433immediately regardless of how long the work takes to execute.
9438 lv2:documentation """
9440The work interface provided by a plugin, LV2_Worker_Interface.
9444 @prefix work: <http://lv2plug.in/ns/ext/worker#> .
9448 lv2:extensionData work:interface .
9453 lv2:documentation """
9455The work scheduling feature provided by a host, LV2_Worker_Schedule.
9457If the host passes this feature to LV2_Descriptor::instantiate, the plugin MAY
9458use it to schedule work in the audio thread, and MUST NOT call it in any other
9459context. Hosts MAY pass this feature to other functions as well, in which case
9460the plugin MAY use it to schedule work in the calling context. The plugin MUST
9461NOT assume any relationship between different schedule features.
9467, juce::lv2::BundleResource
9470R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9471@prefix owl: <http://www.w3.org/2002/07/owl#> .
9472@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
9473@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9474@prefix work: <http://lv2plug.in/ns/ext/worker#> .
9475@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
9477<http://lv2plug.in/ns/ext/worker>
9479 rdfs:label "LV2 Worker" ;
9480 rdfs:comment "Support for doing non-realtime work in plugins." ;
9481 owl:imports <http://lv2plug.in/ns/lv2core> ;
9482 rdfs:seeAlso <worker.h> ,
9486 a lv2:ExtensionData ;
9487 rdfs:label "work interface" ;
9488 rdfs:comment "The work interface provided by a plugin." .
9492 rdfs:label "work schedule" ;
9493 rdfs:comment "The work scheduling feature provided by a host." .
9504juce::lv2::BundleResource
9507R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9508@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9510<http://lv2plug.in/ns/ext/presets>
9511 a lv2:Specification ;
9512 lv2:minorVersion 2 ;
9513 lv2:microVersion 8 ;
9514 rdfs:seeAlso <presets.ttl> .
9518, juce::lv2::BundleResource
9521R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9522@prefix owl: <http://www.w3.org/2002/07/owl#> .
9523@prefix pset: <http://lv2plug.in/ns/ext/presets#> .
9524@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
9525@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9526@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
9528<http://lv2plug.in/ns/ext/presets>
9530 rdfs:label "LV2 Presets" ;
9531 rdfs:comment "Presets for LV2 plugins." ;
9532 rdfs:seeAlso <presets.meta.ttl> .
9539 owl:onProperty rdfs:label ;
9540 owl:someValuesFrom xsd:string ;
9541 rdfs:comment "A Bank MUST have at least one string rdfs:label."
9543 rdfs:comment "A bank of presets." .
9547 rdfs:subClassOf lv2:PluginBase ;
9548 rdfs:label "Preset" ;
9549 rdfs:comment "A preset for an LV2 plugin." ;
9552 owl:onProperty rdfs:label ;
9553 owl:someValuesFrom xsd:string ;
9554 rdfs:comment "A Preset MUST have at least one string rdfs:label."
9559 owl:ObjectProperty ;
9560 rdfs:domain pset:Preset ;
9561 rdfs:range pset:Bank ;
9563 rdfs:comment "The bank this preset belongs to." .
9567 owl:DatatypeProperty ,
9568 owl:FunctionalProperty ;
9569 rdfs:domain lv2:PortBase ;
9570 rdfs:label "value" ;
9571 rdfs:comment "The value of a port in a preset." .
9575 owl:ObjectProperty ;
9576 rdfs:domain lv2:PluginBase ;
9577 rdfs:range pset:Preset ;
9578 rdfs:label "preset" ;
9579 rdfs:comment "The preset currently applied to a plugin instance." .
9583, juce::lv2::BundleResource
9586R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
9587@prefix doap: <http://usefulinc.com/ns/doap#> .
9588@prefix foaf: <http://xmlns.com/foaf/0.1/> .
9589@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9590@prefix pset: <http://lv2plug.in/ns/ext/presets#> .
9591@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9593<http://lv2plug.in/ns/ext/presets>
9595 doap:license <http://opensource.org/licenses/isc> ;
9596 doap:name "LV2 Presets" ;
9597 doap:shortdesc "Presets for LV2 plugins." ;
9598 doap:created "2009-00-00" ;
9599 doap:developer <http://drobilla.net/drobilla#me> ;
9601 doap:revision "2.8" ;
9602 doap:created "2012-10-14" ;
9603 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
9604 dcs:blame <http://drobilla.net/drobilla#me> ;
9607 rdfs:label "Use consistent label style."
9609 rdfs:label "Add preset banks."
9613 doap:revision "2.6" ;
9614 doap:created "2012-04-17" ;
9615 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
9616 dcs:blame <http://drobilla.net/drobilla#me> ;
9619 rdfs:label "Add pset:preset property for describing the preset currently applied to a plugin instance."
9621 rdfs:label "Remove pset:appliesTo property, use lv2:appliesTo instead."
9623 rdfs:label "Merge with unified LV2 package."
9627 doap:revision "2.2" ;
9628 doap:created "2011-11-21" ;
9629 doap:file-release <http://lv2plug.in/spec/lv2-presets-2.2.tar.bz2> ;
9630 dcs:blame <http://drobilla.net/drobilla#me> ;
9633 rdfs:label "Update packaging."
9635 rdfs:label "Improve documentation."
9639 doap:revision "2.0" ;
9640 doap:created "2010-10-04" ;
9641 doap:file-release <http://lv2plug.in/spec/lv2-presets-2.0.tar.gz> ;
9642 dcs:blame <http://drobilla.net/drobilla#me> ;
9645 rdfs:label "Initial release."
9649 lv2:documentation """
9651This is a vocabulary for LV2 plugin presets, that is, named sets of control
9652values and possibly other state. The structure of a pset:Preset is
9653deliberately identical to that of an lv2:Plugin, and can be thought of as a
9654plugin template or overlay.
9656Presets may be defined in any bundle, including the plugin's bundle, separate
9657third party preset bundles, or user preset bundles saved by hosts. Since
9658preset data tends to be large, it is recommended that plugins describe presets
9659in a separate file(s) to avoid slowing down hosts. The `manifest.ttl` of a
9660bundle containing presets should list them like so:
9665 lv2:appliesTo eg:myplugin ;
9666 rdfs:seeAlso <mypreset.ttl> .
9671 lv2:documentation """
9673The structure of a Preset deliberately mirrors that of a plugin, so existing
9674predicates can be used to describe any data associated with the preset. For
9678 @prefix eg: <http://example.org/> .
9682 rdfs:label "One louder" ;
9683 lv2:appliesTo eg:myplugin ;
9685 lv2:symbol "volume1" ;
9688 lv2:symbol "volume2" ;
9692A Preset SHOULD have at least one lv2:appliesTo property. Each Port on a
9693Preset MUST have at least a lv2:symbol property and a pset:value property.
9695Hosts SHOULD save user presets to a bundle in the user-local LV2 directory (for
9696example `~/.lv2`) with a name like `<Plugin_Name>_<Preset_Name>.preset.lv2`
9697(for example `LV2_Amp_At_Eleven.preset.lv2`), where names are transformed to be
9698valid LV2 symbols for maximum compatibility.
9703 lv2:documentation """
9705This property is used in a similar way to lv2:default.
9710 lv2:documentation """
9712Specifies the preset currently applied to a plugin instance. This property may
9713be useful for saving state, or notifying a plugin instance at run-time about a
9727juce::lv2::BundleResource
9730R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9731@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9733<http://lv2plug.in/ns/ext/event>
9734 a lv2:Specification ;
9735 lv2:minorVersion 1 ;
9736 lv2:microVersion 12 ;
9737 rdfs:seeAlso <event.ttl> .
9741, juce::lv2::BundleResource
9744R
"lv2ttl(@prefix ev: <http://lv2plug.in/ns/ext/event#> .
9745@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9746@prefix owl: <http://www.w3.org/2002/07/owl#> .
9747@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
9748@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9750<http://lv2plug.in/ns/ext/event>
9752 owl:deprecated true ;
9753 rdfs:label "LV2 Event" ;
9754 rdfs:comment "A port-based real-time generic event interface." ;
9755 rdfs:seeAlso <event.h> ,
9761 rdfs:label "Event Port" ;
9762 rdfs:subClassOf lv2:Port ;
9763 rdfs:comment "An LV2 event port." .
9767 rdfs:label "Event" ;
9768 rdfs:comment "A single generic time-stamped event." .
9772 rdfs:label "Event Time Stamp" ;
9773 rdfs:comment "The time stamp of an Event." .
9777 rdfs:subClassOf ev:TimeStamp ;
9778 rdfs:label "Audio Frame Time Stamp" ;
9779 rdfs:comment "The default time stamp unit for an event." .
9782 a lv2:PortProperty ;
9783 rdfs:label "generic event port" ;
9784 rdfs:comment "Port works with generic events." .
9788 owl:ObjectProperty ;
9789 rdfs:domain ev:EventPort ;
9790 rdfs:range rdfs:Class ;
9791 rdfs:label "supports event type" ;
9792 rdfs:comment "An event type supported by this port." .
9796 owl:ObjectProperty ;
9797 rdfs:domain ev:EventPort ,
9799 rdfs:range lv2:Port ;
9800 rdfs:label "inherits event type" ;
9801 rdfs:comment "Output port inherits event types from an input port." .
9805 owl:ObjectProperty ;
9806 rdfs:domain ev:EventPort ,
9808 rdfs:range rdfs:Class ;
9809 rdfs:label "supports time stamp type" ;
9810 rdfs:comment "A time stamp type suported by this input port." .
9812ev:generatesTimeStamp
9814 owl:ObjectProperty ;
9815 rdfs:domain ev:EventPort ,
9817 rdfs:range rdfs:Class ;
9818 rdfs:label "generates time stamp type" ;
9819 rdfs:comment "A time stamp type generated by this input port." .
9823 owl:ObjectProperty ;
9824 rdfs:domain ev:EventPort ,
9826 rdfs:range lv2:Port ;
9827 rdfs:label "inherits time stamp type" ;
9828 rdfs:comment "Output port inherits time stamp types from an input port." .
9832, juce::lv2::BundleResource
9835R
"lv2ttl(@prefix dcs: <http://ontologi.es/doap-changeset#> .
9836@prefix doap: <http://usefulinc.com/ns/doap#> .
9837@prefix ev: <http://lv2plug.in/ns/ext/event#> .
9838@prefix foaf: <http://xmlns.com/foaf/0.1/> .
9839@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
9840@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9842<http://lv2plug.in/ns/ext/event>
9844 doap:license <http://opensource.org/licenses/isc> ;
9845 doap:name "LV2 Event" ;
9846 doap:shortdesc "A port-based real-time generic event interface." ;
9847 doap:created "2008-00-00" ;
9848 doap:developer <http://drobilla.net/drobilla#me> ,
9849 <http://lv2plug.in/ns/meta#larsl> ;
9851 doap:revision "1.12" ;
9852 doap:created "2014-08-08" ;
9853 doap:file-release <http://lv2plug.in/spec/lv2-1.10.0.tar.bz2> ;
9854 dcs:blame <http://drobilla.net/drobilla#me> ;
9857 rdfs:label "Minor documentation improvements."
9861 doap:revision "1.10" ;
9862 doap:created "2013-01-13" ;
9863 doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ;
9864 dcs:blame <http://drobilla.net/drobilla#me> ;
9867 rdfs:label "Fix incorrect return type in lv2_event_get()."
9871 doap:revision "1.8" ;
9872 doap:created "2012-10-14" ;
9873 doap:file-release <http://lv2plug.in/spec/lv2-1.2.0.tar.bz2> ;
9874 dcs:blame <http://drobilla.net/drobilla#me> ;
9877 rdfs:label "Make event iterator gracefully handle optional ports."
9879 rdfs:label "Remove asserts from event-helper.h."
9881 rdfs:label "Use more precise domain and range for EventPort properties."
9883 rdfs:label "Use consistent label style."
9887 doap:revision "1.6" ;
9888 doap:created "2012-04-17" ;
9889 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
9890 dcs:blame <http://drobilla.net/drobilla#me> ;
9893 rdfs:label "Fix bug in lv2_event_reserve()."
9895 rdfs:label "Fix incorrect ranges of some properties."
9897 rdfs:label "Merge with unified LV2 package."
9901 doap:revision "1.4" ;
9902 doap:created "2011-11-21" ;
9903 doap:file-release <http://lv2plug.in/spec/lv2-event-1.4.tar.bz2> ;
9904 dcs:blame <http://drobilla.net/drobilla#me> ;
9907 rdfs:label "Update packaging."
9911 doap:revision "1.2" ;
9912 doap:created "2011-05-26" ;
9913 doap:file-release <http://lv2plug.in/spec/lv2-event-1.2.tar.bz2> ;
9914 dcs:blame <http://drobilla.net/drobilla#me> ;
9917 rdfs:label "Add build system (for installation)."
9919 rdfs:label "Convert documentation to HTML and use lv2:documentation."
9921 rdfs:label "Use lv2:Specification to be discovered as an extension."
9925 doap:revision "1.0" ;
9926 doap:created "2010-11-24" ;
9927 doap:file-release <http://lv2plug.in/spec/lv2-event-1.0.tar.gz> ;
9928 dcs:blame <http://drobilla.net/drobilla#me> ;
9931 rdfs:label "Initial release."
9935 lv2:documentation """
9937<span class="warning">This extension is deprecated.</span> New implementations
9938should use <a href="atom.html">LV2 Atom</a> instead.
9940This extension defines a generic time-stamped event port type, which can be
9941used to create plugins that read and write real-time events, such as MIDI,
9942OSC, or any other type of event payload. The type(s) of event supported by
9943a port is defined in the data file for a plugin, for example:
9946 <http://example.org/some-plugin>
9948 a ev:EventPort, lv2:InputPort ;
9950 ev:supportsEvent <http://lv2plug.in/ns/ext/midi#MidiEvent> ;
9951 lv2:symbol "midi_input" ;
9952 lv2:name "MIDI input" ;
9958 lv2:documentation """
9960Ports of this type will be connected to a struct of type LV2_Event_Buffer,
9961defined in event.h. These ports contain a sequence of generic events (possibly
9962several types mixed in a single stream), the specific types of which are
9963defined by some URI in another LV2 extension.
9969 rdfs:label "Event" ;
9970 lv2:documentation """
9972An ev:EventPort contains an LV2_Event_Buffer which contains a sequence of these
9973events. The binary format of LV2 events is defined by the LV2_Event struct in
9976Specific event types (such as MIDI or OSC) are defined by extensions, and
9977should be rdfs:subClassOf this class.
9982 lv2:documentation """
9984This defines the meaning of the 'frames' and 'subframes' fields of an LV2_Event
9985(both unsigned 32-bit integers).
"""^^lv2:Markdown .
9988 lv2:documentation """
9990The default time stamp unit for an LV2 event: the frames field represents audio
9991frames (in the sample rate passed to intantiate), and the subframes field is
99921/UINT32_MAX of a frame.
9997 lv2:documentation """
9999Indicates that this port does something meaningful for any event type. This is
10000useful for things like event mixers, delays, serialisers, and so on.
10002If this property is set, hosts should consider the port suitable for any type
10003of event. Otherwise, hosts should consider the port 'appropriate' only for the
10004specific event types listed with :supportsEvent. Note that plugins must
10005gracefully handle unknown event types whether or not this property is present.
10010 lv2:documentation """
10012Indicates that this port supports or "understands" a certain event type.
10014For input ports, this means the plugin understands and does something useful
10015with events of this type. For output ports, this means the plugin may generate
10016events of this type. If the plugin never actually generates events of this
10017type, but might pass them through from an input, this property should not be
10018set (use ev:inheritsEvent for that).
10020Plugins with event input ports must always gracefully handle any type of event,
10021even if it does not 'support' it. This property should always be set for event
10022types the plugin understands/generates so hosts can discover plugins
10023appropriate for a given scenario (for example, plugins with a MIDI input).
10024Hosts are not expected to consider event ports suitable for some type of event
10025if the relevant :supportsEvent property is not set, unless the ev:generic
10026property for that port is also set.
10032 lv2:documentation """
10034Indicates that this output port might pass through events that arrived at some
10035other input port (or generate an event of the same type as events arriving at
10036that input). The host must always check the stamp type of all outputs when
10037connecting an input, but this property should be set whenever it applies.
10042ev:supportsTimeStamp
10043 lv2:documentation """
10045Indicates that this port supports or "understands" a certain time stamp type.
10046Meaningful only for input ports, the host must never connect a port to an event
10047buffer with a time stamp type that isn't supported by the port.
10051ev:generatesTimeStamp
10052 lv2:documentation """
10054Indicates that this port may output a certain time stamp type, regardless of
10055the time stamp type of any input ports.
10057If the port outputs stamps based on what type inputs are connected to, this
10058property should not be set (use the ev:inheritsTimeStamp property for that).
10059Hosts MUST check the time_stamp value of any output port buffers after a call
10060to connect_port on ANY event input port on the plugin.
10062If the plugin changes the stamp_type field of an output event buffer during a
10063call to run(), the plugin must call the stamp_type_changed function provided by
10064the host in the LV2_Event_Feature struct, if it is non-NULL.
10068ev:inheritsTimeStamp
10069 lv2:documentation """
10071Indicates that this port follows the time stamp type of an input port.
10073This property is not necessary, but it should be set for outputs that base
10074their output type on an input port so the host can make more sense of the
10075pl)lv2ttl" R"lv2ttl(ugin and provide a more sensible interface.
10088juce::lv2::BundleResource
10091R
"lv2ttl(@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
10092@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
10094<http://lv2plug.in/ns/ext/data-access>
10095 a lv2:Specification ;
10096 lv2:minorVersion 1 ;
10097 lv2:microVersion 6 ;
10098 rdfs:seeAlso <data-access.ttl> .
10102, juce::lv2::BundleResource
10105R
"lv2ttl(@prefix da: <http://lv2plug.in/ns/ext/data-access#> .
10106@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
10107@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
10109<http://lv2plug.in/ns/ext/data-access>
10111 rdfs:label "data access" ;
10112 rdfs:comment "A feature that provides access to plugin extension data." ;
10113 rdfs:seeAlso <data-access.h> ,
10114 <data-access.meta.ttl> .
10118, juce::lv2::BundleResource
10120"data-access.meta.ttl",
10121R
"lv2ttl(@prefix da: <http://lv2plug.in/ns/ext/data-access#> .
10122@prefix dcs: <http://ontologi.es/doap-changeset#> .
10123@prefix doap: <http://usefulinc.com/ns/doap#> .
10124@prefix foaf: <http://xmlns.com/foaf/0.1/> .
10125@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
10126@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
10128<http://lv2plug.in/ns/ext/data-access>
10130 rdfs:seeAlso <data-access.h> ;
10131 doap:license <http://opensource.org/licenses/isc> ;
10132 doap:name "LV2 Data Access" ;
10133 doap:shortdesc "Provides access to plugin extension data." ;
10134 doap:created "2008-00-00" ;
10135 doap:developer <http://drobilla.net/drobilla#me> ;
10137 doap:revision "1.6" ;
10138 doap:created "2012-04-17" ;
10139 doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ;
10140 dcs:blame <http://drobilla.net/drobilla#me> ;
10143 rdfs:label "Merge with unified LV2 package."
10147 doap:revision "1.4" ;
10148 doap:created "2011-11-21" ;
10149 doap:file-release <http://lv2plug.in/spec/lv2-data-access-1.4.tar.bz2> ;
10150 dcs:blame <http://drobilla.net/drobilla#me> ;
10153 rdfs:label "Update packaging."
10155 rdfs:label "Improve documentation."
10159 doap:revision "1.2" ;
10160 doap:created "2011-05-26" ;
10161 doap:file-release <http://lv2plug.in/spec/lv2-data-access-1.2.tar.bz2> ;
10162 dcs:blame <http://drobilla.net/drobilla#me> ;
10165 rdfs:label "Add build system for installation."
10167 rdfs:label "Switch to ISC license."
10171 doap:revision "1.0" ;
10172 doap:created "2010-10-04" ;
10173 doap:file-release <http://lv2plug.in/spec/lv2-data-access-1.0.tar.gz> ;
10174 dcs:blame <http://drobilla.net/drobilla#me> ;
10177 rdfs:label "Initial release."
10181 lv2:documentation """
10183This extension defines a feature, LV2_Extension_Data_Feature, which provides
10184access to LV2_Descriptor::extension_data() for plugin UIs or other potentially
10185remote users of a plugin.
10187Note that the use of this extension by UIs violates the important principle of
10188UI/plugin separation, and is potentially a source of many problems.
10189Accordingly, **use of this extension is highly discouraged**, and plugins
10190should not expect hosts to support it, since it is often impossible to do so.
10192To support this feature the host must pass an LV2_Feature struct to
10193LV2_Descriptor::extension_data() with URI LV2_DATA_ACCESS_URI and data pointed
10194to an instance of LV2_Extension_Data_Feature.
Definition juce_LV2Resources.h:39
Definition carla_juce.cpp:31
Definition juce_LV2Resources.h:48
static std::vector< Bundle > getAllBundles()
Definition juce_LV2Resources.h:58
const char * name
Definition juce_LV2Resources.h:49
std::vector< BundleResource > contents
Definition juce_LV2Resources.h:50
Definition juce_LV2Resources.h:42
const char * contents
Definition juce_LV2Resources.h:44
const char * name
Definition juce_LV2Resources.h:43