I like music.
I also like computers.
I decided to combine them both and create a computer program that could
compose jazz music. My intent was to create a system that mimicked the thoughts
and feelings of jazz piano players as they
improvised. My project was built with a fuzzy-logic framework - this means that
concepts such "too much", or "not enough" are easily
represented as rules in the system. In these fuzz rules, I encoded some basic
music theory (chord structure, rhythm, scales, simple chord progressions) as
well as other, more ethereal concepts: (too boring, not enough syncopation, too
much bass, too loud). The system worked in this way: The overall shape of the
song was determined by a fractal pattern called the dragon curve, which produces
a very nice classical contour to the music. Having a fractal for a contour is
especially nice because it gives echoes of itself throughout the song. This
guiding contour was modified locally by the thoughts of the composer. Individual
notes were generated in a stochastic manner, where different choices are
dependent on several state variables, including the current mood. For example,
if the melody has been low and slow lately, each new cycle of note generation
the 'composer' would become more anxious and 'feel like' moving to a higher
register, or to a faster tempo. The weightings of note location and speed would
be altered to affect this change in attitude.
Changes did not take place immediately. Most changes were gradual since
they would have to fight a musical 'momentum' modeled after a dampened spring.
On the other hand, abrupt changes were possible, since random jumps were
programmed to occur from time to time.
The results were disappointing, yet encouraging. Most of the time the
generated songs had a dead feel, similar to some video-game music. However,
there were definitely places where exciting things were happening - there was a
bit of a groove and the music felt alive! One thought I had was that an increase
in Jazz theory would probably improve the sound. Unfortunately, there is no
simple heuristic to follow that guarantees improvement; and there is no
objective metric that can be used to measure the "jazziness" of the
system.
One modification was made to the system. The fractal pattern was
removed, and the system was modified to keep track of a single parameter that
changed over time (In practice, a midi keyboard provided the input). This
parameter was then reflected musically in real-time. For example, if the
parameter moved in large increments and changed discontinuously for a certain
period of time, the 'composer' would respond by being more jumpy and have
shorter note durations. If the parameter had increased frequency of input, the
music would increase the tension and volume, while a relatively docile parameter
would result in calmer music. The goal of this modification was to explore an
ambient, streaming method of representing current trend information.