partially revert some of the recent work on tempo to reflect new understanding of the problem. behaviour is now believed to be totally correct but awaiting a bit more testing

git-svn-id: svn://localhost/ardour2/branches/3.0@11171 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2012-01-06 16:39:40 +00:00
parent bdb15f9422
commit 355183f1ab
17 changed files with 424 additions and 195 deletions

View file

@ -23,20 +23,15 @@
using namespace Timecode;
/* This number doesn't describe the smallest division of a "beat" (which is
only defined contextually anyway), but rather the smallest division of the the
divisions of a bar. If using a meter of 4/8, there are 4 divisions per bar, and
we can divide each one into ticks_per_bar_division pieces; in a separate meter
(section) of 3/8, there are 3 divisions per bar, each of which can be divided
into ticks_per_bar_division pieces.
/* This defines the smallest division of a "beat".
The number is intended to have as many integer factors as possible so that
1/Nth divisions are integer numbers of ticks.
1920 is the largest legal value that be used inside an SMF file, and has many factors.
1920 has many factors, though going up to 3840 gets a couple more.
*/
const double BBT_Time::ticks_per_bar_division = 1920.0;
const double BBT_Time::ticks_per_beat = 1920.0;
BBT_Time::BBT_Time (double dbeats)
{
@ -49,5 +44,5 @@ BBT_Time::BBT_Time (double dbeats)
bars = 0;
beats = rint (floor (dbeats));
ticks = rint (floor (BBT_Time::ticks_per_bar_division * fmod (dbeats, 1.0)));
ticks = rint (floor (BBT_Time::ticks_per_beat * fmod (dbeats, 1.0)));
}