[LAD] 64 bit tempo-based time stamp

Harry van Haaren harryhaaren at gmail.com
Tue Feb 7 00:40:14 UTC 2012


Luppp's internals use a single(!) floating point, which mixes a bar number,
and a "percent" of that bar.
Found it quite nice to work with, to get the bar you just:
int bar = (int) floatBeatPercent;
while to get the percent you:
float percent = floatBeatPercent - ((int)floatBeatPercent);

In C you mention "bar" as int, and "beat" as float, I presume you want to
use the decimal part of the float to show "progress" trough that beat?
Thinking about very slow BPM's.. that could become important.

-Harry

On Tue, Feb 7, 2012 at 12:28 AM, David Robillard <d at drobilla.net> wrote:

> Hi all, seeking opinions:
>
> I have to choose a way to represent beat-based tempo time in 64 bits.
> Uses are many, but the main one is event time stamps for plugins.
>
> Requirements:
>  * No odd data sizes (for performance / programmer ease)
>  * High precision (ideally close to sample accurate for most tempos)
>  * Fits in the same space as two uint32_t's
>
> Questions:
>  * Is "bar" needed?
>  * Use floating point?  Rounding errors an issue?
>
> Options:
>
> /* A (moderate range, ultra precise) */
> struct {
>    uint16_t bar;
>    uint16_t beat;
>    uint32_t tick;
> };
>
> /* B (high range, moderate precision) */
> struct {
>    uint32_t bar;
>    uint16_t beat;
>    uint16_t tick;
> };
>
> /* C (high range, good precision?) */
> struct {
>    uint32_t bar
>    float    beat;
> };
>
> /* D (high range/precision, but no bar) */
> double beat;
>
> I havn't run the math on precision yet, but I am leaning towards C.  I
> actually hadn't considered mixing int and float before writing this
> email, but it seems the best trade-off, and working with float is
> certainly more pleasant than fixed point.
>
> Thoughts?
>
> -dr
>
>
> _______________________________________________
> Linux-audio-dev mailing list
> Linux-audio-dev at lists.linuxaudio.org
> http://lists.linuxaudio.org/listinfo/linux-audio-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxaudio.org/pipermail/linux-audio-dev/attachments/20120207/baee21b2/attachment.html>


More information about the Linux-audio-dev mailing list