diff options
author | nick_m <mainsbridge@gmail.com> | 2016-09-07 00:18:35 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2016-09-07 00:18:35 +1000 |
commit | 3f4d49fd2f6fca3237668897e91212ea93b05b07 (patch) | |
tree | 081fe108242fb8f8311721385efda6a7cbad915b /libs/ardour/midi_region.cc | |
parent | d6e0e75f3ce48ba864f315e3bfcfe39275ee90bc (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.cc | 14 |
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; } |