Graphic: Phiroze Parakh
VARIATIONS: Algorithmic Composition for Acoustic Instruments
This page is about variations, an algorithmic composition system
developed by me (BLJ,
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 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.
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.
hegemon-fibre-1.mp3, Movement 1: Fanfare -- 11:39, 13MB.
Begins with a few solo notes that seem to question what's going on?
Turns into the ponderous fanfare, and becomes introspective and brooding.
A sudden realization drives all into disorder.
Things go back and forth between light/uncaring and brooding just a little (sometimes
a lot), with the change-versus-stasis theme winding through in a few guises.
Alternatively, you can look at it like the summer day which begins bright and sunny
with a few refreshing showers, but then the storms come.
It ends with the stasis-in-change theme, and does not end definitively.
hegemon-fibre-2.mp3, Movement 2: Dawn -- 9:37, 11MB.
Begins with the sunrise, relatively tonal and calming.
Sort of like the ocean, with large swells that rise and fall.
Questions, answers, affirmations of solidarity, but quite a lot of melodrama.
A bit of sunshine cuts through the air, and the light spreads slowly, turning
at last to heavenly radiance that envelops all.
Thunderheads roll in the background, the theme turns to questions, accusations.
Reason takes over in the end.
hegemon-fibre-3.mp3, Movement 3: Dissent -- 8:40, 10MB.
The last part of one movement (the first half was truncated).
Worry and fright are in the air, possibly verging on terror.
They are replaced by a steady rhythmic beat, as if an army is returning from a Pyrrhic victory.
A rumbling conversation ensues, which seems very serious but ends up happily enough.
Themes from the original fanfare surface and the movement cuts off without warning.
hegemon-fibre-4.mp3, Movement 4: Concordance -- 4:54, 5MB.
Revisitation of part II: Again the sunrise, tonal and calming.
Then chaos crashes in for a bit and puts a lot of doubt and argument into the air.
A clearer voice takes all the discordant themes, blends them, and takes over for a bit,
but the conclusion it reaches is a dirge.
The change-in-stasis theme winds itself into the dirge, and turns it hopeful.
Then the sun peeks out again and everything seems fine and dandy. For now.
quartet-1.au, 526784 bytes.
A nice opener. Boppy and jouncy, a little hesitant, like a fawn trying out its legs
for the first time. Modestly triumphant at the end.
quartet-2.au, 654432 bytes.
Sounds like a herd of cellos trying to kill each other with song. Not my favorite, but
others seem to like it a lot.
quartet-3.au, 539912 bytes.
Very symbolic of the changeless in a constantly evolving world.
Both static and changing at the same time.
quartet-4.au, 916192 bytes.
A nice closer. Triumph, with an equal dose of tragedy.
Enjoy, and I always appreciate feedback -- both positive and negative.
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.
Longer fragments with better resolution (each about 10K):
Seed=101, Ear=6 (page 1 of 2), and
Seed=101, Ear=6 (page 2 of 2).
After a swelling intro, this opens up the piece. It becomes
a recurring theme, changing subtly each reoccurrence so that
at the end it is drastically transformed, but still recognizable.
This is a transitional theme, but is one of the several tying the piece
Seed=19, Ear=1 (page 1 of 2), and
Seed=19, Ear=1 (page 2 of 2).
A longer fragment (actually extends a few pages more) that serves
as a basis for the ending.
Something more recent.
This is more recent, but looks lousy. It's the version that survived.
Yet another theme, but missing pages beyond the first. Oh well.
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.
- COMPOSING WITH GENETIC ALGORITHMS.
Proceedings of the International Computer Music Conference,
Banff Alberta, September 1995.
Describes the variations system, the EAR module in particular.
- ALGORITHMIC COMPOSITION AS A MODEL OF CREATIVITY.
Organised Sound, vol. 1, no. 3; December 1996.
Special issue on algorithmic composition.
Describes the variations system, the COMPOSER module in particular.
It is mostly a generic argument for (or description of) algorithmic composition.
- THEME DEVELOPMENT IN ALGORITHMIC COMPOSITION.
Describes the nebula version, in which the COMPOSER is
modified to create more complex developments of themes.
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.