From 10cd3c85cda6279710ee7182a30d383a40af5fc1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 20 Jun 2024 21:20:22 -0600 Subject: [PATCH] when delivering a MIDI scene change, ensure trace parser sees the data --- libs/ardour/midi_scene_changer.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/ardour/midi_scene_changer.cc b/libs/ardour/midi_scene_changer.cc index 505c7fec8c..13df7713d5 100644 --- a/libs/ardour/midi_scene_changer.cc +++ b/libs/ardour/midi_scene_changer.cc @@ -102,14 +102,23 @@ MIDISceneChanger::rt_deliver (MidiBuffer& mbuf, samplepos_t when, std::shared_pt uint8_t buf[4]; size_t cnt; + std::shared_ptr aport = std::dynamic_pointer_cast(output_port); + MIDI::Parser* parser (aport ? aport->parser() : output_port->trace_parser().get()); MIDIOutputActivity (); /* EMIT SIGNAL */ if ((cnt = msc->get_bank_msb_message (buf, sizeof (buf))) > 0) { mbuf.push_back (when, Evoral::MIDI_EVENT, cnt, buf); + for (size_t n = 0; parser && n < cnt; ++n) { + parser->scanner (buf[n]); + } + if ((cnt = msc->get_bank_lsb_message (buf, sizeof (buf))) > 0) { mbuf.push_back (when, Evoral::MIDI_EVENT, cnt, buf); + for (size_t n = 0; parser && n < cnt; ++n) { + parser->scanner (buf[n]); + } } last_delivered_bank = msc->bank(); @@ -117,7 +126,9 @@ MIDISceneChanger::rt_deliver (MidiBuffer& mbuf, samplepos_t when, std::shared_pt if ((cnt = msc->get_program_message (buf, sizeof (buf))) > 0) { mbuf.push_back (when, Evoral::MIDI_EVENT, cnt, buf); - + for (size_t n = 0; parser && n < cnt; ++n) { + parser->scanner (buf[n]); + } last_delivered_program = msc->program(); } }