On Wednesday 18 December 2002 03.08, Tim Hockin wrote:
[...]
Would two
floats (32 bit) do?
Just to play devils advocate:
METER: uint32_t
meter & 0xffc00000 = beats-per-measure whole (0-1024)
meter & 0x003ff000 = beats-per-measure decimal (1/1000 increments)
meter & 0x00000fff = beat-note denominator (0-4096)
Obviously any of those field widths can be adjusted. I just wanted
to point out that we CAN transport that data in a single 32 bit
field.
Yeah, but that's not much point in itself. We have at least 12 bytes
if we use a non-standard event, so this isn't a major problem.
Using a special format inside an integer would be a non-standard
control type anyway, since you cannot assume that the value is a
valid float. Unless it's explicitly encoded that way... Don't want to
go there! :-)
Especially since the 'float' values we're
talking about
tend towards simple fractions.
Yes, that's a good point. As soon as you say N+1/3 for beats per
measure, you get a rounding error...
So, how about using the magical 1920 unit for both fields? Then you
can express all sorts of weird values and still get exact integer
values. And it fits nicely with the musical time unit as well. :-)
Now is someone going to tell me they have PI beats per
measure?
Probably! ;-)
//David Olofson - Programmer, Composer, Open Source Advocate
.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`--------------------------->
http://olofson.net/audiality -'
---
http://olofson.net ---
http://www.reologica.se ---