From c5b2c4432e06429bb92c1bf20b7baae5cbbadc40 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 7 Oct 2023 22:40:50 +0200 Subject: [PATCH] Fix tracing internally connected MIDI ports MIDI track A -> MIDI track B The data on Track B's input is not available at cycle-start. --- libs/ardour/midi_port.cc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc index c9ee413b93..61a747a62d 100644 --- a/libs/ardour/midi_port.cc +++ b/libs/ardour/midi_port.cc @@ -74,13 +74,6 @@ MidiPort::cycle_start (pframes_t nframes) port_engine.midi_clear (port_engine.get_buffer (_port_handle, nframes)); } - if (receives_input()) { - std::shared_ptr trace_parser = _trace_parser.lock (); - if (trace_parser) { - read_and_parse_entire_midi_buffer_with_no_speed_adjustment (nframes, *trace_parser.get(), AudioEngine::instance()->sample_time_at_cycle_start()); - } - } - if (_inbound_midi_filter) { MidiBuffer& mb (get_midi_buffer (nframes)); _inbound_midi_filter (mb, mb); @@ -229,6 +222,12 @@ MidiPort::read_and_parse_entire_midi_buffer_with_no_speed_adjustment (pframes_t void MidiPort::cycle_end (pframes_t nframes) { + if (receives_input()) { + std::shared_ptr trace_parser = _trace_parser.lock (); + if (trace_parser) { + read_and_parse_entire_midi_buffer_with_no_speed_adjustment (nframes, *trace_parser.get(), AudioEngine::instance()->sample_time_at_cycle_start()); + } + } Port::cycle_end (nframes); _data_fetched_for_cycle = false; }