Help for Tune Smithy Koch snowflake icon.gif

FAQ - Fractal Tunes

From Tune Smithy

(Difference between revisions)
Jump to: navigation, search
(This subject arouses vigorous debate)
(This subject arouses vigorous debate)
Line 480: Line 480:
But only humans have the perspective that lets them design and write the programs you use to verify these proofs, and the work of the programmer is never done :-( since '''''any such program as soon as it is published will immediately have limitations in the form of godel sentences which it can never verify'''''. And with a bit of work (this is in in Penrose's books) the same limitations can be seen to apply even to self-evolving programs, expert systems, neural nets, fuzzy logic, randomised programs, etc.
But only humans have the perspective that lets them design and write the programs you use to verify these proofs, and the work of the programmer is never done :-( since '''''any such program as soon as it is published will immediately have limitations in the form of godel sentences which it can never verify'''''. And with a bit of work (this is in in Penrose's books) the same limitations can be seen to apply even to self-evolving programs, expert systems, neural nets, fuzzy logic, randomised programs, etc.
One way of putting it is that any theorem proving program will always be provably buggy :-). In the sense that there will always be some theorems that a human can see to be true which it can't yet prove. And no matter how hard the programmer tries to fix this bug, he still always ends up with a buggy program at the end of it all.
===What about quantum computers===
===What about quantum computers===

Revision as of 17:35, 24 February 2010

Feel free to add more questions and answers. If you have a question which isn't answered here - for immediate help contact - and you can also add it to the Questions Pending page.

Old version - auto converted FAQ - Fractal Tunes - auto


How do I make a fractal tune (tutorial)?

See Tutorials:How to make a fractal tune

Can I use FTS to make music to sell commercially?

Yes you can. I made FTS as an algo-comp tool precisely for composers to use in this way and it is absolutely fine :-).

It's also okay to use the demo tunes that come with FTS in your own pieces. They are there for that purpose as demo tunes which you can modify to use to make your own pieces. You can copyright your own tunes made with FTS. You can't copyright the ones that come with the program - but have my permission to use them.

I reserve the right to introduce a commercial license in the future. However, I haven't done so yet, and if I do ever do it, all existing owners of FTS will be granted commercial licenses automatically, in line with my commitment to never charge for upgrades of FTS for existing users.

The installer itself is freely distributable.You may include this program on any CD compilation.You may not sell the evaluation copy. You may not charge for other users to use FTS. If you wish to use the program itself in a commercial fashion (rather than music made with it), or use the program itself to promote other commercial products, please contact me first to discuss ideas or make arrangements.

You need additional permsssion if you want to run FTS itself commercially to make music that changes dynamically e.g. to play a web site fractal tune that changes each time you visit the site, or a background tune that changes in response to events, or the like. Such uses of FTS are fine if there is no commercial or advertising element involved - be sure to contact me if unsure about the situation.

I hope this is reasonably clear. If you have any questions or want anything particular clarified then let me know.Robert Walker - [1]

(This is not to be considered as a legal document, but is just information to help FTS users understand how I see the situation).

How do a play a new seed for a fractal tune from my music keyboard?

Show one of the Seed windows from Bs | Seed...

Make sure you have In | Open Now or In | Open at start of session selected so that you can use the midi keyboard.

Select Edit from the Edit / Play / Relay radio buttons.

Now just play a musical phrase from the music keyboard. The middle C key plays the first note of the arpeggio (with the standard settings), and you will find that the notes gets shown in the window as you play. Use copy it into the main window to use with the current fractal tune. Press Clear to start each new seed, otherwise your notes get added to the end of the previous one. To use the recorded volumes and times, be sure to select By times and By volumes . That basically is all there is to it.

You use notes in the left most octave of a four octave keyboard - two octaves below middle c - as editing short cuts.

You may wish to copy or print out this list of shortcuts to have at hand while playing.

C3 - Clear seed / arpeggio / scale
D3 - Play seed / arpeggio / scale
E3 - Apply seed / arpeggio / scale
F3 - Play / Stop Fractal Tune

D4 - Set 1st note of seed to 1st note of arp.

This is in the midi notation where the number indicates the octave, middle C is C5, and C3 is the left-most note of a four octave keyboard.

So, you can go like this: C3 to clear. Play a seed starting from middle c. E3 to apply it, and F3 to play / stop the fractal tune.

After you make the seed, you can use D3 to play it on its own to hear what it sounds like before you apply it.

If you play more notes they get added to the end of the previous seed - clear it to start a new seed.

The fractal tune may use the volumes you play, or be constant volume, similarly may or may not use play rests, or use the note timings, depending on your settings for this in the Seed window. You can also change these from the midi keyboard using some of the black keys in the left-most octave of your keyboard.

For various other things you can do from the music keyboard, e.g. invert / reverse the seed etc - see [Seeds.htm#music_kbd-seed_edit_mode_shortcuts Music keyboard shortcuts for seed edit mode] :

You don't need to show the Seed window at all as you can do all this in the main window - relying entirely on the music keyboard shortcuts. To do this, first use In | Main Window Seed Edit Mode ( Ctrl + F2 ) to put the main window into seed edit mode

(with a hidden backup editable seed).

For a longer explanation - slower and with a few more details, see [Seeds.htm#Making_new_seeds_from_midi_keyboard Make new seed from Music Keyboard].

How do I make a fibonacci rhythm, and fibonacci fractal tune?

Bs | Seed Options | Fibonacci rhythm , and select Play Fibonacci rhythm .

This makes an irregular sounding never repeating rhythm with long and short beats in the golden ratio to each other. All the voices play this rhythm at varied speeds.

If you select Parts | Order of Play | By layer with simultaneous notes , then again, just like the original fractal tunes, the result is a canon by augmentation - with all the parts playing the same tune with the same rhythm, but at varying speeds.

However, this time only the first,or first two notes of the seed get used, and it now has these irregular rhythms.

With the preset rhythm settings, the rhythm as a whole never repeats, though any section of it will recur eventually at some later date.

You can also explore other patterns of long and short beats. Just go to Custom Rhythm , and select either a two or three beat rhythm - then enter any pattern of Ls and Ss, (and Ms too for the three beat ones) into the edit boxes.

Make sure that each pattern has one of the other letters in it, e.g. the L pattern needs an S in it (or alternatively an M for the three beat seeds) - and check to see if it says "found solution". If it does, you'll get a canon by augmentation again, but with some other pattern. If FTS doesn't find a solution, you'll still get some tune or other, and the notes will still follow a canon, but it will no longer be a rhythmically strict canon.

To watch the canon unfold visually, show Bs | Tune , and maybe transpose the parts to different octaves - and notice how each part shows the same pattern, at varied speeds.

For more about all this see the help for the [fibonacci_rhythm.htm#Golden_ratio_rhythm Fibonacci rhythm ]window.

How do I make fractal tunes using DNA fragments for the seed? (tutorial)

First an introduction. It is mildly fashionable at present to use DNA fragments to make music. The result can be surprisingly tuneful and structured. Goodness knows why it works so well, but maybe it suggests there is more to the world than we know about with our limited knowledge :-). The composer, musician and musical healer Mary Ackerley uses this technique a lot in her work, and you'll find some from Mary Ackerley's music page.

Anyway, I've not researched in this myself, but I did try an experimental tune to test the technique, using a DNA fragment that Mary Ackerely found at , and the result is[1.09a/DNA_music.ts DNA_music.ts] . It uses a DNA fragment from the human growth hormone. It was just an experiment to check the technique worked, but turned out to be so nice that it seems perfect for a tutorial introduction to explain how it is done.

I'll describe how you can make tunes like this.

First, after you download your fragment, you will probably want to keep a record of where you got it with the fractal tune. Do this using the Tune Info button in the main window, which can be used to add any information you like to the tune as a comment. Just type or paste the information into the information field.

Now go to Bs | Seed Options | Alphabet Seeds and select Alphabet / digit seeds

Now, if you want to make DNA music you need to use either the Protein letters or the Bases - the data is availalable in both forms. The Protein letters make wider ranging tunes. So click the button to select that.

Now just paste your DNA fragment as a new seed. You can show a window with more space for it from Bs | Seed as Text (or the A... button in the main window).

For this tune, I pasted the same DNA fragement into the position in the arpeggio , volumes , and times fields in the Seed as Text window. I moved the first two around by cutting off the end of the fragment and pasting it round to the start.

Anyway do whatever you like - you can use the DNA fragments for any of these.

Now, the seed is going to be a very long one of course. With the standard settings for FTS, you'll find that it just gets played in the first part, and the others hardly even get a look in. You can use Parts | Other to help with long seeds like this, but another method which can turn out really nicely is to use the [Seeds_options.htm#seed_pos_increment Seed Pos Increment] window, and that's what I've done here.

Here, FTS came up creatively with a really nice musical bug, so nice that I left it as it was and didn't fix it, and it is used with this tune - the seed pos increment bug. You get it if you select Cycle At instead of Cycle At pos in seed in the Seed Pos Increment window - it's because of this bug that you get those occasional very long sustained notes in all the parts - in this tune anyway.

For more about the options you can use with DNA music, and indeed with any other alphanumeric data to use for the seed, see the help for the [Seeds.htm#alphabet_seeds Alphabet seeds] window.


How do I make a fibonacci tonescape?

You start with a Fibonacci rhythm. Then the idea is that instead of using a seed, the tune goes up by one interval on every long beat, and down by another interval on every short beat. So, the tune goes up and down in an irregular, never repeating fashion, just as it does with the variation in long and short beats.

For most choices of the intervals, the tune rapidly ascends out of audible range or descends out of range. However, if you match the interval well with the proportionate numbers of long and short beats, the tune stays steady in pitch, overall, for hours at a time.

To try this out, go to Bs | Seed Options | Fibonacci Rhythm - select to play a rhythm or custom rhythm as in the previous section. Then continue to Fibonacci Tonescapes , and select Play Fibonacci Tonescape .

Now in the L column, enter a ratio, any you like, say 4/3. Then the S column will change, to 22/35 in this case, if you are using the preset Fibonacci Rhythm. The pitch drift value shows how much you can expect the tune to drift by for every note played - 2.032059 cents in this case.

If you prefer smaller ratios, with more pitch drift, then go to Optimisation Options , and set the Max denom or denum to say 30 instead of 100 (or whatever you want). Then the S column will change to 5/8 for the L value of 4/3 - but with a much larger pitch drift of -7.83255 cents for every note played.

Then, try various numbers. Some will work particularly well, such as 11/10 and 6/7 which gives a pitch drift of 0.111544 cents for the preset rhythm. Click Find first row ratios now to find the ratios which lead to the smallest pitch drift of all those in ranges of values you set in the Optimisation Options window.

See the help for [fibonacci_rhythm.htm#Fibonacci_tonescapes Fibonacci Tone Scapes] for more details.

How do I make a tune that changes in speed as it continues (tempo map)?

Bs | Seed Options | Tempo Map .

Select Use tempo map. Highlight a zone, and set the tempo for it. Set the time for each zone using the scroll bars for the Mins and Secs column. The tune will now change in speed as it progresses. To add or remove zones from the tempo map use the Copy and Erase buttons.

See the help for [User_guide2.htm#tempo_map Tempo Map].

When I change the settings, the tune changes in surprising fashion - but when I play it back I only get the last version of it heard. How can I include all those sudden changes as part of the tune?

Yes, that's how it works - the idea is that when you change the tune, you hear the new tune all the time, i.e. what it will be like when saved after your changes. So then, when you play it back, you always hear the last version, whatever it was.

However, you can also record all the changes as they happen, so that they get repeated when you play it back again. Here is how to do it:

Bs | Seed Options | Tempo Map .

Select Record fractal tune changes .

Now play the tune and make changes as it continues - this time everything you do will get recorded.

Now unselect Record fractal tune changes (otherwise you'll re-record the fractal tune changes next time you play it) and that's it done!

Click the play button to hear the tune with all the changes you made in place.

See the help for [User_guide2.htm#tempo_map Tempo Map] for details.

How do I make the evolving play list?

Bs | Seed Options | Tempo Map .

Now make as many zones as you want using the Copy and Erase buttons. Highlight each in turn and open a fractal tune into it to add it to your play list. Set the time for each zone, and if you want, speed up or slow down each tune by changing its tempo - a tempo of 60 means to use the original speed.

It's an evolving play list because each tune gets affected by the condition of the tune as it was after the one played before it, so that each time round they will be slightly different.

See the help for [User_guide2.htm#tempo_map Tempo Map].

How do I make a polyrhythm fractal tune?

Bs | Seed Options | Polyrhythms

Select Play polyrhythm .

Select a polyrhythm from the drop list, or make your own ones - see the help for [Seeds_options.htm#polyrhythms Polyrhythms] for more about this.

The polyrhythm will only be a srict one you use a seed which has all its notes set to the same length (also if the tune isn't set to get faster / slower as it rises / falls). If you try it with other types of seed, or with tunes that vary in speed, you get interesting textures with a polyrhythm flavour to them.

You can also try working the other way round. Make a rhythm with the [polyrh_metronome.htm Polyrhythm Metronome Player] then transform it into a fractal tune once you have made a rhythm you particularly like.

How do I use the Scales / Arpeggios for Layers feature?

Bs | Seed Options | Arpeggios for layers...

Select Arpeggios for layers .

Highlight each layer in turn, and select the scale and arpeggio you want to use from the main window.

This builds the fractal tune one scale and arpeggio on top of another. For instance, if the first part is the bluesy minor chord and the second part is Pythagorean twelve tone, and you are using Parts | Order of Play | By Layer with simultaneous notes , then the top part will play bluesy minor chords over every single note of the second part in Pythagorean twelve tone. I.e. the tonic for the top part keeps shifting in this way.

See the help for [Seeds_options.htm#Multiple_scales Arpeggios for layers].

How do I use the Seeds for Layers feature?

Bs | Seed Options | Seeds for layers...

Select Seeds for layer . Choose how many layers you want to use for the seeds (after that, the seeds get repeated so layer 3 plays the seed for layer 1 say, and layer 4, plays the seed for 2, and so on).

Highlight each layer in turn, and select the seed you want to use from the main window, or make a new one.

Other options here to particularly notice - the option to rotate or permute the layer played - and to sync the seed played with the Arpeggios for layers (or not).

See the help for [Seeds_options.htm#Multiple_seeds Seeds for layers].

How do I make a fractal tune that stays within a limited range of scale notes?

Set the arpeggio up as a circulating one. So for instance if it is a seven note scale, you can make the arpeggio as 0 1 2 3 4 5 6 7 0

Tip: here is a quick way to do it:

Show the Arpeggios window and choose Select All , and then add a 0 at the end of the arpeggio - then as is usual in this window you can use the Apply button to put it back into the main winodw.

How do I make a fractal tune with many layers that starts at some position other than degree 0?

Add an extra 0 to the start of the seed, and then show the Bs | Seed As Text window and set the first notes of the volumes and times both to 0.

This makes it a kind of dummy note which never gets played, and is just there to anchor the fractal tune.

How can I see which options I'm using for a fractal tune?

Click the Organise Windows button - O i n top right of any of the windows, or Help | Organise .

Then click on Tune Smithy file | Overview . Select Edited in this box and that will show all the windows that have their values changed away from the preset values.

Now if you highlight one of the windows, and click on the -> Non dft button, the mouse cursor gets warped to whichever edit field, check box etc is changed away from the standard settings - or more generally, one of the ones that has changed if several are.

How do I play two fractal tunes synchronised with each other?

[#sync_tunes_intro Intro] - [#sync_tunes_prep Preparations] - [#sync_tunes_send The Sending Shortcut ]- [#sync_tunes_receive The Receiving Shortcut] - [#sync_tunes_tempi Synchronised Tempo Changes] - [#sync_tunes_tuning Tuning] - [#sync_tunes_parts Parts] - [#sync_tunes_trouble_shooting Trouble Shooting]


You can hear an example of this technique on my New fractal tunes page (on-line). - see FTS Duet.

Here now is how it's done - at present anyway - probably as time goes on other and probably better ways of doing this will evolve.

You need to have two copies of FTS running at the same time, a receiving and a sending one. The receiving one plays the notes for both of them, while the sending one relays it's fractal tune to the receiving one. The relaying is done using Midi Yoke or Midi Relay, or a physical loop back.


The easiest way to do this is probably to set up two shortcuts to start up the receiving and the sending copies of FTS.

Start up FTS then go to File | Make Desktop shortcut and make two shorcuts there - let's just call them "Sending FTS" and "Receiving FTS" for this example, but you can call them whatever you like. You will then find two shortcuts appear on your desktop. After making them, you can move them to some more convenient location if necessary - e.g. to a folder, or the Start Menu or the task bar ec.

Then, set up both copies of FTS following the instructions given here. You only need to do that once. If you close both copies of FTS and start them up again from the same shortcuts, the two copies will remember their previous settings so you won't need to set them up again.

You will want to relay from the one that sends to the one that receives via Midi yoke, Midi Relay, or a hardware loopback cable joining your midi out to the midi in. See [#getting_started Relaying notes to and from FTS using a loop back].

Setting up the two copies of FTS is a bit involved, but if you follow through these instructions it won't take that long to do and you only need to do it the one time. Since you are doing this for the Sending and Receiving shorcuts only, they won't affect the settings in FTS as you use it normally. You can have any number of shortcuts for FTS. So long as each one is made using different shortcut names, then all the settings are saved independently of each other. (If you rename them after you make them, then what counts is the original name the shortcut had when you first made it). So, as long as the names are different, none of the changes you make to any of your shortcut started copies of FTS will affect any of the others.

Those interested in the techy details here can look at the target using Right click on the shortcut then Properties. The distinguishing feature is the extra parameter such as ::IniFile Sending FTS.ini in the Target field.

The Sending Shortcut

Now to set up the Sending version of FTS, start it up using the Sending shortcut. Then go to In | Options | Midi Sync, and select Send Midi Start / Stop when tune starts or stops , and Send the Midi Start early. It's useful to send the Midi start current song message early as that gives the receiving version a moment or two to get started before it plays the tune. Select the appropriate device in the Out Menu,e.g. Midi Yoke Junction 1

You should select Bs | Note Timing Options | Time by | start of tune as that also helps to keep the tunes exactly in sync.

Be sure to unselect Close midi out when inactive, Close midi out when you stop play and Tell other copies of FTS to close Midi Out on open here.

The Receiving Shortcut

Now to start another copy of FTS using the Receiving shortcut. To help distinguish the two, so that you can see which window belongs to which, you could set it to use a different skin from the Tasks | Skin window.

This time go to In | Options | Midi Sync, and select Start / Stop tune on receieve Midi Start / Stop , and Wait for next note received to play first note. It will probably start up on top of the other one so you may need to move the window to one side to see them both at the same time..

Set it to receive from Midi Yoke Junction 1 or whatever is needed to receive the relayed notes and open the midi in device. You may well want to set it to open it at the start of every session.

Again, select Bs | Note Timing Options | Time by | start of tune.

Also again, unselect Close midi out when inactive, Close midi out when you stop play and Tell other copies of FTS to close Midi Out on open here

Synchronised Tempo Changes

Finally if you want both tunes to use the same tempo, you may also want to select Respond to tempo changes in any other copies of FTS in both these copies of FTS. This will let you vary the tempo in either one and the other one will respond instantly - well more or less instantly - actually it will probably only manage to do the tempo changes at the same time to within a couple of milliseconds or so. If you keep varying the tempo while both tunes are playing, they may drift out of sync with each other. However, if you vary the tempo in one tune while the other tune is stopped, or stop and start again after varying the tempo, they will be in sync.



Now if you want the two tunes to be in the same tuning, be sure to set the one that sends to send in equal temperament. If you want to hear your piece in some other tuning other than twelve equal, you might well wonder why one needs to send the notes in twelve equal. The natural thought would be to set the sending FTS to play in the same tuning as the receiving FTS.

However, the thing is that the sending FTS is playing the tune in the same way that you would do it yourself if playing along with the tune from the midi keyboard - your keyboard sends notes in twelve equal, and FTS then retunes them to the current scale. It's the same idea, except that here it's a second copy of FTS that is doing the playing. So, - FTS lets you play in any scale from a music keyboard just normally, without the need to continually adjust the pitch bend wheel all the time - so in the same way, you want the sending copy of FTS to send the notes in twelve equal, and leave it to the receiving FTS to do all the retuning that's needed.

If you set the sending one to play its notes in any other tuning other than twelve equal, then the receiving FTS will pitch bend all the notes it plays by those amounts in addition to the pitch bends it is already using to tune the notes played to the current scale You probably don't want that! (Of course if you do want to do that, just as a fun wierd thing to do, fine, but be sure that is what you want to do).

So, you want the sending app to send in twelve equal as the scale. What about the arpeggio?

The standard setting for the fractal tunes is to play the current arpeggio from the white notes of the Midi In keyboard. This lets you play along with the tune from the white keys whatever tuning it is in, and then you can use the black keys for accidentals if there happen to be any accidentals available in that position in the current scale.

So, in the receiving FTS, the white keys play the current arpeggio (rather than the scale). The sending FTS needs to play its notes in twelve equal diatonic (same as playing them from the white keys of the music keyboard). That's a suitable setting here for most fractal tunes. One reason why one might want to vary this setting is if you want the sending FTS to play in some other arpeggio from the receiving one, e.g. to play "accidentals" in the arpeggio of the receiving FTS. I won't go into that here but once the way it all works is understood, that is something one could explore.

How to do it

First check to make sure that the sending FTS sn't using any pitch bending options such as the just intonation retuning or the pitch bend vibrato. The easiest way to ensure this is to use File | New first, and make sure you have Out | Retune to Just Intonation Harmony with pitch shifting switched off.

Now set it to play its notes in twelve equal with diatonic as the arpeggio.

Make sure you have it set to use middle C as the 1/1 in the Pitch window.

To make sure that the notes are also received appropriately, then in the Receiving FTS, go to In | Options and you want White with Accidental Play 12 t diatonic from the drop list, and you want to choose Play Current Arpeggio from another drop list in this window. This sets it to play the current arpeggio from the white notes of the keyboard.

Go to In | Options | Midi Keyboard Options, and make sure you have the Midi In Note for degree 0 as 1/1 set to C - to match the 1/1 note sent by the sending FTS.

You won't need to change any of these settings. When you change to a new scale or arpeggio in the receiving FTS, just leave the sending FTS to continue to play its notes in twelve equal diatonic. Ifyou want to change the seed in the sending FTS you don't need to change the arpeggio or scale, just change the seed.

That's it done.


More generally, you can set the sending FTS to send its notes in any arpeggio, so long as it matches the ones used by the midi keyboard to play the arpeggio in the receiving FTS. So for instance if you set the receiving FTS to play the arpeggio notes from all the keys of the keyboard consecutively, you would set the sending FTS to play in twelve equal with the arpeggio set to Follow Scale. Then, though the sending FTS is playing in twelve tone, the receiving FTS will again play those notes in its current arpeggio whatever it is. Or if the receiving one is set to play the arpeggio notes from White Keys Pentatonic (In | Options | Kbd Options) C D E G A then set the sending FTS to play its notes in the pentatonic arpeggio, and so on. Again, you just need to do this the one time, set it up so that both are using the same protocol, and then from then on you can forget about it - the sending FTS will then automatically play its seed in the arpeggio used by the receiving FTS.

An alternative approach to using twelve equal for the scale is to use some other twelve tone temperament, and set the receiving FTS so it no longer responds to Midi pitch bends from In | Options | Pitch bend Opts. Indeed, if you don't mind about the arpeggios matching up, you can just play any FTS tune through any other one in this way by making sure the receiving one is set to ignore pitch neds, and see what happens.

However if you want the sending FTS to play its seed in the same arpeggio as the receiving FTS, then the way explained here is an easy way to do it, and it's probably better to just not send the pitch bends in the first place


The easiest way to work is to set the sending FTS to send its notes on a single part, and then highlight the part you want it to send them on in the Parts window. Or maybe you want to send on several parts - that also is possible but takes more care.

The best way to use the parts in the Receiving FTS is to go to In | Options and set it to Select Part by Input Channel.

This next step is important - In the Sending FTS make sure each part gets sent on the same numbered channel, by going to Out | Options | Midi Output Channels for Parts and Polyphony, and use the Navigationbutton to set each part to play on the same numbered channel.

Then you probably want the sending FTS to send its notes using an instrument of its own. The best way to do that is to use a part beyond any of the parts in the receiving FTS. If sending notes for a single part just set the number of parts in play to 1 and highlight the part you want to send in the Parts window. If sending for several parts, use the parts from part ... onwards setting.

If you want it to play using the same instrument as the receiving FTS, then it is okay to use the same part. Be aware that the Sending FTS will normally change the instrument for the part in the receiving FTS to match your instrument selection in the Sending FTS. If you want to switch that off, you need to select Out | Options | Skip Midi Out Voice Selections in the sending FTS.

Why should one use Chann = Part?

You have to do it that way because otherwise, if the sending FTS sends notes on different parts, they will be played on different parts in the Receiving app. That's particularly relevant if you are using the ignore pitch bends approach to relay one tune to another. If the sending FTS sends its notes in twelve equal, then it won't need to play them on different channels, but unless you set the part to played in the same numbered midi out channel, then theparts may get played on unexpected parts in the receiving FTS.

Trouble shooting

This timing synchronisation works best if both copies are running on the same computer because though it uses Miid clocks and song position indicators, it also uses shared memory in the computer as an extra aid to communicate the exact start time between the two programs when they run.

The first notes in both tunes don't get synchronised exactly - how can this be fixed?

Probably the receiving FTS hasn't had enough time to set everything up before it can play its first note. Try increasing the Extra sleep after start. in the Sending version.

The first note sent by the sending FTS gets cut off short as soon as it is played - how can this be fixed?

That is probably because it is played just a fraction of a second before the receiving FTS starts its tune - FTS does a switch off of all notes before it begins playing the tune. Again try increasing the Extra sleep after start. in the Sending version.

Some notes get strangely tuned - how can this be fixed?

Make sure you hav switched off all the pitch bending options in the sending FTS or set the receiving FTS to ignore pitch bends as explained in the Tuning sub-section above.

Some notes get played with unexpected instruments - how can this be fixed?

Check over the help on Parts above and make sure you have both the Sending and Receiving FTS set up correctly to work with the parts.

How do I synchronise the first note of a fractal tune with a tune played from my sequencer or notation software, or my own playing from the music keyboard?

If your sequencer or midi keyboard has an option to send Midi Start and Stop messages, you can use those - go to In | Options | Midi Sync , and select Start / Stop tune on receieve Midi Start / Stop

Otherwise, select Start tune when a note is played from midi in (a "cue" note), and skip that note .

Either way, select Wait for next note received to play first note .

You will want to unselect Close midi out when inactive, and Close midi out when you stop play, because otherwise re-opening Midi out causes delays when the tune starts.

Play the cue note or send the Midi Start message well in advance of the tune, say a bar ahead. The cue note is received by FTS but not played, just used to cue it to start the tune. It then sets everything up ready to play and pauses just before the first note of the tune. When you play your next note from midi in, the tune will start at once in synchrony.

You can also assign a particular midi note to play from your sequencer or keyboard to start / stop the tune, from In | Options | Kbd Regions | Start Fractal Tune and Stop Fractal Tune - you can assign any note you please to use to start and stop the tune, e.g. say c'' or c'''' or whatever. Here you need to select a note that you can happily skip while playing - e.g. one of the notes near the extreme of your keyboard range perhaps - then whenever you play that note, instead of the note sounding, the tune starts or stops. Again, select Wait for next note received to play first note as before, and the tune will start immediately on the next note played after the cue note.

Might FTS or a program like it one day become a composer in its own right?

Okay, this is a somewhat philosophical question, but its one that arises for some FTS users. So I think it's fair to address it here, from the point of view of someone who trained as a mathematician and as a philosopher (I have degrees in both subjects and did research into the philosophical and logical foundations of mathematics).

Some composers are so impressed by FTS's capabilities that they can envisage it or a successor of the program replacing the composer altogether. However the way FTS in particular composes has its limitations, and there are also theoretical reasons for supposing that a computer program can never replace human reasoning - not if programmed in the normal fashion in a computer language. I see it as a useful tool for composers, and in the future some composers may work with programs like this more and more, but I don't see it ever becoming a composer in its own right. But see what you think.

FTS succeeds because it uses a method particularly attuned to computer capabilities

First, as many users have commented, I agree FTS is sometimes astonishingly successful and human like in the tunes it produces. Take as an example the "Beautiful 13 limit melody" - I think if I hadn't heard FTS before and was told that this was a piece by a human composer, I'd have believed it. However, the reason it is so successful is because it uses a method that seems to be particularly attuned to the computer's capabilities. Most of the pieces are in the form of a canon by augmentation built up fractal fashion from a simple seed (apart from the fibonacci tonescapes).

The reasons are unclear to me, but for some reason this form, either as it is, or transformed in various ways, produces satisfying music. It is often very "human like" in its feel. So its success is due to the choice of a musical form that a computer can generate easily, one that a human can only generate with much calculation, and one that for some reason often sounds beautiful to human ears. It probably succeeds because human music is often fractal in nature in one way or another, and fractal music somehow satisfies something deep in the human psyche. Perhaps also we find fractal music satisfyinig for the same reason that we find some natural sounds beautiful.

FTS can't compose in any conventional form

However, FTS can't compose in any conventional form. It can't compose a symphony in the conventional sense. The feel of some of the pieces may indeed remind one of e.g. a movement from a baroque symphony - the feeling tone is somewhat similar sometimes - but the actual form is completely different. It can't compose a minuet, or a mazurka, or a pop song either. Some of the music it makes sounds fugal but it can't compose a conventional fugue, which is a highly structured from with many rules about how it needs to be constructed. FTS doesn't have those rules programmed into it, and couldn't construct a fugue (unless by an astonishing and unlikely coincidence).

There are programs that can compose conventionally, but they tend to be derivative

There are programs that can compose in these forms - for instance there is a program that can compose Chopin Mazurkas and is good enough already so that an expert is presented with one of its pieces will hesitate to say whether it is a piece by the program, or a less well known piece by Chopin himself. Try the challenge for yourself here - "The Robot Composer" (web page for a BBC radio 3 program in the UK of the same name).

However, at least so far, such programs are derivative. It can make Chopin Mazurkas as a result of analysing Chopin's output - luckily he wrote many Mazurkas to analyse. However, if it were presented with music prior to Chopin, it could never have made the leap and proceeded to invent the Chopin Mazurka. It is successful because Chopin wrote enough music all similar enough in style so that his style could be analysed and used to generate more music following a similar pattern. So at present anyway, such programs are essentially derivative.

FTS is using a new form

FTS succeeds indeed in producing new music, but that is because it is using a new form - well a very old form actually, but one extended in a new and unusual way. It happens to be one that is particularly suitable for computer programs to generate, and it isn't based on analysis of existing human compositions. Composers may use some of the material generated by FTS in conventional forms - but FTS itself isn't programmed to generate such.

FTS can't itself select music that sounds good to a human, or even discordant or boring music

Then another point is that the program itself can't select music that sounds good to a human. FTS could quite "happily" play a piece consisting of a single note repeated for hours, but to a human that would sound uninspiring.

It can randomise the music, and if it starts from a piece of music that is already interesting or beautiful, it has quite a good chance of randomising it to make a completely new piece that is pleasant, sad, happy, inspiring, beautiful or whatever - not necessarily the same mood as the original. Because the randomisation combines different elements from different tunes, and varies the tempi, tunings etc, the result may have a special feeling tone of its own, and might sometimes sound quite "original". But the randomisation may also sometimes fail completely to produce anything interesting or original at all. FTS will produce either type of tune with equanimity - it has no notion of what is sad, happy, beautiful, inspiring, or whatever.

I'm not trying to imply that music has to be inspiring or even interesting - but FTS has no notion of what is harsh or noisy or discordant or boring either. Sometimes FTS can make minimalist sounding music sometimes with some simple form that repeats and has no interest particularly of itself, but becomes interesting through the endless repetition with slight variations. However often the music it makes is just plain boring like the example of a single note repeated endlessly.

Even that is an acceptable aim for a composer to follow, I know, to bore your listener totally - but anyway, whatever type of music you want to produce, FTS has no notion of any such aim. FTS can present you with lots of raw material, but it is up to you as the composer to decide what you do with it - and FTS can't help at all at that point.

Users of FTS are likely to produce music with an individual style

I expect the style of music to depend on the composer too - different users of FST have different aims and expectations in music.

Some users select a fragment from a particular point within FTS - that fragment is a kind of "found melody" that they may use in their pieces. Or they may use FTS along with a human singer or player who will interact with the music FTS produces in interesting ways. There are many ways that composers can use this material in their work.

Even if you produce pieces in which every note is computer generated, the choice you make of the seed, and other parameters such as the chord progression and the instrumentation and so forth will give your music a particular style and feel. There are enough parameters so that the variety of tunes you can make is unlimited for all practical purposes. This means that there is plenty of scope for an individual style to enter into your tunes.

Theoretical reasons why a computer program can never have the same flexibility of reasoning as a human being

Then finally, there are theoretical reasons for thinking that a computer program programmed in a conventional computer language can never duplicate the amazing flexibility of human reasoning. The basic argument is due to Professor Penrose.

You can indeed create a computer program capable of reasoning, based on particular rules and axioms - there are already such programs around that are used to assist mathematicians in some fields of study, for instance the algorithms used to solve particular types of equation in the likes of Mathematica. Some programs can even generate new theorems.

There is no question about that, the question is about the generality of such programs - could you produce an all purpose program capable of any form of reasoning whatsoever.

Why an all purpose reasoning program is impossible

Here is the reason for thinking that such a program is impossible. If you could produce such a program, you could write out the rules it uses. Then by examining those rules of reasoning, you can come to see a result, one of the "Godel sentences" of those rules, a truth that a human can see to be true - and which can never be arrived at by following that system of rules. So human reasoning can transcend any system of reasoning that you can set out precisely in finite form. A computer program can only use a finite system of reasoning, and so a human is always capable of excelling over a computer program in its reasoning.

So, given enough time a human can find out true things that the program can never derive

It doesn't always happen like that of course in real life - a human can make many mistakes - but given time to go over the reasoning carefully, and after following the normal process of peer review etc as it is carried out in the mathematical community, then a human can always excell. The computer program gets the reasoning done more quickly but is limited in the reasoning it can use by its programming.

Even if it uses fuzzy logic or whatever, it's reasoning is still rule based, using rules built into it by the human programmer, without any basic "touchstone of truth" of its own to guide it. Or even if an expert system, or neural net, the way it works is still based on rules put into it by the human programmer. Randomisation doesn't help either - it lets it come up with new things to consider perhaps - but still doesn't give it any better way to determine what is true and what isn't true.

Penrose's Godel based argument tells us that if you give a human long enough to make up for the computer's sheer speed, a human should be able to beat any computer program at reasoning. A human when pitted against a program and given enough time to make up for the difference in speed will always be able to find out some new true things that the program can never derive no matter how long you run it for.

You can change the program to let it find these new things as well and so continue to expand the power of the program as new methods of reasoning are developed - but you need a human programmer to make those changes as only a human has the "touchstone of truth" necessary to do it.

The point in this argument isn't really that those new things might be interesting, they might be, but the Godel sentences that transcend the reasoning of the program may be quite "boring". You can probably write a computer program capable of proving "nearly all interesting mathematical results" - if it could only be fast enough and run long enough to make up for the leaps of intuition that give humans the advantage at present.

The main point is that it shows that the computer program doesn't have built into it the intrinsic notion of "mathematical truth" which all humans seem to have.

This subject arouses vigorous debate

This basic argument convinces some, myself included, right away. However if you have strong sympathies with the "strong AI" claim that a computer will one day be able to reproduce human reasoning entirely, then you may not find it convincing. There is a vigorous debate on the subject. Professor Penrose has presented more refined versions of the argument.

He looked into various hypotheses which have been proposed, about how a computer program may one day be able to simulate human reasoning neverteless, and produces more refined versions of his argument to deal with them. You can read his arguments in his books "The Emperor's New Mind" and "Shadows of the Mind". You can also read what he has to say, and read the work of some of those he argues with, here: Symposium on Roger Penrose's Shadows of the Mind

If you have come across this subject before, it's important to realise that here we are talking about the program rather than the hardware that runs it. You can design a "universal computer" which can do anything that can be described computationally within limits of memory and speed. In fact your PC is a universal machine in this sense apart from its obvious limits of hard disk space, memory and speed.

So anything a human does to verify the truth of something can be programmed into such a computer - once you have the axioms and deduction system then you can program any universal computer to verify them. But the argument is that there is no single program that can capture all possible reasoning in a single set of rules - not even if it is self-evolving or uses fuzzy logic or expert systems or random numbers or whatever. You can verify proofs computationally, no problem in that.

But only humans have the perspective that lets them design and write the programs you use to verify these proofs, and the work of the programmer is never done :-( since any such program as soon as it is published will immediately have limitations in the form of godel sentences which it can never verify. And with a bit of work (this is in in Penrose's books) the same limitations can be seen to apply even to self-evolving programs, expert systems, neural nets, fuzzy logic, randomised programs, etc.

One way of putting it is that any theorem proving program will always be provably buggy :-). In the sense that there will always be some theorems that a human can see to be true which it can't yet prove. And no matter how hard the programmer tries to fix this bug, he still always ends up with a buggy program at the end of it all.

What about quantum computers

Roger Penrose argues that the physical reason why humans are able to transcend computer programming is a result of quantum processes within certain microscopic structures within brain cells. It is possible that one day in the future we may be able to build quantum computers - a quantum computer consisting of only 20 atoms might be able to excell over all existing computers for certain tasks. So, might a quantum computer use the same approach as us, and so come to reason like a human?

Well, the quantum computer still has to be programmed. If programmed in a conventional fashion, then though the program can exploit massive parallelism to speed up the computation, it will still be written within some theoretical framework. A human can still look at the logical assumptions behind a particular program, and then find a transcending sentence for them if they are such as to permit conventional style programming at all.

So it seems that somehow the notion of mathematical truth has to be self emerging from these quantum processes, not just programmed into them by a human programmer building in a particular set of rules. No-one has suggested any way to get a quantum computer to do this sort of thing as far as I know.

We need a non programmed quantum computer, maybe "gravitonic"

So we need a non programmed quantum computer in some sense. Roger Penrose thinks that the transcending reasoning comes out somehow from the interaction of quantum mechanics and gravitation - the so called "quantum gravity". His research field as a mathematician is connected with quantum gravity. He suggests that gravitational effects are what causes the collapse of the quantum mechanics waveform leading to a kind of "spontaneous observation" whenever a quantum mechanical system reaches a particular size and complexity. This could then be what leads, he thinks, to non computable reasoning.

So if he is right in this - perhaps such a "gravitonic computer" might have to learn human fashion, and be brought up like a human child. Then maybe it could do something new. But then how do we know that its reasoning will be valid any more if it is only a computer? Humans seem to have a sense of "truth" which enables them to evaluate reasoning - true they get swayed by emotions too but one feels that the truth is attainable. The computer would have to have a similar sense of "truth" too. But how it would develop such a sense of "truth" and how we could tell that a particular quantum computer has managed to develop it successfully (without say some subtle flaw that leads to rare errors) - there things get hazy at present.

If such computers ever exist - will they really be "computers" as we know them

Who knows, maybe some day it might be possible, maybe all will become clear eventually - and if so, maybe finally one would have computers capable of composing like a human. But then are they still computers in the current sense of the word if that happens? They remind me a bit of Asimov's "positronic robots", and perhaps some of the ideas that he explored in his novels may be of relevance in the future if such ever happens - his robots were envisaged as superb reasoners too. He even explores the idea of a "maladjusted" robot producing original and inspiring works of art in one of his stories. Try reading his "Light Verse", one of his earlier stories, from Buy Jupiter and Other Stories which you will also find in several of his robot collections.

So how does this apply to music?

Well first - though we are a long way away from even attempting a computer program that can duplicate the feats of reasoning of a human mathematician - if the computer gets fast enough and the programming sophisticated enough then computers may eventually be able to proof truly interesting theorems more or less by themselves, making up for their "stupidity" and lack of anything that could be called an understanding of truth by their high speed and proof shortcuts programmed into them by clever programmers and mathematicians.

They are already used a lot to assist with proofs of theorems. Professor Penrose's argument doesn't rule that out, it is more of a philosophical argument about what a computer is doing when such things are achieved.

Though it may help to explain why it has been so very hard to get computer programs to do anything truly "original". If the notion of truth itself can't be programmed in, then the program lacks one of the main things that humans use in order to develop the intuition needed to do interesting and high quality new mathematics - so has to mimic that by other methods instead - no wonder it is hard to do.

So - in the same way with music - if a program can only mimic reasoning based on a correct set of rules given to it by a human, and can't be programmed with an intrinsic notion of truth - in the same way it seems that a program can only mimic composing and musicality - since reasoning is at least part of what you need for those activities as well - and other aspects of it seem even more elusive and harder to program.

So then, like the mathematical case, then you may well get programs used more and more as sophisticated tools to help with composition in various ways. So it is more of a philosophical point than a "can do" thing. When you use the computer to compose, it is more like a tool you use to do complicated things to assist in your composing. But it has no "touchstone of musicality" so it's not really composing in the same way a human does.

You can "teach" it musicality to some degree. For instance I did that with the randomiser for Tune Smithy. To start with it was really rather poor, many of the tunes it produced were uninteresting things such as tunes with many repeating notes etc. But gradually I found out what was causing these uninteresting randomised tunes, and programmed it to skip those types of tune, so now the tunes randomised tunes are much more interesting "out of the box" than they were originally.

But the program itself isn't "musical" there. If you need to be a human (or just possibly something like a gravitonic computer or something not yet discovered) to have a "touchstone of truth" - then it seems likely you may need to do something similar to add a "touchstone of musicality" to a computer.

Gets rather philosophical and more elusive than mathematical truth perhaps - but perhaps this will help one to think about it. At least if it is so difficult to characterise truth in a way that lets you program a computer to search for it, maybe it is understandable that musicality would be as well. So it will probably be as difficult to get a computer to generate interesting music all by itself as it is to get it to prove interesting theorems.

So - just saying really, that the computer programs may produce music - but if so, the best way to think of it is as an aid you can use for using your basic creativity and musicality to make new tunes. It doesn't seem to be quite right to say that the program itself does the composing, even if sometimes it might seem that it does - since musicality is probably something you can't really program into a computer any more than you can program truth into a computer.

Where can I find other composers and programmers of fractal music

Fractal music is now a genre of music in its own right and there are many composers and programmers involved in the genre. There's a forum for discussion of fractal music at YahooGroups, cnfractal_music. There you can meet other composers and programmers working in the genre.

Personal tools
How to use the wiki