diff options
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; } |