summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_region.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-06-17 03:20:37 +1000
committernick_m <mainsbridge@gmail.com>2016-07-10 02:18:36 +1000
commit93c24e4433d69fe1de28d4d2ed2045aa7cb3596b (patch)
tree9cf3017f3075d57a1b7a3c5d9388b6554cbb0c7b /libs/ardour/midi_region.cc
parent94e0a15325278ec26dbeba4990a0e883db859338 (diff)
Paste uses exact beats. rework _start_beats calculation in copy-with-offset ctor.
Diffstat (limited to 'libs/ardour/midi_region.cc')
-rw-r--r--libs/ardour/midi_region.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc
index 4d4c081c24..035c17c9de 100644
--- a/libs/ardour/midi_region.cc
+++ b/libs/ardour/midi_region.cc
@@ -107,8 +107,7 @@ MidiRegion::MidiRegion (boost::shared_ptr<const MidiRegion> other, frameoffset_t
, _start_beats (Properties::start_beats, Evoral::Beats())
, _length_beats (Properties::length_beats, other->_length_beats)
{
- const double offset_beat = _session.tempo_map().exact_beat_at_frame (other->_position + offset, sub_num) - other->beat();
- _start_beats = Evoral::Beats (other->_start_beats.val().to_double() + offset_beat);
+ _start_beats = Evoral::Beats (_session.tempo_map().exact_beat_at_frame (other->_position + offset - other->_start, sub_num) - other->beat());
update_length_beats (sub_num);
register_properties ();
@@ -163,7 +162,10 @@ MidiRegion::clone (boost::shared_ptr<MidiSource> newsrc) const
plist.add (Properties::length_beats, _length_beats);
plist.add (Properties::layer, 0);
- return boost::dynamic_pointer_cast<MidiRegion> (RegionFactory::create (newsrc, plist, true));
+ boost::shared_ptr<MidiRegion> ret (boost::dynamic_pointer_cast<MidiRegion> (RegionFactory::create (newsrc, plist, true)));
+ ret->set_beat (beat());
+
+ return ret;
}
void