From c7ff67004a51ae3f0453531c3d64bd9876f1df3b Mon Sep 17 00:00:00 2001 From: nick_m Date: Sun, 28 Feb 2016 23:09:02 +1100 Subject: [PATCH] Tempo ramps - fix messed up meter section state, audio-locked tempos ignore the bbt setting in the tempo dialog for now. --- gtk2_ardour/editor_tempodisplay.cc | 4 ++-- libs/ardour/tempo.cc | 11 ++++------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc index 53cc28cd63..6e28b32e77 100644 --- a/gtk2_ardour/editor_tempodisplay.cc +++ b/gtk2_ardour/editor_tempodisplay.cc @@ -345,7 +345,7 @@ Editor::edit_meter_section (MeterSection* section) if (meter_dialog.get_lock_style() == MusicTime) { _session->tempo_map().replace_meter (*section, Meter (bpb, note_type), when); } else { - _session->tempo_map().replace_meter (*section, Meter (bpb, note_type), frame); + _session->tempo_map().replace_meter (*section, Meter (bpb, note_type), section->frame()); } XMLNode &after = _session->tempo_map().get_state(); _session->add_command(new MementoCommand(_session->tempo_map(), &before, &after)); @@ -378,7 +378,7 @@ Editor::edit_tempo_section (TempoSection* section) if (tempo_dialog.get_lock_style() == MusicTime) { _session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), beat, tempo_dialog.get_tempo_type()); } else { - _session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), _session->tempo_map().frame_at_beat (beat), tempo_dialog.get_tempo_type()); + _session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), section->frame(), tempo_dialog.get_tempo_type()); } XMLNode &after = _session->tempo_map().get_state(); _session->add_command (new MementoCommand(_session->tempo_map(), &before, &after)); diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc index 904c845454..9f81f616e4 100644 --- a/libs/ardour/tempo.cc +++ b/libs/ardour/tempo.cc @@ -500,7 +500,7 @@ MeterSection::MeterSection (const XMLNode& node) &bbt.beats, &bbt.ticks) < 3) { error << _("MeterSection XML node has an illegal \"bbt\" value") << endmsg; - throw failed_constructor(); + //throw failed_constructor(); } start.second = bbt; @@ -523,9 +523,8 @@ MeterSection::MeterSection (const XMLNode& node) throw failed_constructor(); } } - if (sscanf (prop->value().c_str(), "%lf", &_divisions_per_bar) != 1 || _divisions_per_bar < 0.0) { - error << _("MeterSection XML node has an illegal \"beats-per-bar\" or \"divisions-per-bar\" value") << endmsg; + error << _("MeterSection XML node has an illegal \"divisions-per-bar\" value") << endmsg; throw failed_constructor(); } @@ -533,7 +532,6 @@ MeterSection::MeterSection (const XMLNode& node) error << _("MeterSection XML node has no \"note-type\" property") << endmsg; throw failed_constructor(); } - if (sscanf (prop->value().c_str(), "%lf", &_note_type) != 1 || _note_type < 0.0) { error << _("MeterSection XML node has an illegal \"note-type\" value") << endmsg; throw failed_constructor(); @@ -541,7 +539,6 @@ MeterSection::MeterSection (const XMLNode& node) if ((prop = node.property ("lock-style")) == 0) { warning << _("MeterSection XML node has no \"lock-style\" property") << endmsg; - //throw failed_constructor(); set_position_lock_style (PositionLockStyle::MusicTime); } else { set_position_lock_style (PositionLockStyle (string_2_enum (prop->value(), position_lock_style()))); @@ -570,9 +567,9 @@ MeterSection::get_state() const snprintf (buf, sizeof (buf), "%lf", beat()); root->add_property ("beat", buf); snprintf (buf, sizeof (buf), "%f", _note_type); - root->add_property ("frame", buf); - snprintf (buf, sizeof (buf), "%li", frame()); root->add_property ("note-type", buf); + snprintf (buf, sizeof (buf), "%li", frame()); + root->add_property ("frame", buf); root->add_property ("lock-style", enum_2_string (position_lock_style())); snprintf (buf, sizeof (buf), "%f", _divisions_per_bar); root->add_property ("divisions-per-bar", buf);