MIDI is a serial protocol that operates at 31,250 bits per second
I tried to use the SoftwareSerial library for MIDI (by 47 effects), but it seems I get regularly corrupted/unexpected messages.
The problem with SoftwareSerial is that while it is receiving a packet the Arduino is unable to do anything else - that includes reading bytes from the RX buffer, so it will easily overflow if you send things too rapidly. With HardwareSerial you are able to read from the buffer while it's receiving data, so overflowing is less of a problem.
Perhaps another great option would be to use an FPGA where hardware blocks for data processing could be created instead of a software-emulated serial port.
What are you talking about? Using an FPGA just for UART communication is insane.
Yes, it's true, ops, I understood ports instead of keys. Imagine trying to use 61 MIDI ports, what processing would be needed?