From 4ef4f45f3d8812bf6f9b45e06e77e844ce0ce536 Mon Sep 17 00:00:00 2001 From: nick_m Date: Fri, 9 Jun 2017 11:01:30 +1000 Subject: [PATCH] Add a method for obtaining the frame position of beat/whatever zero --- libs/ardour/ardour/tempo.h | 2 ++ libs/ardour/tempo.cc | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/tempo.h b/libs/ardour/ardour/tempo.h index da68f6516e..816ec67d33 100644 --- a/libs/ardour/ardour/tempo.h +++ b/libs/ardour/ardour/tempo.h @@ -525,6 +525,8 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible void fix_legacy_session(); void fix_legacy_end_session(); + framepos_t music_origin (); + private: /* prevent copy construction */ TempoMap (TempoMap const&); diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc index 47d718d2f8..405a13a851 100644 --- a/libs/ardour/tempo.cc +++ b/libs/ardour/tempo.cc @@ -1882,7 +1882,7 @@ TempoMap::quarter_note_at_tempo (const Tempo& tempo) const { Glib::Threads::RWLock::ReaderLock lm (lock); - return pulse_at_tempo_locked (_metrics, tempo) * 4.0;; + return pulse_at_tempo_locked (_metrics, tempo) * 4.0; } /** Returns the whole-note pulse corresponding to the supplied BBT (meter-based) beat. @@ -3780,6 +3780,16 @@ TempoMap::gui_twist_tempi (TempoSection* ts, const Tempo& bpm, const framepos_t return can_solve; } + +/** Returns the frame position of the musical position zero */ +framepos_t +TempoMap::music_origin () +{ + Glib::Threads::RWLock::ReaderLock lm (lock); + + return first_tempo().frame(); +} + /** Returns the exact bbt-based beat corresponding to the bar, beat or quarter note subdivision nearest to * the supplied frame, possibly returning a negative value. * -- 2.30.2