Study #1: an Experiment in Computer-Assisted Progression

by James Bohn

One of the most powerful aspects of tonal music is the concept of progression. This element allows a composer to create expectations in a listener, which can be either fulfilled, or denied. It can also create direction in piece, so that a series of events can be heard as 'leading' towards a goal. Progression is not limited solely to tonal music. Atonal music can also lead a listener to a goal that is either fulfilled or denied. There is a vast variety of ways that this concept can be utilized in a piece of New music.

Most of my compositions from the past three years deal directly or indirectly with progression. Most frequently simple parameters (volume, frequency, density, etc.) are incremented in order to create a gradual change that lasts for a passage or an entire piece. Several progressions of this nature are often presented simultaneously either to reinforce each other, or in order to create a counterpoint where one aspect of the music increases while another decreases. I find that this sort of process is so effective that the individual events that comprise a progression are less important than the progression itself. Thus, such a composition can be viewed esthetically as a network of interacting processes rather than as a series of specific musical events.

If these networks of interacting processes are expressed in terms of computer code, such a piece of music can be composed with the aid of the computer. This was one of my personal compositional goals with Study #1 for computer generated tape, which was composed and realized in the University of Illinois Computer Music Project.

This composition utilizes only two classes of sounds: sine tones and noise sounds. The panning of both types of events are controlled by functions consisting of twenty-one steps. The noise sounds are filtered, and the amplitude, center frequency, and bandwidth of the sound are also controlled by functions comprised of twenty-one steps. These functions are randomly generated by the computer, with one of the only constraints being that increments of the time factor, expressed in percent of a given time, is regular. The two sounds that are used contrast each other greatly. This contrast is emphasized by having the noise sounds be relatively short, and the sine tones relatively long. The composition presents only one class of sound at a time, with slight elisions occurring during times of change.

The program, which was written in ANSI C, used to generate this piece is in two parts. The first part determines the structure of the composition . . .

i=0;
done=0;
state=random()%2;
chance=5;
while (done==0)
  {
  piece[i]=state;
  i++;
  if (random()%chance==1)
    {
    state=(state+1)%2;
    chance=chance+(random()%(chance / 2))+1;
    if (i>180)
      done=1;
    }
  }

Here the variable i represents time in seconds. The sound choice is determined by state (0 for noise sounds, 1 for sine tones). Thus, piece represents the sound choice for every individual second of the composition. The alternation between the two possible types of events is controlled by chance. Everytime a change occurs, the probability that a change will occur is decreased. The piece ends once the first change occurs after three minutes has elapsed.

The rest of the program is a loop, which outputs the instrument cards that are used to realize the sound. On every iteration of this loop, the program checks to see if sine tones should be generated. If sine tones should be active, twelve sine tone instrument cards are output by the program, one for each pitch class. As the composition progresses, the possibilities for octave choice is increased.

octave=random()%((i / 250)+1);
if (random()%2)
  octave=octave*(-1);
octave=octave+8;

Here the variable i is in tenths of seconds, while octave represents the octave of the sound to be generated, with 8.00 being equivalent to middle C. The starting time of each sine tone is randomly generated to occur within the first half of the segment which is devoted to sine tones.

startime=(i+random()%((amount / 2)+2)) / 10.;

The variable amount represents the duration of sine tone section. All three variables are in tenths of seconds. The duration of each tone is a random choice of at least half the length of the section, and no more more than its entire length. The amplitude of each tone is random, with two modifications. The further into the piece the sound occurs, the greater the amplitude can be. Likewise, the greater the duration of the tone, the greater the duration of the tone, the greater the possibility is that it will be louder than the other tones. The attack portion of the sound is at least a quarter, and no more than three-fourths of its duration. The decay is the compliment of the attack, within the length of the event.

After generating, twelve sine tones, the value of i is increased by amount so that on the next iteration of the main loop, noise sounds will be generated. The probability that a relatively longer duration will be assigned for each noise sound increases as the composition progresses. An index which peaks at the three-quarter mark of the composition is used to control the probability that generate the amplitudes. This index is generated by a routine called do_index.

float do_index(int i, int length)
{
float index;

if (i<(.75*length))
  index=i / (.75*length);
else
  index=(length-i) / (length*.25);

return index;
}

In this routine, length represents the duration of the composition in tenths of seconds. After each noise sound is generated, i is incremented by a random number between one and five, inclusive, so that a somewhat consistant, yet unpredictable density is achieved.

In terms of composition, this piece is rather simple, mainly because only two motives are used for the entire piece. However, it is also a somewhat detailed piece, mainly through the use of the twenty-one stage functions that were used to control some of the sound parameters. The simplicity of the piece allows for a clarity which emphasizes the composition's sense of progression. The progressive character of the piece is established mainly through the duration and amplitude of each event in the composition. It is also established through the voicing of the sine tones, which becomes more open, as the piece progresses. Progression is also established through the structure, as each section is usually longer than the previous section.

One potential problem with progression is the possibility of predictability. This is avoided in Study #1 through the use of randomness. One could say that the process that generated this composition has a tendency towards certain progressions. However, it is only a tendency, and at any point, this overall tendancy can be denied rather than enforced. My personal favorite part of the piece occurs at 1:29 for six seconds. By this point in the composition there is a tendency towards sections longer sections. For these few seconds, there is a brief statement of noise in between two long sine tone sections.

It would be possible for me to generate different versions of this composition, by simply changing the seed value, and executing the program again. I have no plans to do so at present, but if I did, I would create a series of pieces that differ in details, but are in general very similar, and each individual realization of this composition would manifest progression in the same way.

I feel that the simplicity of this composition prevents it from being a great piece of music. However, I do feel that it offers much to listeners. Particularly in the way that a traditional idea such as progression is explored in a non-standard fashion using less than common sounds. Much of my enthusiasm for this piece lies in the potential for the ideas that created it to create compositions that are more complex and contain more details.

back to news index


  Home | EMS | CMP | Photos | Admissions | Resources