It’s a daunting language at first. I’d hold off on Step by Step, as it is more of an intermediate level book. If you open up Help->Max Reference, the most important steps would be knowing bang, messages, and lists. Alternatively Max MSP Jitter For Music by VJ Manzo would be a solid first step.
Quick breakdown, top-to-bottom:
midiin - All MIDI from Live (CC, Notes, etc.)
midiparse - Object to help break complex MIDI messages down to more relevant bits, in this case pitch and velocity.
unjoin 2 - Breaks a list down into two components. In this case, pitch and velocity.
route 0 - If the input is 0, send it to one outlet. If not, send it out the other.
next/reset - Max messages. These are text instructions sent to objects generally to trigger a type of event or to set a parameter value.
live.step - huge compound object dedicated to monophonic step sequencing. Has pitch, velocity, duration, two “extra” parameters, and a loop brace.
unjoin 6 - Breaks a list down into six components. In this case, index, pitch, velocity, duration, extra1, and extra2.
makenote - This object takes arguments for pitch, velocity, and duration. It generates a MIDI note with note on and note off messages.
join 2 - This takes makenote’s output (pitch and velocity) and coverts it into a two-item list, which is the required input for midiformat.
midiformat - This is sort of the inverse of the midiparse object at the top of the patch. This takes simple values and converts them into the more complicated MIDI message.
midiout - This is the MIDI output back to Live.
One cool aspect if you’re learning Max: Alt-clicking on an object will pop open an interactive help patch with a more detailed description along with patch examples.