We have already mentioned the fantastic work of Amanda Ghassei for Instructables in this post.
I would like to report two other very useful documents.
The first is What is MIDI? and explain in detail how MIDI protocol works. The second, even more important is Send and Receive MIDI with Arduino. Please note, regarding the Midi input schematic, the use of the 6N138 opto-isolator. Some MIDI interface schematics show the 4N25 opto-isolator which is a single transistor type, but the 6N138 shown there produces a much better output signal.