Fractal Tune Features

Play & Create Tunes as intricate as snowflakes - Features
You can find most of these options in the Seed Options window])

Seed Options window - screen shot
http://www.robertinventor.com/software/tunesmithy/images/screen_shot_seeds_opts.png

Screen shot of the Seed Options window - shows buttons that bring up the other options mentioned on this page, and a few other controls such as to vary how many layers the rhythm is fractal for, to ground the seed at a layer to prevent the tune wandering too high or low, and to vary the volume for echo effects in rests

Original tune
This is a canon by augmentation. You can play each line of the canon in a separate part, or choose which part to play according to the number of notes played so far, position in the arpeggio, etc.

top

Fibonacci rhythms
This is one of David Canright's ideas - to adapt this discovery of pure maths to generate a rhythm.

See his Fibonacci Gamelan Patterns.

The rhythm never repeats exactly at any speed, but because of it's fractal structure has a kind of regularity to it that stands in for the conventional rhythms. More exactly - each layer of the tune has long and short beats, each made up of long and short beats of the next faster layer, and it is done in such a way that each layer plays the same pattern of long and short beats, but never repeats.

There is a surprising connection here with Penrose tilings, as it happens, as the fibonacci pattern of beat sizes crops up as the widths of the wide and narrow rhombi as you traverse one of the rows of a Penrose tiling.

top

Fibonacci Tone Scapes
Here the idea is that the pitch goes up and down depending on whether one plays the short or long beat of the fibonacci rhythm. Most choices of the intervals to go up and down by will cause the tune to rapidly drift up either and down in pitch as the tune progresses - but FTS is able to find solutions for you that will keep the overall pitch of the tune steady for hours on end.

This idea is also related to Penrose tilings in a different way. You can get a two dimensional Fibonacci tone scape by traversing the Penrose tiling along its edges from tile to tile, if you assign a prime number (usually, doesn't have to be) to each direction, and treat the edges as intervals so e.g. the edge in the 5 direction is a 5/4 - a discovery originally due to Erv Wilson.

This fibonacci tone scape with a fibonacci rhythm, if you keep to the original rhythm and don't vary those L and S parameters - then it corresponds to both the pitches and the beat sizes you get by traversing one of the rows of a Penrose tiling.

top

Polyrhythms
You can make polyrhythm fractal tunes with e.g. 3 beats in one layer for every 5 beats in the next and 7 beats in the next one, or whatever, any choice of numbers you like and any number of simultaneous beats up to ten simultaneous polyrhythms or thereabouts (depending on number of beats in each one).

top

Alphabet Seeds
You can use a name, code or phrase as the seed. For instance, one can use gene fragments as the seeds. They can also be used for the volumes and timings of the notes in the seed.

top

Scales for Layers.
These are fractal tunes in which each layer plays in a different scale, and the scales are stacked on top of each other. E.g. you could have a conventional pentatonic melody in just intonation in the second layer, and have the first part play phrases in septimal minor above each note of the melody, just by way of an example.

top

Seeds for layers
Each layer of ornamentation of the tune can have its own seed and these can be rotated to other layers as the tune progresses.

top

Permutations
Various ways of permuting the seeds as the tune progresses, also reflect, rotate, reverse the rhythm, etc.

top

Custom voices
Make your own custom voices for the tunes based on midi voices - but for instance, you can double them as an oboe + flute (in unison or at any desired interval apart), or have a percussion instrument that comes in every so many notes etc.

To find this feature in Tune Smithy - go to Voice | Custom Multi-Instrument Voices | Edit Custom Multi-Instrument Voices ( Ctrl + 37 ). Copy one of the presets, whatever is closest to what you need. Then copy its instruments or delete to change the number of instruments it plays, and configure each instrument in the custom voice using Edit Instr ( Ctrl + 44 )

You can set the instruments of your custom voice to play chords as well - see again, custom voice using Edit Instr ( Ctrl + 44 ).

Another thing you can do is to make a new custom voice using one midi instrument to play the partials of another timbre. For instance, you could have glockenspiels playing all the partials of an oboe. The result sounds somewhat between an oboe and a glockenspiel.

top

Seed Skips
This is to do with the way the tune is made up of seeds one layer at a time. Instead of the usual construction, where each note in a slower layer of construction of the melody continues through the entire seed in the next faster layer, the note in the slower layer can change in the middle of the faster seed.

This changes the melody line and also makes the tune more contrapuntal for tunes where Parts | Choose Parts By | Layers is selected, or Parts | Choose Parts By | Other for formulae involving L - because parts set to play slower moving layers can change notes in the middle of a faster moving seed.

top

Extra Formulae
Here you can vary how the note numbers are generated. Use H for the original fractally generated melody line - and the formula can involve various variables such as the number of notes so far played, number of seeds so far, position in seed etc.

If you want you can even override the way of generating the numbers completely, e.g. something like 8*sin(t/5) would generate a tune that goes up and down in waves continually (where the 8 and 5 there can be varied to change the amplitude and duration of the waves)

Or to add waves to the existing melody, use the likes of H + 8*sin(t/5).

Etc. Lots of possibilities here.

top

Chord Progressions
You can use chord progressions with your fractal tunes. You can use any of the normal types of chord symbol - Cm, Cdim7 etc, or the roman numerals type symbols as well (classical or popular style). For details see the Chord Player.

The chord progressions change the main window Arpeggio, which will move through the chords in the progression. The effect of that is that all the tune notes belong to the current chord in the progression.

top

Scripting
You can script any tune smithy parameter that you can change in the interface, so that it switches on or changes its value at a particular time in the tune. For instance you can change the instruments, change the tempo or volume, change the number of parts in play, indeed change anything you can change in the normal way that affects the tune.

There is an auto scripting feature which automatically scripts a command whenever you make a change in the interface. The scripting also uses the closest one can to plain English, so it is readable.

For instance, to change the seed and tempo at 30 seconds, you would use:

Time 30 (secs)

Seed = 0 -1 2 0 Tempo = 60

(the (secs there is just a comment to help the reader - anything after an ! is a comment, and you can also add comments to the end of a line without an ! if the instruction only accepts a fixed number of numerical parameters all of which are present)

You can also morph a parameter slowly from one value to another over a period of time, e.g. for a crescendo or accelerando.

Here is an example to show how to script a tune that gets faster, and at the same time quieter - an accelerando and diminuendo simultaneously:

Time 0 (secs) Volume = 100 Tempo = 60

Morph Tempo Morph Volume

Time 1  0 (secs) Volume = 20 Tempo = 240

You can have any number of parameters morphed simultaneously in this way, including whole number ones like the number of parts in play.

There are also a few extra features you can only do via scripting.

You can also repeat a sequence of scripting instructions, e.g. one could repeat the instructions just given to repeatedly speed up and slow down the tempo every ten seconds, or whatever. You do that using a similar system to the repeats in music - you have a start and end repeat instruction, and even can do the likes of a jump to a coda from the middle of the instructions on the third repeat or whatever.

Another thing you can do is to replace the Time instruction by a bars instruction, where each repeat of a seed in the fastest layer is considered to be a single bar:

bar 0 Volume = 100 Tempo = 60

bar 10 Volume = 20 Tempo = 240

The Morph instruction can't be used with Bars because the bars are of variable length so there is no way for the script parser to tell in advance how long it will be until the next bar - so how quickly or slowly to morph the parameters. But you can mix bars and times in the same script:

bar 0 Volume = 100 Tempo = 60

Morph Tempo Morph Volume

Time 1  0

bar 30 Volume = 20 Tempo = 240

The script is processed sequentially - so if bar 30 happens more than 10 seconds into the tune, it will wait at that point before going on to the next instruction.

For details, go to the Tune script window and show the Ex. script.

Techy Note
This script has an extremely reduced instruction set, as scripting languages go, as it has no loops, variables, or user defined routines etc. It is designed for a particular situation and goal, just to let users vary the parameters in the user interface at any desired time during the tune.

In particular, you can't use it to add your own routines to FTS in the way that I can add new routines to the native code. It is only intended for varying parameters already in the GUI plus a few other things I may from time to time add to be used only within the script, and the only thing you can do with them is to set a fixed time to play them - or a recurring time using repeat sections.

It would be possible to add on a script that could be used to write your own routines to control events in FTS. I may look into that later on - but the design goal there is so different that it would need to be a new script, maybe even let the routines be called from the existing script, but the language would need to be different. The existing script wouldn't be appropriate for such a purpose.

The aim here was to have a script that is easy to read, uses words and phrases from the interface, and that lets musicians use flow directions similar in form to the ones they already use in their composition. So it is very much designed to be friendly for composers and other musicians with none or limited programming experience, while at the same time to have all the flexibility anyone may need for this particular situation. top

Tempo map
Superimpose a tempo map on top of the tune so that it changes speed at various points as it progresses.

Record all the changes you make to the fractal tune into the tempo map too, so that the tune also changes as it progresses.

top

Evolving play list
This is a tempo map made out of a sequence of several fractal tunes - like a play list, but an evolving one- each time you go round the sequence of tunes, the notes you get will depend on the notes played earlier in the tune, so they will change each time, rather than repeat exactly as they were last time around.

[http://robertinventor.com/software/tun