Graphic: Phiroze Parakh

VARIATIONS: Algorithmic Composition for Acoustic Instruments
Bruce Jacob

This page is about variations, an algorithmic composition system developed by me (BLJ, email address). It produces scores for acoustic instruments, as I am more interested in hearing it performed by live performers than realized upon synthesizers and samplers. I am also more interested in traditional instrumental music than the "beep snort growl" music heard in many computer music concerts and publications today.

So call me a purist.

The bottom line: I want to write more music than what I have time to write. To this end, I've represented my personal composition methodology in a set of algorithms which my computer uses to write music for me. Since I do not have time to listen to everything the system creates (not all of it is good), I also developed a set of filters that "listen" to the music and grade it.

The system is comprised of several parts: one which generates music but pays no attention to the harmonic content, one which filters out the harmonic content that I don't care for, and one which takes small snippets and arranges them into larger pieces. The components are called the COMPOSER, EAR, and ARRANGER modules, respectively. The composer is hand-coded to produce music in a manner close to the way I do, and therefore the structure of the music is similar to that which I compose. The ear is evolved using genetic algorithms to become a filter approximating the way I listen to music. This architecture has been in development since the fall of 1994, coded in Perl5, and is about 5000 lines of code.

occam and nebula

The variations architecture has two implementations right now. The first, variations 1 or occam, focuses mostly on the EAR module, and how to use a musical filter to compose music with the least amount of human interaction. The second, variations 2 or nebula, focuses on the COMPOSER module and is concerned with thematic development. The first version of the system made simple variations on melodies and built up themes melody on top of melody. The newer version, in production as of this writing, is more intelligent at identifying the primary motives of the piece and extends them rather than simply modifying them.

The Music

The following GIFs, PostScript, and audio files are all fragments and themes that come from the variations system (occam version) while in development over the period from Fall 1994 to Spring 1996. Earlier fragments tend to be less harmonically complex than later fragments. The multiple parts are collapsed onto a single piano staff to fit onto the page, but these pieces are mostly for string quartets. The newer music is for larger ensembles. Each is just a fragment, a piece of a larger whole, and none have been edited (the computer often gets repetitive and the output needs to be trimmed a little).

The longer pieces are loose collections of themes related through development and self-similarity. Traditional compositional methodology is scrapped here, as it is very difficult to reduce to an algorithm. Remember, the idea is to have something written as much as possible by the computer. Sorry, no sonata form.

Sound Recordings

The following are the movements from Hegemon Fibre, a symphony that is finally finished, now that I discovered on the original DAT a fourth movement that in a fit of stupidity I forgot to transfer the first time around (it is the new second movement). The piece is not `about' anything (it is not program music, for instance), but it holds as its prime influence the effect of digital communications on today's world (thus the name, obviously). Okay -- maybe it's an overdone theme, but I liked the name immensely.

These files are five to ten times larger than the others, and the music is that much longer. The first movement is something like 11 minutes, the second is 9, the third is 8, the last is 5. The sound-producer is a single Kurzweil K2000 (gotta love quality sounds). The four long pieces are (finally) in MP3 format. All the shorter files are still in Sun's .au format. No, I do not intend to make any MIDI files publically available (even if I had any). Sorry.

CHEEZY TEXT ALERT: Beware -- the following pieces and excerpts have cheezy descriptions that were written years ago while I was still a bit of an idiot. I just re-read them for the first time in five years, and I was a little irritated -- please note that the emotions described were not intentional -- I did not compose the music, so I wrote about it as a listener, not a composer.

The following files are Sun's audio format, 8-bit ulaw, mono, 8000 Hz. Yes, I know, they sound like someone is playing you a record on a cheap turntable over a long-distance phone line. Deal with it. These fragments are early output of the system -- there are only a few voices, and there is not a whole lot of stuff going on. Nonetheless, they give a fairly good idea of what the system produces. All the voices are strings. Each file is about a half a megabyte, one to two minutes in length. The files are in an order that I think it makes sense to listen to them, not in order of "how good they are." My personal faves are the first and last.

Enjoy, and I always appreciate feedback -- both positive and negative. Thanks.


Here are some old scores that didn't get deleted in the Great Electronic Music Studio Mix-up, in which all of my files were accidentally purged.

Shorter fragments:

Longer fragments with better resolution (each about 10K):

Publications (HTML-ized for the masses, PDF and PostScript also available)

The following are descriptions of the various aspects of the project. Each is an HTML document and has links to PostScript versions.

The Code

Ahhhh, what the heck. For the past few years, I have been telling
people "no" for largely aesthetic reasons -- I wanted to live by the
principles I espoused in the "Creativity" article. But it has been
years since I have worked with the software, and it will likely be
years before I devote any serious amount of time to it again.
So -- rather than watch it rot away, I think I will make the code
publicly available. Beware -- it is a large set of undocumented,
mostly uncommented perl scripts. Use at your own risk, and I will
not be offering anything in the way of technical support. The
playback mechanism is not included (I do not have it anymore); it was
a MAX script that ran on the Macintosh at the Electronic Music Studio.
However, I did write some (mostly buggy) scripts that converted the
intermediate language into MIDI files ... these are included, for what
they are worth. The compressed tar file can be found at the following URL:
Good luck, and let me know how your experimentation turns out.
In particular, if you come up with any cool music, I want to hear it.

email address