aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/lv2plug.in/ns/ext/time/time.ttl
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-02-28 10:13:23 +0000
committerDavid Robillard <d@drobilla.net>2012-02-28 10:13:23 +0000
commit1b909186f4946d07abcd363b5d5231f9e241100d (patch)
tree5ad760b8ebd61afb09e26c81ae6269430f44b02c /lv2/lv2plug.in/ns/ext/time/time.ttl
parent9881756c176aacffd93e6ca4508eee07f222235b (diff)
downloadlv2-1b909186f4946d07abcd363b5d5231f9e241100d.tar.xz
Redefine time extension generically.
Diffstat (limited to 'lv2/lv2plug.in/ns/ext/time/time.ttl')
-rw-r--r--lv2/lv2plug.in/ns/ext/time/time.ttl123
1 files changed, 103 insertions, 20 deletions
diff --git a/lv2/lv2plug.in/ns/ext/time/time.ttl b/lv2/lv2plug.in/ns/ext/time/time.ttl
index 40bfdbb..41611ac 100644
--- a/lv2/lv2plug.in/ns/ext/time/time.ttl
+++ b/lv2/lv2plug.in/ns/ext/time/time.ttl
@@ -1,5 +1,5 @@
# LV2 Time Extension
-# Copyright 2011 David Robillard <d@drobilla.net>
+# Copyright 2011-2012 David Robillard <d@drobilla.net>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -24,34 +24,117 @@
<http://lv2plug.in/ns/ext/time>
a lv2:Specification ;
doap:name "LV2 Time" ;
- doap:shortdesc "A data type for transport speed and position." ;
+ doap:shortdesc "Properties for describing time." ;
doap:maintainer [
a foaf:Person ;
foaf:name "David Robillard" ;
foaf:homepage <http://drobilla.net/> ;
- rdfs:seeAlso <http://drobilla.net/drobilla.rdf>
+ rdfs:seeAlso <http://drobilla.net/drobilla.rdf> ;
] ;
lv2:documentation """
-<p>This extension defines a structure type, LV2_Time_Position, which
-describes a tempo and position along a timeline. This can be used as
-an event payload by the host to notify plugins about the current
-tempo and position.</p>
+<p>This is a vocabulary for precisely describing a position in time and the
+passage of time itself, in both real and musical terms.</p>
+
+<p>In addition to real time (e.g. seconds), two units of time are used:
+<q>frames</q> and <q>beats</q>. A frame is a numbered quantum of time. Frame
+time is related to real-time by the <q>frame rate</q> or <q>sample rate</q>, <a
+href="#framesPerSecond">time:framesPerSecond</a>. A beat is a single pulse of
+musical time. Beat time is related to real-time by the <q>tempo</q>, <a
+href="#beatsPerMinute">time:beatsPerMinute</a>.</p>
+
+<p>Musical time additionally has a <q>meter</q> which describes passage of time
+in terms of musical <q>bars</q>. A bar is a higher level grouping of beats.
+The meter describes how many beats are in one bar.</p>
""" .
+time:Time
+ a rdfs:Class ;
+ rdfs:subClassOf time:Position ;
+ rdfs:label "A point in time" ;
+ rdfs:comment "A point in time in some unit/dimension." .
+
time:Position
a rdfs:Class ;
- rdfs:label "LV2 time position" ;
lv2:documentation """
-<p>Type for an LV2_Time_Position struct. This can be mapped to an integer and
-used as the type field of an event to indicate that the event payload is an
-LV2_Time_Positon struct. Plugins SHOULD indicate that a port supports time
-information using the ev:supports predicate, e.g.:</p>
-<pre class="turtle-code">
-&lt;plugin&gt; lv2:port [
- a lv2:InputPort , ev:EventPort ;
- lv2:name "control" ;
- lv2:index 0 ;
- ev:supportsEvent time:Position
-] .
-</pre>
+<p>A point in time and/or the speed at which time is passing. A position is
+both a point and a speed, which precisely defines a time within a timeline.</p>
+""" .
+
+time:Rate
+ a rdfs:Class ;
+ rdfs:subClassOf time:Position ;
+ rdfs:label "Rate" ;
+ lv2:documentation """
+<p>The rate of passage of time in terms of one unit with respect to
+another.</p> """ .
+
+time:position
+ a rdf:Property ;
+ rdfs:range time:Position ;
+ rdfs:label "Position in time" .
+
+time:barBeat
+ a rdf:Property ;
+ rdfs:domain time:Time ;
+ rdfs:range xsd:float ;
+ rdfs:label "Beat within this bar" ;
+ rdfs:comment "The beat number within the bar, from 0 to beatsPerBar." .
+
+time:bar
+ a rdf:Property ;
+ rdfs:domain time:Time ;
+ rdfs:range xsd:long ;
+ rdfs:label "Global position in bars" .
+
+time:beat
+ a rdf:Property ;
+ rdfs:domain time:Time ;
+ rdfs:range xsd:double ;
+ rdfs:label "Global position in beats" .
+
+time:beatUnit
+ a rdf:Property ;
+ rdfs:domain time:Rate ;
+ rdfs:range xsd:double ;
+ lv2:documentation """
+<p>Beat unit, the note value that counts as one beat. This is the bottom number
+in a time signature: 2 for half note, 4 for quarter note, and so on.</p>
+""" .
+
+time:beatsPerBar
+ a rdf:Property ;
+ rdfs:domain time:Rate ;
+ rdfs:range xsd:float ;
+ rdfs:label "Beats per bar" .
+
+time:beatsPerMinute
+ a rdf:Property ;
+ rdfs:domain time:Rate ;
+ rdfs:range xsd:float ;
+ rdfs:label "Beats per minute" ;
+ rdfs:comment "Tempo in beats per minute." .
+
+time:frame
+ a rdf:Property ;
+ rdfs:domain time:Time ;
+ rdfs:range xsd:long ;
+ rdfs:label "Global position in frames" .
+
+time:framesPerSecond
+ a rdf:Property ;
+ rdfs:domain time:Rate ;
+ rdfs:range xsd:float ;
+ rdfs:label "Frames per second" ;
+ rdfs:comment "Frame rate in frames per second." .
+
+time:speed
+ a rdf:Property ;
+ rdfs:domain time:Rate ;
+ rdfs:range xsd:float ;
+ rdfs:label "Speed" ;
+ lv2:documentation """
+<p>The rate of the progress of time as a fraction of normal speed. For
+example, a rate of 0.0 is stopped, 1.0 is rolling at normal speed, 0.5 is
+rolling at half speed, -1.0 is reverse, and so on.
+</p>
""" .