3.- How songs are constructed

 

Blocks


The program generates monophonic sequences with length of 1 to 8 measures. These sequences are called "blocks". To generate those blocks, the program follows these steps:

1) By extracting information from a fractal set, the program generates two sequences of integer numbers (for example: 34, 12, -5, 102, -44, 11, ...). Those sequences of integer numbers are called "microsequences" and they are periodic, which means the sequence repeats itself after a while.

2) A sequence of note durations is generated until they fill the length of the block (1 to 8 measures). That sequence determines the rhythm of the block, and you can model it by changing the probabilities for each duration value. For example, you can specify a block to have 75% of quarter notes and 25% of 1/8th notes. You can also specify if you want there to be dotted notes or triplets.

3) Once the rhythm of the block is generated, the program maps one of the microsequences (sequences of integer numbers) generated in step 1 to pitch values for each note. The range pitches to choose from is restricted and they're always picked from a certain scale (B Major, for example). The other microsequence is mapped to velocity values, which can also be restricted and scaled to have some control over the dynamic range of the block.

4) That's basically it! The program can later transform the block sequence into MIDI data so you can hear the results. You can assign any General Midi instrument on any channel to that block.
 
 

Microsequences


So how are those microsequences generated? Remember they are only sequences of integer numbers, so technically you can get microsequences from almost ANYTHING. The only restriction is that they have to be finite, just so we can compute them in a finite amount of time. Being finite is not so bad. If our sequence runs out of data, then we just start again at the beginning. This way we can use a finite sequence as if it was infinite but periodic.

"Yeah" you say, "but how do you obtain them?"

Well, let's first analyze some easy sequences. For example, the sequence (4, 4, 4, 4, 4....) is a sequence of period 1. That means it repeats itself after 1 number. That sequence is very boring because if you map it to the pitch of the notes, you'll get a 1-note melody.

Here's another one: (0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2....). This sequence would make the pitch go up the scale. If our scale is a major or a minor scale (made up of seven notes per octave), then the pitch would reach the next octave and go back to the beginning after eight notes. Why? Because it has periodicity 8. This sequence is not as boring as the first one, but it's nothing special either.

How about this one: (4, 9, 3, 7, 0, 2, 6, 8, 3, 9, 3, 4, 8, ...). Well, it seems too random. In fact, I made that sequence by randomly typing digits. If we map this sequence to note pitches, the result will be the same as hitting random white keys in a keyboard instrument.

From the last examples we can see that:

1) We don't want boring sequences. That is, sequences that don't change much.
2) We don't want non-challenging sequences. Those sequences are just very easy to figure out.
3) We don't want totally random sequences. Those sequences just don't make any sense.

And that's where fractal sets come in. The sequences obtained by fractal sets are more random than our first two examples, but not as random as the third example. They're right between boring-ness and randomness. In fact, some fractals are so rich that you can choose how random you want your sequences to be. You might want to map a "boring" sequence to the pitch of a percussion part, and a "not-so-boring" sequence to the velocities of the same percussion part to give it more dynamics.

This program implements three types of fractals:

1.- Mandelbrot sets - this fractal is so complex you can get almost anything out of it.
2.- Morse-Thue sequences - this is not a real fractal set, but it has some fractal properties.
3.- Random noise - where you can control the degree of randomness.

Each fractal has its own parameters and "mapping" rules. For more information, please read the "Microsequences" part.
 
 

Macrosequences


The FMG program lets you make up to 16 different blocks (monophonic sequences 1 to 8 measures long). Those blocks can be arranged to form a whole song. The way they are arranged depends on certain parameters. For example, you can choose the probability of a block appearing during the song. You can also choose if you want the block to be "stretched" in time.

So basically, every block is associated with another kind of sequence: a "macrosequence". That sequence determines the placement and stretching of the block through the whole song. It's a very similar process to that of finding the rhythm of a block. Only this time, the program "accomodates" instamces of a block in time until ir fills the song length.
 

Now that you know how the program makes patterns and songs, it's time for some practice. Go to the next section: Making a song step by step, to start using the program.
 

< Back to the main page