fundamentally alter how we compute frames_per_beat(). this follows much discussion...
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 12 Dec 2011 14:00:44 +0000 (14:00 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 12 Dec 2011 14:00:44 +0000 (14:00 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@10988 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/tempo.h
libs/ardour/tempo.cc

index 05d65602cf841fb71d2e20a163b14862f3210820..631b709a28d3a9317b3abe2cea3aa204a99827a0 100644 (file)
@@ -61,6 +61,7 @@ class Meter {
        double note_divisor() const { return _note_type; }
 
        double frames_per_bar (const Tempo&, framecnt_t sr) const;
+       double frames_per_division (const Tempo&, framecnt_t sr) const;
 
   protected:
        /** The number of beats in a bar.  This is a real value because
index dc811aff83bc1b8e170ed50a37f9dfbb3d22c853..3231e563271571f9cdc313a59797b38c524e06dd 100644 (file)
@@ -47,7 +47,7 @@ Tempo    TempoMap::_default_tempo (120.0);
 
 double Tempo::frames_per_beat (framecnt_t sr, const Meter& meter) const
 {
-       return  ((60.0 * sr) / (_beats_per_minute * meter.note_divisor()/_note_type));
+       return  (60.0 * sr) / _beats_per_minute;
 }
 
 /***********************************************************************/
@@ -58,6 +58,12 @@ Meter::frames_per_bar (const Tempo& tempo, framecnt_t sr) const
        return ((60.0 * sr * _beats_per_bar) / (tempo.beats_per_minute() * _note_type/tempo.note_type()));
 }
 
+double 
+Meter::frames_per_division (const Tempo& tempo, framecnt_t sr) const
+{
+       return  ((60.0 * sr) / (tempo.beats_per_minute() * _note_type/tempo.note_type()));
+}
+
 /***********************************************************************/
 
 const string TempoSection::xml_state_node_name = "Tempo";
@@ -1402,7 +1408,7 @@ TempoMap::get_points (framepos_t lower, framepos_t upper) const
 
        beats_per_bar = meter->beats_per_bar ();
        frames_per_bar = meter->frames_per_bar (*tempo, _frame_rate);
-       beat_frames = tempo->frames_per_beat (_frame_rate, *meter);
+       beat_frames = meter->frames_per_division (*tempo,_frame_rate);
 
        if (meter->frame() > tempo->frame()) {
                bar = meter->start().bars;
@@ -1530,7 +1536,7 @@ TempoMap::get_points (framepos_t lower, framepos_t upper) const
 
                        beats_per_bar = meter->beats_per_bar ();
                        frames_per_bar = meter->frames_per_bar (*tempo, _frame_rate);
-                       beat_frames = tempo->frames_per_beat (_frame_rate, *meter);
+                       beat_frames = meter->frames_per_division (*tempo, _frame_rate);
 
                        ++i;
                }