diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 9f7291c6e7..c7547816a4 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -478,13 +478,22 @@ MidiTrack::export_stuff (BufferSet& buffers, if (!mpl) { return -2; } + mpl->reset_note_trackers (); // TODO once at start and end ? buffers.get_midi(0).clear(); if (mpl->read(buffers.get_midi(0), start, nframes, 0) != nframes) { return -1; } - //bounce_process (buffers, start, nframes, endpoint, include_endpoint, for_export, for_freeze); + if (endpoint && !for_export) { + MidiBuffer& buf = buffers.get_midi(0); + for (MidiBuffer::iterator i = buf.begin(); i != buf.end(); ++i) { + MidiBuffer::TimeType *t = i.timeptr (); + *t -= start; + } + bounce_process (buffers, start, nframes, endpoint, include_endpoint, for_export, for_freeze); + } + mpl->reset_note_trackers (); return 0; } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index de5d804cf5..660339d6bb 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -6238,7 +6238,9 @@ Session::write_one_track (Track& track, samplepos_t start, samplepos_t end, const MidiBuffer& buf = buffers.get_midi(0); for (MidiBuffer::const_iterator i = buf.begin(); i != buf.end(); ++i) { Evoral::Event ev = *i; - ev.set_time(ev.time() - position); + if (!endpoint || for_export) { + ev.set_time(ev.time() - position); + } ms->append_event_samples(lock, ev, ms->timeline_position()); } }