13
0

midi: fix playback of notes the start at playhead position (#9398/#9410)

The diskreader uses the route's monitoring state when deciding whether or not
to fetch MIDI data for playback. Route::monitoring_state() would determine
whether or not we were already rolling to affect its return value. However,
using Session::transport_rolling() is affected by pre-roll and consequently
returns the wrong value during transport startup. Instead, we now use
::transport_state_rolling() which ignores preroll conditions. This leads to the
DR actually reading MIDI data from the initial playback position, which fixes
this issue.

Note that the bug only occured if the track or the session was rec-enabled. The
monitoring state value was always correct for non-rec-enabled conditions.
This commit is contained in:
Paul Davis 2023-07-08 15:16:21 -06:00
parent 920a6a46c3
commit 3b1d4d8fa6

View File

@ -6273,7 +6273,7 @@ Route::monitoring_state () const
* I don't think it's ever going to be too pretty too look at.
*/
bool const roll = _session.transport_rolling ();
bool const roll = _session.transport_state_rolling ();
bool const auto_input = _session.config.get_auto_input ();
bool const track_rec = _disk_writer->record_enabled ();
bool session_rec;