I invite everyone to check out my CSound project Chamber Music, which is available for donation here:
I'm also very excited about releasing open-source the score composition algorithm I used to make Chamber Music. It is a program written in Python that outputs a score that is readable by CSound. You can download it and find out more information here:
Here is the introduction to the composition algorithm from my website:
Scorealgorithm1.py is a computer program that composes music. Some modern composers explore music that has elements that are random or not determined by the composer. Other modern composers explore music that is constrained by strict rules of composition. Finding both of these methods fascinating, I combined both techniques using a computer program. I program certain constraints into the program, and random processes create a composition that matches my constraints. This is why I created a computer program that composes music.
In deciding how to structure my computer program, I was inspired by an article by David Huron titled Tone and Voice: A Derivation of the Rules of Voice-leading from Perceptual Principles. In the article, he explains that in homophonic works by Bach, notes tend to start at the same time as notes in other voices, while in polyphonic works by Bach, notes tend not to start at the same time as notes in other voices. This is because when notes start together, they are perceived as one sound, but when notes start at different times, they are perceived as two sounds. In the article, Huron reveals that the difference between musical styles, like homophony and polyphony, can be explained with statistically-measurable musical principles, like how often notes start at the same time as notes in other voices. This, along with many other insights in the article, revealed to me that I could create a music-composing computer program that can change the style of music by adjusting statistical parameters.
But I decided to take things further. I created a computer program that can gradually transform a texture from one style into another, for example starting out polyphonic and becoming gradually more homophonic until it is fully homophonic. The program also has the capacity to create new and interesting styles that have never been explored before.
What makes the program, scorealgorithm1.py, different from many other freely-available music-composing computer programs is complexity and flexibility. While it is easy to find programs that can quickly and easily create music that follows the basic rules of music theory, scorealgorithm1.py goes one step further by allowing the composer to change the rules themselves, along with adjusting various expressive and rhythmic parameters. The result is a unique, refined composition that paradoxically has a random element in its creation.