Der UART "merkt" wenn ein Byte anfängt und aufhört und auch wenn Codefehler entstehen kriegt der USART das mit.

Soweit ich weiß ist das Empfangsregister doppelt gepuffert.

Das heißt du kannst ein Byte auslesen, während das nächste empfangen wird.

Das Statusregister muß vor dem Empfangsregister ausgelesen werden, sonst werden im Register gesetzte Fehlerbits gelöscht.

Ich würd die Empfangsroutine sowieso in einem Interrupt auswerten und die Daten in einen Ringpuffer einlesen, der im Hauptprogramm abgearbeitet wird.

100 Byte sollten locker reichen.

Ob das Keyboard ständig Daten sendet kann man nicht sagen.
Wenn es "Active Sensing" "SMTP" (Time Protocoll) hat sendet es sicher ständig Daten. Wobei "Active Sensing" sehr wenige Bytes produziert.

Achte darauf, das ein Keyboard Daten für alle 16 möglichen MiDi Kanäle senden kann!