From 2a9ceb74c4f8ec316c639722c371e5bcb78de548 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 10 Dec 2011 13:48:50 +0000 Subject: [PATCH] Compute delta time correctly when appending events; the converter must be used to convert a source time, not a delta time, otherwise tempo / meter changes are not correctly accounted for. git-svn-id: svn://localhost/ardour2/branches/3.0@10963 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/smf_source.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc index b33fb16f48..52377ee915 100644 --- a/libs/ardour/smf_source.cc +++ b/libs/ardour/smf_source.cc @@ -369,9 +369,9 @@ SMFSource::append_event_unlocked_frames (const Evoral::Event& ev, fr _length_beats = max(_length_beats, ev_time_beats); - const framepos_t delta_time_frames = ev.time() - _last_ev_time_frames; - const double delta_time_beats = converter.from(delta_time_frames); - const uint32_t delta_time_ticks = (uint32_t)(lrint(delta_time_beats * (double)ppqn())); + const Evoral::MusicalTime last_time_beats = converter.from (_last_ev_time_frames); + const Evoral::MusicalTime delta_time_beats = ev_time_beats - last_time_beats; + const uint32_t delta_time_ticks = (uint32_t)(lrint(delta_time_beats * (double)ppqn())); Evoral::SMF::append_event_delta(delta_time_ticks, ev.size(), ev.buffer(), event_id); _last_ev_time_frames = ev.time();