summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_region.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-09-07 00:18:35 +1000
committernick_m <mainsbridge@gmail.com>2016-09-07 00:18:35 +1000
commit3f4d49fd2f6fca3237668897e91212ea93b05b07 (patch)
tree081fe108242fb8f8311721385efda6a7cbad915b /libs/ardour/midi_region.cc
parentd6e0e75f3ce48ba864f315e3bfcfe39275ee90bc (diff)
Load midi region length and start correctly in sessions modified by v5.0 -> 5.3-41
Diffstat (limited to 'libs/ardour/midi_region.cc')
-rw-r--r--libs/ardour/midi_region.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc
index cf72379211..67bd7a1b3d 100644
--- a/libs/ardour/midi_region.cc
+++ b/libs/ardour/midi_region.cc
@@ -439,10 +439,18 @@ MidiRegion::set_state (const XMLNode& node, int version)
if (position_lock_style() == AudioTime) {
update_length_beats (0);
}
- }
- _start_pulse = _start_beats.val().to_double() / 4.0;
- _length_pulse = _length_beats.val().to_double() / 4.0;
+ if (_session.midi_regions_use_bbt_beats()) {
+ info << _("Updating midi region start and length beats") << endmsg;
+ TempoMap& map (_session.tempo_map());
+ _start_beats = Evoral::Beats ((map.pulse_at_beat (_beat) - map.pulse_at_beat (_beat - _start_beats.val().to_double())) * 4.0);
+ _length_beats = Evoral::Beats ((map.pulse_at_beat (_beat + _length_beats.val().to_double()) - map.pulse_at_beat (_beat)) * 4.0);
+
+ }
+
+ _start_pulse = _start_beats.val().to_double() / 4.0;
+ _length_pulse = _length_beats.val().to_double() / 4.0;
+ }
return ret;
}