The program uses a random number generator to decide many of the details in the score. The random number generator is controlled by a seed. I can just change the seed to get multiple pieces that are all similar, with the same gross structure.
A fundamental parameter is the tuning system. I have some code that can work with more general tuning systems, but most of the code is limited to dividing octaves into some number of equal steps. So the number of steps per octave is a fundamental parameter. The piece linked below uses the tuning system where octaves are divided into 53 equal steps.
A table of interval scores is constructed based on a set of prime numbers. So another parameter is the prime numbers that are to define consonance. The primes 2, 3, and 5 are a common choice, which is used in the piece linked below. Sometimes I will add the prime 7. So far the largest prime I have used is 19, but the code isn't really limited. The construction of the interval score table does slow down as the number of primes increases, though. The table construction code has some other paramters that I'll tweak. The program writes the table to a file, so I can check that file to see if the table looks reasonable. If it doesn't, I can tweak some parameters in the code to make the table look better. Mostly it's just a matter of getting a good range of scores, so some intervals will be much preferred over other intervals. But the range shouldn't be too extreme, or the pitch selection algorithm can get stuck too easily.
The rhythmic topology is another key parameter. The basic rhythmic parameters are the length of each measure and the number of measures. The measures are arranged in a cubical array of arbitrary dimensionality. In the piece linked below, each measure is about 35 seconds long, and there are 64 measures, arranged as a 4x4x4 array.
Measures are divided into individual notes of varying length. I have used several different algorithms to divide up measures, each of which has multiple parameters.
The number of voices in the piece is another parameter. Here I am using 3 voices.
That's a sketch of the control I have over what gets generated! Here's the latest output: 53edo 4x4x4 scale 34.

No comments:
Post a Comment