aboutsummaryrefslogtreecommitdiffstats
path: root/lv2/ns/ext/time
diff options
context:
space:
mode:
Diffstat (limited to 'lv2/ns/ext/time')
l---------lv2/ns/ext/time/ext.pc.in1
-rw-r--r--lv2/ns/ext/time/manifest.ttl9
-rw-r--r--lv2/ns/ext/time/time.h131
-rw-r--r--lv2/ns/ext/time/time.ttl57
l---------lv2/ns/ext/time/waf1
l---------lv2/ns/ext/time/wscript1
6 files changed, 200 insertions, 0 deletions
diff --git a/lv2/ns/ext/time/ext.pc.in b/lv2/ns/ext/time/ext.pc.in
new file mode 120000
index 0000000..82b50df
--- /dev/null
+++ b/lv2/ns/ext/time/ext.pc.in
@@ -0,0 +1 @@
+../../../../ext.pc.in \ No newline at end of file
diff --git a/lv2/ns/ext/time/manifest.ttl b/lv2/ns/ext/time/manifest.ttl
new file mode 100644
index 0000000..2657388
--- /dev/null
+++ b/lv2/ns/ext/time/manifest.ttl
@@ -0,0 +1,9 @@
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+<http://lv2plug.in/ns/ext/time>
+ a lv2:Specification ;
+ lv2:minorVersion 0 ;
+ lv2:microVersion 1 ;
+ rdfs:seeAlso <time.ttl> .
+
diff --git a/lv2/ns/ext/time/time.h b/lv2/ns/ext/time/time.h
new file mode 100644
index 0000000..f3b2e77
--- /dev/null
+++ b/lv2/ns/ext/time/time.h
@@ -0,0 +1,131 @@
+/*
+ Copyright 2011 David Robillard <http://drobilla.net>
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+/**
+ @file time.h C header for the LV2 Time extension
+ <http://lv2plug.in/ns/ext/time>.
+*/
+
+#ifndef LV2_TIME_H
+#define LV2_TIME_H
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ Time states.
+*/
+typedef enum {
+ LV2_TIME_STOPPED = 0, /**< Transport halted */
+ LV2_TIME_ROLLING = 1, /**< Transport playing */
+} LV2_Time_State;
+
+/**
+ Bits indicating properties of an LV2_Time_Position.
+*/
+typedef enum {
+ LV2_TIME_HAS_BBT = 1 /**< Has Bar, Beat, Tick */
+} LV2_Time_Flags;
+
+/**
+ Description of a position and/or tempo.
+
+ This struct is used as the payload of an event to notify the plugin about
+ time state, such as position and tempo.
+*/
+typedef struct {
+ /**
+ @{
+ @name Mandatory Fields
+ */
+
+ /**
+ Frame number on the timeline.
+ */
+ uint64_t frame;
+
+ /**
+ Bit field of LV2_Time_Flags values indicating which fields
+ of this struct are valid.
+ */
+ uint32_t flags;
+
+ /**
+ Transport state.
+ */
+ LV2_Time_State state;
+
+ /**
+ @}
+ @{
+ @name LV2_TIME_BBT fields
+ These fields are valid iff the LV2_TIME_BBT bit is set in @ref flags.
+ */
+
+ /**
+ Current bar.
+ The first bar is number 0 (but should be represented in a UI as bar 1).
+ */
+ int64_t bar;
+
+ /**
+ Beat within the current bar.
+ The first beat is number 0.
+ Always <= @ref beats_per_bar.
+ */
+ int32_t beat;
+
+ /**
+ Tick within the current beat.
+ The first tick is number 0.
+ Always <= @ref ticks_per_beat.
+ */
+ int32_t tick;
+
+ /**
+ Number of beats per bar (top of time signature).
+ */
+ int32_t beats_per_bar;
+
+ /**
+ Type of note that counts as one beat (bottom of time signature).
+ */
+ int32_t beat_type;
+
+ /**
+ Number of ticks per beat.
+ Typically this is a large integer with many even divisors.
+ */
+ int32_t ticks_per_beat;
+
+ /**
+ Current tempo, in beats per minute.
+ */
+ double beats_per_minute;
+
+ /**
+ @}
+ */
+} LV2_Time_Position;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* LV2_TIME_H */
diff --git a/lv2/ns/ext/time/time.ttl b/lv2/ns/ext/time/time.ttl
new file mode 100644
index 0000000..40bfdbb
--- /dev/null
+++ b/lv2/ns/ext/time/time.ttl
@@ -0,0 +1,57 @@
+# LV2 Time Extension
+# Copyright 2011 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
+# copyright notice and this permission notice appear in all copies.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+@prefix time: <http://lv2plug.in/ns/ext/time#> .
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+<http://lv2plug.in/ns/ext/time>
+ a lv2:Specification ;
+ doap:name "LV2 Time" ;
+ doap:shortdesc "A data type for transport speed and position." ;
+ doap:maintainer [
+ a foaf:Person ;
+ foaf:name "David Robillard" ;
+ foaf:homepage <http://drobilla.net/> ;
+ 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>
+""" .
+
+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>
+""" .
diff --git a/lv2/ns/ext/time/waf b/lv2/ns/ext/time/waf
new file mode 120000
index 0000000..b955110
--- /dev/null
+++ b/lv2/ns/ext/time/waf
@@ -0,0 +1 @@
+../../../../waf \ No newline at end of file
diff --git a/lv2/ns/ext/time/wscript b/lv2/ns/ext/time/wscript
new file mode 120000
index 0000000..ec20a77
--- /dev/null
+++ b/lv2/ns/ext/time/wscript
@@ -0,0 +1 @@
+../../../../ext.wscript \ No newline at end of file