BBT_Time: provide conversion to/from integer format

This is not guaranteed to be lossless, but with 44 bits for bars,
256 beats per bar and up to 4095 ticks per beat, it should be fine.
This commit is contained in:
Paul Davis
2023-02-13 16:46:54 -07:00
parent 2c7bfa9ead
commit 6cde958480
2 changed files with 21 additions and 0 deletions

View File

@@ -23,6 +23,24 @@
using namespace Temporal;
int64_t
BBT_Time::as_integer () const
{
/* up to 256 beats in a bar, 4095 ticks in a beat,
and whatever is left for bars (a lot!)
*/
return (((int64_t) bars)<<20)|(beats<<12)|ticks;
}
BBT_Time
BBT_Time::from_integer (int64_t v)
{
int32_t B = v>>20;
int32_t b = (v>>12) & 0xff;
int32_t t= v & 0xfff;
return BBT_Time (B, b, t);
}
BBT_Time
BBT_Time::round_up_to_bar() const
{