What?Generating real-time midi events from python!
Why?For fun! Dabbling with python and algorithmic composition.
How?Unpolished code available from github: Twenty five shades of random.
Ok, ok, here's the manager's summary. Really, you should check out the code for all the details.
A score is made by scheduling activation and deactivation of score generators in time.
Score generators consist of a strategy (e.g. pick random notes and add random octaves to them, and choose random velocities, and ...) and constraints (e.g. the notes must come from a given list of allowed notes, the durations have to be a multiple of pi, ...).
There's a scheduler class that for any given time can tell you what score generators are supposed to be running or stopped. More philosophy and background information for this piece can be found on my music blog: A Touch of Music.
Youtube movie with the result of running the program once:
Each time you rerun the program, you get a different composition in a very similar style.
Creation of this piece was heaps of fun! For further experiments in algorithmic composition (if any!) I probably owe it to myself to check out in some detail the promising supercollider environment.