fix incorrect _start after a split.
authornick_m <mainsbridge@gmail.com>
Fri, 6 Jan 2017 18:18:45 +0000 (05:18 +1100)
committernick_m <mainsbridge@gmail.com>
Fri, 6 Jan 2017 18:18:45 +0000 (05:18 +1100)
- when splitting a region where quantized notes start on the
  split point, the notes would sometimes vanish due to us deriving
  an exact quarter-note from the supplied frame.
  this only affects midi regions, as other region types
  have contents which are completely frame-based.

libs/ardour/midi_region.cc

index bb02a79fdd783b3ef21ec479c11dddb8385e6c43..dcd084d2a626cb4e81b917b9d0459cc09fa269d2 100644 (file)
@@ -110,6 +110,8 @@ MidiRegion::MidiRegion (boost::shared_ptr<const MidiRegion> other, frameoffset_t
        if (offset != 0) {
                _start_beats = (_session.tempo_map().exact_qn_at_frame (other->_position + offset, sub_num) - other->_quarter_note) + other->_start_beats;
                update_length_beats (sub_num);
+               /* we've potentially shifted _start_beats, now reset _start frames to match */
+               _start = _session.tempo_map().frame_at_quarter_note (other->_quarter_note -  other->_start_beats);
        }
 
        register_properties ();