From f85ead942b94158a22cf43e973bb369f77ac6cfc Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 25 Nov 2025 17:08:02 +0100 Subject: [PATCH] Apply MIDI playback filter to immediate note audition events --- gtk2_ardour/note_player.cc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/note_player.cc b/gtk2_ardour/note_player.cc index d0396e588d..d154995376 100644 --- a/gtk2_ardour/note_player.cc +++ b/gtk2_ardour/note_player.cc @@ -46,8 +46,12 @@ NotePlayer::add (std::shared_ptr note) void NotePlayer::on () { - for (Notes::iterator n = notes.begin(); n != notes.end(); ++n) { - track->write_immediate_event (Evoral::MIDI_EVENT, (*n)->on_event().size(), (*n)->on_event().buffer()); + MidiChannelFilter& filter = track->playback_filter (); + for (auto const& n : notes) { + Evoral::Event ev (n->on_event(), true); + if (!filter.filter(ev.buffer(), ev.size())) { + track->write_immediate_event (Evoral::MIDI_EVENT, ev.size(), ev.buffer()); + } } } @@ -75,7 +79,11 @@ NotePlayer::_off (NotePlayer* np) void NotePlayer::off () { - for (Notes::iterator n = notes.begin(); n != notes.end(); ++n) { - track->write_immediate_event (Evoral::MIDI_EVENT, (*n)->off_event().size(), (*n)->off_event().buffer()); + MidiChannelFilter& filter = track->playback_filter (); + for (auto const& n : notes) { + Evoral::Event ev (n->off_event(), true); + if (!filter.filter(ev.buffer(), ev.size())) { + track->write_immediate_event (Evoral::MIDI_EVENT, ev.size(), ev.buffer()); + } } }