From eb43c8896480114b224755e824fae2e2f7485256 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 21 Nov 2011 01:36:00 +0000 Subject: Move ns to lv2/ns so repository top level can be used as an include dir directly. --- lv2/ns/ext/time/ext.pc.in | 1 + lv2/ns/ext/time/manifest.ttl | 9 +++ lv2/ns/ext/time/time.h | 131 +++++++++++++++++++++++++++++++++++++++++++ lv2/ns/ext/time/time.ttl | 57 +++++++++++++++++++ lv2/ns/ext/time/waf | 1 + lv2/ns/ext/time/wscript | 1 + 6 files changed, 200 insertions(+) create mode 120000 lv2/ns/ext/time/ext.pc.in create mode 100644 lv2/ns/ext/time/manifest.ttl create mode 100644 lv2/ns/ext/time/time.h create mode 100644 lv2/ns/ext/time/time.ttl create mode 120000 lv2/ns/ext/time/waf create mode 120000 lv2/ns/ext/time/wscript (limited to 'lv2/ns/ext/time') 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: . +@prefix rdfs: . + + + a lv2:Specification ; + lv2:minorVersion 0 ; + lv2:microVersion 1 ; + rdfs:seeAlso . + 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 + + 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 + . +*/ + +#ifndef LV2_TIME_H +#define LV2_TIME_H + +#include + +#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 +# +# 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: . +@prefix doap: . +@prefix foaf: . +@prefix lv2: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . + + + 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 ; + rdfs:seeAlso + ] ; + lv2:documentation """ +

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.

+""" . + +time:Position + a rdfs:Class ; + rdfs:label "LV2 time position" ; + lv2:documentation """ +

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.:

+
+<plugin> lv2:port [
+    a lv2:InputPort , ev:EventPort ;
+    lv2:name "control" ;
+    lv2:index 0 ;
+    ev:supportsEvent time:Position
+] .
+
+""" . 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 -- cgit v1.2.1