in Midi all messages start with a number greater than $7F, that is $80 and above. It is called the Status byte and tells us what type the message is. Sysex starts with $F0
As sysex can be any length we need to know when it is finished so we use another number greater than $7F and that is $F7 at the end.
So sysex $F0 any number of data numbers that are all less than $80 F7
$F0 $00 $01 $38 $00 $6D $22 $00 $94 $00 $00 $00 val $F7
Note that in your message you have a $90 and any Midi device will say "oh a number bigger than $7F it must be a new message (in this case $94 = Note On on channel 5, next is the note 00 and with a velocity of 00). I better add the end of sysex $F7 and then put out the Note On message."
Then there are data bytes (< $80) but no Status byte so it assumes the message is the same as the last Status byte and we only use the two data bytes 00 and 04. This called running status which is very useful. (by the way Microsoft says no to running status in Windows)
As the next message will either need a new Status byte or 2 data bytes, the 'extra' data byte will be ignored as will the $F7 end of sysex.
So the 00 94 can't be data within a sysex message.
Note that hexadecimal $80 is the same as 128 in decimal, so perhaps it is decimal in the manual and it should be $00 $5E which is hex for the decimal 0 and 94.
Hope this helps
Royce