MIDI has some of the most confusing module documentation I have ever seen. There's a possibly-helpful example at the start of MIDI::Event. It sets a callback function that gets called for each "event" in the file (where events include the start of notes, as well as other things too fierce to mention). The hard part is probably going to be converting the numerical pitch value to the text notation you want.