Blog Layout

Transparent, Luminescent and the origin of Py2MusicXML

Aaron Stepp • October 27, 2020

In this post, I'll chat about motivations for Py2MusicXML, and a little bit of music theory related to the pieces that led up to it.

In my previous post, I mentioned my previous piece, transparent, luminsecent, for recorder or alto flute and electronics. This piece was commissioned by Eva Legêne after hearing my work Beer Garden while I was in residence at the TC Steele Historic Site. The resulting work engaged with algorithmic composition, and suggested the future research with Py2MusicXML. This post will communicate some of my predilections with algorithmic composition, a specific use in transparent, luminescent, and how this led to Py2MusicXML.

Algorithmic Composition

Some people (me included) find it interesting to use computers to make music. Because computers are really just dumb machines that follow whatever set of instructions we give them, it can be fun to give them instructions to make music. They'll just follow it explicitly. This isn't really that new. Mozart invented a musical dice game that had different parts of phrases on dice that you would throw to randomly compose a composition. The thing is, a computer can "throw the dice" a lot of times very, very quickly. This leads to lots and lots of possibilities.


So, in transparent, luminescent, I used algorithmic procedures to generate chords and melodies. It sounds fancy, but just required a little simple programming. I used Python to create a small script that would take several intervals to devise a melody. These melodies were then "performed" by the computer, using the lovely music software RTcmix.


Well, it's a little more sophisticated than that...

Orchestration in Computer Music

RTcmix makes it easy to use Python to write a script that also can include the RTcmix instruments. I used Python to generate the melody, as well as doing playback. This was great! I had a melody (and even some chords!), but things sounded rather naked. It was just one beer glass being transposed over and over.


I thought to myself, "this could be dressed up!" and used RTcmix to play other glasses from the collection. This added some color to the lonely transposed beer glass. These additional beer glasses are not tuned, however, and are mixed more quietly so the pitched glass carries the most weight in our ears.


These elements were used simple to create one very long melody in the middle of the work. A section of that is shown below, where the top line is the alto flute, and the bottom two lines are the electronics.

Composing "against" the Computer

If you're able, you can see the melody is rather slow and long, but occasionally is mildly syncopated. Below, I've added the set class notations for each trichord above in brackets. (If that sounds very strange to you, here's a link that might help: Wikipedia on Musical Set Theory.)

The changes throughout this section are restricted to a small set of intervals, and, therefore, trichords. Most trichords feature a minor second, many feature a tritone, and many feature a perfect fourth. There's a few major and minor thirds, too (especially that widely-spaced diminished triad!!). This is all a feature of the software written to create these chords.


In Python, weights were given to pitches, and a Markov Chain was generated using them. Other composers have used Markov Chains before, and this is far from the only piece I've used them in. Basically, there's a set of chances that evaluate which interval will be next, based upon the last one. For instance, if there was just a major second, there could be a 33% chance there's another major second, a 33% chance of a perfect fourth, and a 33% chance of a tritone.


This allows for the computer to create a pseudo-random trip through these chances, and generate a sequence of pitches. The same process was generated for the rhythm. Combine the two lists, and, ostensibly, you have a melody! But, what to do with it...


I composed another melody against this melody in the recorder/alto flute part. I constructed the melody of the same intervals as the beer glasses, but allowed myself a little more of a... human touch, shall we say. I basically devised some simple contrapuntal rules for set theory, and gave myself even more rhythmic freedom than the fifth species of counterpoint gives.

A couple closing thoughts

I'll keep talking about this as time goes on, and probably will come back to this piece. People like it (including me!) and it's quite enjoyable to talk about.


FYI - the recording elsewhere on my website is a live recording my the amazing and limitless flautist, Kelly Sulick. Thanks for such a wonderful performance, Kelly!

By Aaron Stepp October 20, 2020
Aaron Stepp, composer, introduces his software Py2MusicXML. A brief summary of some possible tasks is included, as well as an introduction to his reasoning for Python as a compositional language.
By Aaron Stepp October 14, 2020
Aaron Stepp, composer, introduces his blog that will engage with new music, music composition, algorithmic composition, programming, Py2MusicXML, notation, and other topics.
More Posts
Share by: