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.