diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc index 45913ebb17..e4cd9a98f1 100644 --- a/libs/ardour/midi_playlist.cc +++ b/libs/ardour/midi_playlist.cc @@ -357,20 +357,20 @@ MidiPlaylist::render (MidiChannelFilter* filter) } else { DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\t%1 layered regions to read\n", regs.size())); - - bool top = true; + bool top = false; std::vector bounds; EventsSortByTimeAndType cmp; + int n = regs.size(); + + /* iterate, bottom region first */ - /* iterate, top-most region first */ for (auto & mr : regs) { DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("maybe render from %1\n", mr->name())); - if (top) { + if (--n == 0) { /* render topmost region as-is */ mr->render (evlist, 0, _note_mode, filter); - top = false; } else { Evoral::EventList tmp; mr->render (tmp, 0, _note_mode, filter);