From f41bc70ee900257d2d9008f3a749981b10de16bc Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 13 Sep 2016 14:10:04 -0500 Subject: change all MIDI read-from-source to map all events into the loop-range for seamless looping (if using) --- libs/ardour/midi_playlist.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libs/ardour/midi_playlist.cc') diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc index e3274c77b1..b845758f47 100644 --- a/libs/ardour/midi_playlist.cc +++ b/libs/ardour/midi_playlist.cc @@ -110,6 +110,7 @@ framecnt_t MidiPlaylist::read (Evoral::EventSink& dst, framepos_t start, framecnt_t dur, + Evoral::Range* loop_range, unsigned chan_n, MidiChannelFilter* filter) { @@ -190,7 +191,11 @@ MidiPlaylist::read (Evoral::EventSink& dst, } /* Read from region into target. */ - mr->read_at (tgt, start, dur, chan_n, _note_mode, &tracker->tracker, filter); + DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("read from %1 at %2 for %3 LR %4 .. %5\n", + mr->name(), start, dur, + (loop_range ? loop_range->from : -1), + (loop_range ? loop_range->to : -1))); + mr->read_at (tgt, start, dur, loop_range, chan_n, _note_mode, &tracker->tracker, filter); DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\tPost-read: %1 active notes\n", tracker->tracker.on())); @@ -202,7 +207,7 @@ MidiPlaylist::read (Evoral::EventSink& dst, string_compose ("\t%1 ended, resolve notes and delete (%2) tracker\n", mr->name(), ((new_tracker) ? "new" : "old"))); - tracker->tracker.resolve_notes (tgt, (*i)->last_frame()); + tracker->tracker.resolve_notes (tgt, loop_range ? loop_range->squish ((*i)->last_frame()) : (*i)->last_frame()); if (!new_tracker) { _note_trackers.erase (t); } -- cgit v1.2.3