For the most part, the MIDI modules out there won’t work correctly with 3.3v microcontrollers. The MIDI shields are meant for 5V Arduinos (I’ve seen one which has more options, but it’s huge and ugly).
The MIDI protocol is a relatively slow (31,250 bps) serial protocol implemented as a current loop with 5V signal levels. In theory, a high value froma 3.3v MCU should be just enough to trigger a 1, but in practice, it’s too close to be reliable. Keep in mind that much of the interesting MIDI equipment out there is old old old stuff dating from the mid 80s and later.
I wrestled with the signal level translation for a while, and in the end, went with a subset of what Sparkfun and others put together using a BSS138 mosfet. The MIDI IN stuff is something I’ve done any number of times, but the signal level translation on MIDI out is new territory for me. It took me so long because I still don’t really understand that level translation circuit, and I hate to use things I don’t understand.
I left out a MIDI thru because it’s not as useful as it once was (chaining MIDI instruments adds too much latency), and makes the board quite a bit larger.