From 715ac5cd3aa4e580e8d925090db60f1f49e5741e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 2 Feb 2024 10:10:17 -0700 Subject: [PATCH] use new SMF::tempo_map() method when importing tempo map from SMF --- gtk2_ardour/editor_audio_import.cc | 42 +++--------------------------- 1 file changed, 3 insertions(+), 39 deletions(-) diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index e9f6fde871..8583daac56 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -279,49 +279,13 @@ Editor::import_smf_tempo_map (Evoral::SMF const & smf, timepos_t const & pos) return; } - const size_t num_tempos = smf.num_tempos (); + bool provided; + TempoMap::WritableSharedPtr new_map (smf.tempo_map (provided)); - if (num_tempos == 0) { + if (!provided) { return; } - /* cannot create an empty TempoMap, so create one with "default" single - values for tempo and meter, then overwrite them. - */ - - TempoMap::WritableSharedPtr new_map (new TempoMap (Tempo (120, 4), Meter (4, 4))); - - Meter last_meter (4, 4); - bool have_initial_meter = false; - - for (size_t n = 0; n < num_tempos; ++n) { - - Evoral::SMF::Tempo* t = smf.nth_tempo (n); - assert (t); - - Tempo tempo (t->tempo(), 32.0 / (double) t->notes_per_note); - Meter meter (t->numerator, t->denominator); - - Temporal::BBT_Argument bbt; /* 1|1|0 which is correct for the no-meter case */ - - if (have_initial_meter) { - - bbt = new_map->bbt_at (timepos_t (Temporal::Beats (int_div_round (t->time_pulses, (size_t) smf.ppqn()), 0))); - new_map->set_tempo (tempo, bbt); - - if (!(meter == last_meter)) { - new_map->set_meter (meter, bbt); - } - - } else { - new_map->set_meter (meter, bbt); - new_map->set_tempo (tempo, bbt); - have_initial_meter = true; - } - - last_meter = meter; - } - TempoMap::WritableSharedPtr wmap = TempoMap::write_copy (); TempoMapCutBuffer* tmcb; // XMLNode& tm_before (wmap->get_state());