Using the pygame midi module. To generate Bach-like melodies, learn markov chains from all Bach sonatas. Each markov state is a tuple (pitch, duration). Learn one chain for major scales, and one for minor scales. See http://en.wikipedia.org/wiki/Markov_chain#Music