Project courtesy of MIT student, used with permission.
This assignment draws inspiration from traditional Ethiopian music. The krar, a 5-string harp-like instrument is strummed in quick motions with tight clumps of fast ornament and longer notes, typically in some 12/8 rhythm or freely. Ethiopian music is built on pentatonic scales and contains a few that Western music does not; I picked one to use called anchihoye, one of the most distinctive scales. Its tones are 1, ♭2, 4, ♯4, 6. Many Ethiopian melodies work in a scalar fashion, moving up or down the scale and only infrequently skipping tones. I thought that these two aspects of some Ethiopian music—the rhythmic density and melody scalar-ity—could be imitated and extended with markov chains.
Rhythm and melody are controlled only by markov chains of various orders between 0 and 1. I programmed an octave and a half of notes and set the melodic chain to favor notes closer together and to only rarely jump larger distances. The rhythmic chain is configured to favor fast passages but if a slower passage is played it allows for space before returning to faster movement. Various functions controlled the order of these chains. I also varied octave, bpm,and amplitude settings with a set of parameter objects such as the 1/f noise generator, basketgens, beta distributions, and break point lines.
The piece is AB. The first section is out of time and more chaotic and the second section features a repetitive beat. I used the patterns generated by athenaCL in Live, arranging them and using Live's virtual instrument selections. I generated even further diversity by speeding up or slowing down some of the passages in a particular synth instrument that resembled some type of acidic gurgle. The second section features a beat made in Live and repeating clips from the markov passages that I found to be quite creative. I was surprised how quickly the markov generation resulted in a line that was desirable.
In listening again, I think the piece became too repetitive in the B section. This is due to the short loop lengths and the 1-bar drum pattern. This is a problem I've had a lot when trying to work in Live: it is designed to be idiomatic for the manipulation of short loops and not long-term behavior. AthenaCL can generate interesting beated sections that are groovy but with slightly varying parameters like amplitude to maintain interest. I also felt the virtual instruments used were too far from traditional instruments and didn't give the sound I had wanted (something closer to strings). I was satisfied with my ability to write markov chains that resembled how the original instruments sounded.
After I completed the piece, I tried to compose everything in athenaCL. The experiment was going well and I was hopeful about its results but about 75% of the way through the process I got some strange error message and didn't know how to continue or resume. The log from that session is included.
Design Report 2 sample: Ethiopian krar-inspired, Markov chain generated
Code files (ZIP) (This ZIP file contains: 2 .py and 4 .mid files.)
Also available for download from iTunes U (MP3 - 3MB).