diff options
Diffstat (limited to 'libs/ardour/ardour/tempo.h')
-rw-r--r-- | libs/ardour/ardour/tempo.h | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/libs/ardour/ardour/tempo.h b/libs/ardour/ardour/tempo.h index a7d0d6ba99..8712578e54 100644 --- a/libs/ardour/ardour/tempo.h +++ b/libs/ardour/ardour/tempo.h @@ -99,14 +99,13 @@ class LIBARDOUR_API Meter { /** A section of timeline with a certain Tempo or Meter. */ class LIBARDOUR_API MetricSection { public: - MetricSection (double start) - : _beat (start), _frame (0), _movable (true), _position_lock_style (MusicTime) {} + MetricSection (double beat) + : _beat (beat), _frame (0), _movable (true), _position_lock_style (MusicTime) {} MetricSection (framepos_t frame) : _beat (0), _frame (frame), _movable (true), _position_lock_style (MusicTime) {} virtual ~MetricSection() {} - const double start () const { return _beat; } const double& beat () const { return _beat; } void set_beat (double beat) { _beat = beat;} @@ -137,8 +136,8 @@ private: /** A section of timeline with a certain Meter. */ class LIBARDOUR_API MeterSection : public MetricSection, public Meter { public: - MeterSection (double start, const Timecode::BBT_Time& bbt, double bpb, double note_type) - : MetricSection (start), Meter (bpb, note_type), _bbt (bbt) {} + MeterSection (double beat, const Timecode::BBT_Time& bbt, double bpb, double note_type) + : MetricSection (beat), Meter (bpb, note_type), _bbt (bbt) {} MeterSection (framepos_t frame, double bpb, double note_type) : MetricSection (frame), Meter (bpb, note_type) {} MeterSection (const XMLNode&); @@ -147,10 +146,11 @@ class LIBARDOUR_API MeterSection : public MetricSection, public Meter { XMLNode& get_state() const; - void set_start (std::pair<double, Timecode::BBT_Time>& w) { - set_beat (w.first); + void set_beat (std::pair<double, Timecode::BBT_Time>& w) { + MetricSection::set_beat (w.first); _bbt = w.second; } + const Timecode::BBT_Time& bbt() const { return _bbt; } private: Timecode::BBT_Time _bbt; @@ -164,8 +164,8 @@ class LIBARDOUR_API TempoSection : public MetricSection, public Tempo { Constant, }; - TempoSection (const double& start, double qpm, double note_type, Type tempo_type) - : MetricSection (start), Tempo (qpm, note_type), _bar_offset (-1.0), _type (tempo_type) {} + TempoSection (const double& beat, double qpm, double note_type, Type tempo_type) + : MetricSection (beat), Tempo (qpm, note_type), _bar_offset (-1.0), _type (tempo_type) {} TempoSection (framepos_t frame, double qpm, double note_type, Type tempo_type) : MetricSection (frame), Tempo (qpm, note_type), _bar_offset (-1.0), _type (tempo_type) {} TempoSection (const XMLNode&); @@ -174,10 +174,6 @@ class LIBARDOUR_API TempoSection : public MetricSection, public Tempo { XMLNode& get_state() const; - void set_start (const double& w) { - set_beat (w); - } - void update_bar_offset_from_bbt (const Meter&); void update_bbt_time_from_bar_offset (const Meter&); double bar_offset() const { return _bar_offset; } @@ -243,7 +239,7 @@ class LIBARDOUR_API TempoMetric { void set_tempo (const Tempo& t) { _tempo = &t; } void set_meter (const Meter& m) { _meter = &m; } void set_frame (framepos_t f) { _frame = f; } - void set_start (const double& t) { _start = t; } + void set_beat (const double& t) { _beat = t; } void set_metric (const MetricSection* section) { const MeterSection* meter; @@ -255,19 +251,19 @@ class LIBARDOUR_API TempoMetric { } set_frame(section->frame()); - set_start(section->start()); + set_beat(section->beat()); } const Meter& meter() const { return *_meter; } const Tempo& tempo() const { return *_tempo; } framepos_t frame() const { return _frame; } - const double& start() const { return _start; } + const double& beat() const { return _beat; } private: const Meter* _meter; const Tempo* _tempo; framepos_t _frame; - double _start; + double _beat; }; /** Tempo Map - mapping of timecode to musical time. @@ -360,14 +356,14 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible const MeterSection& meter_section_at (framepos_t) const; void add_tempo (const Tempo&, double where, TempoSection::Type type); - void add_meter (const Meter&, double start, Timecode::BBT_Time where); + void add_meter (const Meter&, double beat, Timecode::BBT_Time where); void remove_tempo (const TempoSection&, bool send_signal); void remove_meter (const MeterSection&, bool send_signal); void replace_tempo (const TempoSection&, const Tempo&, const double& where, TempoSection::Type type); void gui_set_tempo_frame (TempoSection&, framepos_t where, double beat); - void replace_meter (const MeterSection&, const Meter&, const double& start, const Timecode::BBT_Time& where); + void replace_meter (const MeterSection&, const Meter&, const Timecode::BBT_Time& where); framepos_t round_to_bar (framepos_t frame, RoundMode dir); framepos_t round_to_beat (framepos_t frame, RoundMode dir); @@ -404,8 +400,11 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible PBD::Signal0<void> MetricPositionChanged; double bbt_to_beats (Timecode::BBT_Time bbt); + Timecode::BBT_Time beats_to_bbt (double beats); private: + double bbt_to_beats_unlocked (Timecode::BBT_Time bbt); + Timecode::BBT_Time beats_to_bbt_unlocked (double beats); friend class ::BBTTest; friend class ::FrameposPlusBeatsTest; @@ -427,12 +426,10 @@ private: const TempoSection& first_tempo() const; TempoSection& first_tempo(); - Timecode::BBT_Time beats_to_bbt (double beats); - void do_insert (MetricSection* section); void add_tempo_locked (const Tempo&, double where, bool recompute, TempoSection::Type type); - void add_meter_locked (const Meter&, double start, Timecode::BBT_Time where, bool recompute); + void add_meter_locked (const Meter&, double beat, Timecode::BBT_Time where, bool recompute); bool remove_tempo_locked (const TempoSection&); bool remove_meter_locked (const MeterSection&); |