Yempo ramps - fix new meters ending up at 0, clean code a bit.
authornick_m <mainsbridge@gmail.com>
Thu, 5 May 2016 02:32:36 +0000 (12:32 +1000)
committernick_m <mainsbridge@gmail.com>
Fri, 27 May 2016 13:38:16 +0000 (23:38 +1000)
libs/ardour/ardour/tempo.h
libs/ardour/tempo.cc

index 889fde3e99c2ae5ff455f124a3c082aa00e0457c..6a56c194a495405ff407570132d685b1d939c997 100644 (file)
@@ -506,8 +506,8 @@ private:
        TempoSection* add_tempo_locked (const Tempo&, double pulse, bool recompute, TempoSection::Type type);
        TempoSection* add_tempo_locked (const Tempo&, framepos_t frame, bool recompute, TempoSection::Type type);
 
-       MeterSection* add_meter_locked (const Meter&, double beat, Timecode::BBT_Time where, bool recompute);
-       MeterSection* add_meter_locked (const Meter&, framepos_t frame, double beat, Timecode::BBT_Time where, bool recompute);
+       MeterSection* add_meter_locked (const Meter&, double beat, const Timecode::BBT_Time& where, bool recompute);
+       MeterSection* add_meter_locked (const Meter&, framepos_t frame, double beat, const Timecode::BBT_Time& where, bool recompute);
 
        bool remove_tempo_locked (const TempoSection&);
        bool remove_meter_locked (const MeterSection&);
index 8af5ab3fbebe98621acafd6c896861de51943a11..8625d85eaf6a637ba94d37aac35319507d619f35 100644 (file)
@@ -879,7 +879,7 @@ TempoMap::do_insert (MetricSection* section)
                }
 
                _metrics.insert (i, section);
-               //dump (_metrics, std::cerr);
+               //dump (_metrics, std::cout);
        }
 }
 
@@ -1084,7 +1084,7 @@ TempoMap::add_meter (const Meter& meter, const framepos_t& frame, const double&
 }
 
 MeterSection*
-TempoMap::add_meter_locked (const Meter& meter, double beat, BBT_Time where, bool recompute)
+TempoMap::add_meter_locked (const Meter& meter, double beat, const BBT_Time& where, bool recompute)
 {
        /* a new meter always starts a new bar on the first beat. so
           round the start time appropriately. remember that
@@ -1093,14 +1093,10 @@ TempoMap::add_meter_locked (const Meter& meter, double beat, BBT_Time where, boo
 
        */
 
-       if (where.beats != 1) {
-               where.beats = 1;
-               where.bars++;
-       }
-       /* new meters *always* start on a beat. */
-       where.ticks = 0;
        const double pulse = pulse_at_beat_locked (_metrics, beat);
        MeterSection* new_meter = new MeterSection (pulse, beat, where, meter.divisions_per_bar(), meter.note_divisor());
+       new_meter->set_frame (frame_at_pulse_locked (_metrics, pulse));
+
        do_insert (new_meter);
 
        if (recompute) {
@@ -1111,7 +1107,7 @@ TempoMap::add_meter_locked (const Meter& meter, double beat, BBT_Time where, boo
 }
 
 MeterSection*
-TempoMap::add_meter_locked (const Meter& meter, framepos_t frame, double beat, Timecode::BBT_Time where, bool recompute)
+TempoMap::add_meter_locked (const Meter& meter, framepos_t frame, double beat, const Timecode::BBT_Time& where, bool recompute)
 {
        MeterSection* new_meter = new MeterSection (frame, beat, where, meter.divisions_per_bar(), meter.note_divisor());
        TempoSection* t = 0;
@@ -1398,7 +1394,6 @@ TempoMap::recompute_meters (Metrics& metrics)
                        prev_m = meter;
                }
        }
-       //dump (_metrics, std::cerr;
 }
 
 void
@@ -2025,8 +2020,6 @@ TempoMap::solve_map (Metrics& imaginary, TempoSection* section, const framepos_t
                return true;
        }
 
-       //dump (imaginary, std::cerr);
-
        return false;
 }
 
@@ -2100,8 +2093,6 @@ TempoMap::solve_map (Metrics& imaginary, TempoSection* section, const double& pu
                return true;
        }
 
-       //dump (imaginary, std::cerr);
-
        return false;
 }
 
@@ -2261,7 +2252,7 @@ TempoMap::solve_map (Metrics& imaginary, MeterSection* section, const framepos_t
        } else {
                recompute_meters (imaginary);
        }
-       //dump (imaginary, std::cerr);
+
        return true;
 }