"I tell you: one must have chaos in one to give
birth to a dancing star.
I tell you: you still have chaos in you."
- Nietzsche
"Groo does not give up! Even if it does not work,
Groo will do it again and again and again!"
- Groo the Wanderer
Cakewalk provides a programming language, CAL. CAL, however cannot perform recursion (when a function calls itself), as is needed in implementing the Fractal Sequencer. Due to this and other limitations, I implemented the algorithm as a Windows .dll written in C, and I pass notes back and forth between the Fractal Sequencer and Cakewalk using CAL.
The CAL program and the source code to the .dll it
invokes are available for download on the Downloads
page.
The rule is the musical phrase to process. The
rule must be very carefully selected - minor variations in the input rule
yield dramatic changes in the result - not all appealing...
Iterations. How many iterations the program should perform.
Minimum Duration. The minimum duration of an output note. The Fractal Sequencer will not substitute any individual note with a scaled and transposed copy of the rule if it would result in a note that is smaller than the minimum duration. Although this may cause 'uneven' application of the algorithm - some portions of the rule may be iterated more times than others - it results in far more consistent and listenable output.
Chromatic/Diatonic Transposition Mode. Either chromatic or diatonic transposition may be selected.
Key signature. The Fractal Sequencer must know the key signature in order to perform diatonic transposition properly.
Timebase. The MIDI setting for "timebase" specifies
the number of "ticks" that exist per quarter note. This setting can greatly
effect the output of the Fracal Sequencer. In MIDI, this usually defaults
to 120. When using the Fractal Sequencer, it makes sense to use a timebase
that will allow for the most iterations and that will reduce mathematical
rounding errors. 120 = 2x2x2x3x5, but 96 is 2x2x2x2x2x3, which allows a
more exact application of the algorithm for pieces in 4/4 time. I use 96
most of the time. Pieces with triplets or in 3/4 time may require a different
setting.
The bottom line is I developed my own mechanism for
performing transpositions that leaves no gaps in the logic at all. The
exact details are spelled out in the source code available for download
on the Downloads page.
Result003.mid - First Three Iterations.
Result012.mid is my
very first attempt at a string quartet.
In Method II, the different notes in a single input phrase are assigned to different instruments by using different MIDI channels in the input phrase itself. The Fractal Sequencer is invoked. The results are all crowded in one output track. I then use a Cakewalk-provided utility that splits the output based on the MIDI channel of the MIDI events within the track.
The results of Method II are multiple tracks of music based on the single input phrase. What is absolutely mind-boggling about this approach is that each note played by each instrument is based 100% on each note played by each other instrument... The four voices interact with each other in very complex ways...
Method II output examples: Result015.mid,
Result016.mid
Date Last Updated: 4/23/01
Page hits:
Home | Why
| Self Similarity | Approach
| Results | Questions
| Downloads | Links
Questions & Feedback