A first exploration of algorithmic composition.
I've written a simple scheduler in the programming language python and I've created some midi event generators, and combined both of those to drive the software synthesizer Yoshimi and the sampler engine LinuxSampler using the jack-midi protocol. I've made the complete code available on github.
The midi events are generated based on a concept of randomness within constraints. The things you hear are randomly generated, but not in an "anything goes" manner.
Constraints are imposed to limit the disorder of the randomness. Just like harmony and counterpoint limit randomness in traditional composition, the constraints here limit randomness in the experimental composition. One could say that different constraints generate families of alternative music theories.
"Randomness within constraints" is a deep idea whose time has come. Nowadays it is extremely popular both in science (artificial intelligence) and art (abstract art) and indeed one of the basic mechanisms underlying the origin and evolution of life itself. I suspect that "randomness within constraints" is the barren wasteland where creativity and innovation hides. In this piece, I try to explore a number of different constraints. In some cases the constraints slowly evolve, in other cases they abruptly change.Ton De Leeuw in a speech once distinguished between two kinds of music: "music that becomes" versus "music that is". "Music that becomes" is music that starts from a begin point and gradually evolves. "Music that is" is music that doesn't show any progression or evolution. Because the constraints I used are quite static (with some exceptions they don't gradually evolve as time progresses), I think this composition is closer to "music that is". Nevertheless, I hope that by combining different timbres and different constraints I have managed to keep the composition reasonably interesting to listen to.
Note: I do not consider "traditional music theory" (or rather: the different traditional music theory families) inferior or unnecessary (quite the contrary!), but in this piece I don't mind looking beyond its borders.
For this composition I programmed my own algorithmic composition system using Python, Rtmidi, Yoshimi and LinuxSampler with Sonatina Sound Fonts, but for a next algorithmic composition (if any ;) ) I would probably try to use the excellent supercollider environment instead.
The visualization was made with Sonic Visualiser.