From 0edba1f55966b6b2fd30c00459f354a430b03b45 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 14 Jul 2025 09:11:42 -0600 Subject: [PATCH] fix MIDI playlist rendering with opaque regions regions are sorted lowest-first, not highest-first. --- libs/ardour/midi_playlist.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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);