There’s an issue with the Play Tool when using it on MIDI Parts (this includes MIDI, Instrument, and Sampler Tracks).
When clicking on a MIDI Part to hear its content, the Cursor goes back 700 ms and we need to wait until it reaches the note to hear it play.
Yes, that’s very precise, the offset is exactly 700 milliseconds when the Ruler is set to Seconds, and this value isn’t affected by sample-rate, buffer size, etc. It seems like it is hard coded to that specific value.
Furthermore, even if there’s an offset, the Play Tool needs to be placed earlier to the note when we click, in order to hear it. If we click the Play Tool after the start of the note, it won’t make any sound (isn’t it supposed to make use of the Chase functionality ?).
It also means that the notes that are located in the offset won’t be played, but only starting from where you engage the click !
And there is something else going on, when releasing the click within the 200 ms before where you clicked (in other words, the Cursor needs to travel at least 500 ms during the main offset), it will keep reading/playing the notes for a duration of 500 ms, even if the Play Tool has visually stopped and nothing is moving on the screen.
If you do that during the last 200 ms of the initial offset, it will start playing the notes from where you clicked, but if you release the click when the offset has ended and the Play Tool is playing, then it will keep playing from where it was. And strange enough, these 200 + 500 ms values equals 700 ms, same as the initial offset. Surprising, huh ?
And last but not least, the main offset of 700 ms correlates to the same bug that sometimes occurs when using the Play Tool on Audio Events or in the Sample Editor, although, in this case, the Cursor doesn’t go back, but it’s the actual audio that is played with this offset, it will no longer be in sync with the waveform/cursor.
In the case of MIDI Parts however, what we hear is always in sync with the Cursor.
Quick animation, but it still requires manual testing if you want to fully reproduce the issue :