Fehler im Sketch aber wo???

In SerialLesen() wird dein commandByte zwei mal überschrieben...
Warum tust du das?
Ganz offensichtlich brauchst du einen Kommando Parser.

Weiterhin fehlen Einrückungen/Struktur.
Es ist dadurch sehr unangenehm zu lesen.

Weiterhin die sinnfreie Endlosschleife: while (Serial2.available() ==1);
Oder hat sie einen Sinn?
(und ich sehe ihn nur nicht)

Auch dein checkMIDI() Gedöns kannst du sicherlich optimieren.