Robert Inventor

Home Music 3D Animations Utilities Code Search Forums About Contact Accessibility
Overview of Tune Smithy
Download your free test drive of Tune Smithy
Time Signature Metronome for Rhythms and Polyrhythms
Chord Progression Player
Play & Create Tunes as intricate as snowflakes
Musical e-cards
Microtonal Explorations
Microtonal Scales and Tunings
Music Keyboard Retuning
Compose Microtonally
Retuning Midi File Player
Mouse & PC keyboard music
Mouse & Joystick Theremin
Lambdoma Music Therapy
Lissajous patterns
Audio Pitch Tracer
Sounds Harmonic Analysis
Chord Synthesis
CSound Automated Orchestra
Wave Shape Player

What's New
20th September to 21st December 2003

FTS upload December 21 2003 (UK time)

Added Help | Ok for dialogs with menus to auto resize. Also made all the windows auto resize. There what I mean is that as you change the size of the window then all the buttons and check boxes and so forth change size to fit the new window - and the font for the buttons gets larger or smaller as needed. This may be particularly useful if you have a touch screen.

Added In | Auto make keyboard map approximating familiar pitch positions and an auto button next to the Suggest button in the Midi Relaying (Midi In), and keyboard views (has same effect). This just automatically applies the suggest button whenever the scale or arpeggio changes. See previous upload aunnouncement for the details.

Idea is that maybe whatever the tune is, you would like the E of your keyboard, say, to play an E or the nearest note to an E that you have in the current tuning. Well this achieves that - well enough of the time to be useful I hope. If the tuning has more than 12 notes it will spread each octave over two octaves of the keyboard and sometimes you will need to fine tune it a bit - see prev. announcement.

Bug fixes

FTS upload December 18 (UK time)

Views | Mouse and keyboard music.

Here is a page all about it: with pictures: Mouse and keyboard music

It is too new to be in the help yet, so this can serve as an introduction to it for now.

Added a new option to let you move a chord around on the keyboard. So you can play a triad then move it to other positions in the tuning to hear what it sounds like - for instance in a diatonic scale it will change to major or minor depending on its position,and so forth. Just use the arrow keys to move it left right or up down. You can use the space bar or maybe caps lock sustain to keep the notes pressed down as you move the chord around

The Lambdomma keyboard already has another use for the arrow keys so the way I did it is that you can use this new option too, and you can still use the original option to move the entire playing region around in the infinite lambdomma by using Shift + arrow keys.

Views | Midi keyboard & relaying views | Suggest - this option will suggest a keyboard mapping depending on the pitches of the arpeggio. Idea is to make it so that the positions of the notes on the keyboard corrrespond roughly to the twelve equal pitches, or is otherwise reasonably intuitive to follow.

It first tries to map the arpeggio to the nearest twelve tone pitches, so that your e will play an E and so on. If there are too many notes for that, i.e. more than 24, it stretches to two octaves of the midi keyboard to play one octave of the scale.

You often may have notes closer together. To deal with this, then 3/2 for instance will be played from a white key by preference, usually the G key if it is available. More generally, any pitches that are very close to the notes 9/8 5/4 4/3 3/2 5/3 will be played on white notes if possible. A few other heuristics are used to try to make an intelligent choice in many common situations - but it is by no means exhaustive, and will surely make decisions that aren't so very intelligent from time to time. But you can then edit the keyboard mapping, and perhaps it will get most of the notes right so you only need to edit one or two of them.

The mapping isn't so very hard to understand - a mapping such as say 0 2 3 5 7 10 12 would play the arpeggio degrees from C, D, Eb, G, A, Bb and c. So it numbers the notes of the keyboard octave from 0 for c to 12 for c. and your arpeggio gets playd from those notes, with keys in between playing accidentals.

Or alternatively the map can go up to 24 for c'' for a two octave map, and so on. (Doesn't have to repeat at the keyboard octaves actually but in most cases one will want it like that).

You will also see the numbers for the keyboard mapping in the Midi Relaying (Midi In) views now so you can edit them to fine tune it. I re-organised the layout a bit to make room for it - arpeggio description field is a bit shorter than before, but you can show that using the Scale & Arp as text button.

Bs | Custom Voices | Edit Custom Melodic Voices | Edit Instr | Adjust to nearest pitch in scale (arp)

The way this works is that perhaps you have a custom voice set up to play some chord, say, 1/1 5/4 3/2 7/4, then it uses four instruments to play those four notes - well you can set each one to play the nearest pitch in the current scale or arpeggio rather than the exact intervaal from the root note.

In case you are new to the custom voices option in FTS - they let you play any number of instruments at once as if they were a single note. You play say an F on the custom voice, but when you do that all its instruments play - one may be a fifth above the note played, one may be a major third above and so forth, and each may be on a different instrument too. So anyway in this case supposing you were playing in a diatonic scale then a triad would retune to major or minor chords depending on its position in the scale. If the scale has more notes than that and includes all the chromatic pitches, it will still retune, maybe to different flavours of major chord depending on its position. Anyway try it and see :-).

You can find a couple of examples in the Mouse and PC keyboard window - a diatonic one that plays triads and sevenths, and a 22 equal one that plays tetrads.

Also added:

Midi Relaying (Midi In) views | Presets | Pentachordal Major in 22 equal on black idi Keyboard retuning keys, white keys play tetrads

Plays Paul Erlich's pentachordal major in 22 equal. The white keys play tetrads retuned to the arpeggio.

In | Options | Kbd Options | Accidentals play next part and Accid play next or prev success. parts - what these do is let you play one instrument from the notes specified by the keyboard map, and another instrument for the notes between those - the in between notes are the ones that get played as accidentals. So for instance if you have it set to play the arpeggio notes from the white keys and select this option, then the white keys will play part 1 and the black keys will play part 2. It plays that part with whatever instrument you have for that part, and also with its tuning too if you have it set up to play different tunings in each part.

Bs | Scales Options | Sort Scales Or Arpeggios | Sort Method | nx (least notes, closeness of fit to current scale)

This is a way to find other scales in the SCALA archive or any drop list that closely match the one you are interested in in terms of pitches.

The x in the nx there sorts the scales according to the closeness of the pitches to the current scale, and the n according to the number of notes - in that orderwith the number of notes having priority then the closeness of fith eing a search within the scales with the same numbers of notes. If you had just x on its own there then it would sort just by closesnes of fit.

The way it is doneit is that it simply adds up all the differences in cents between the current scale pitches and the nearest one in the new scale from the list, then also works the other way round and adds the cents diffs from the new scale to the nearest notes in the current scale. So the scales with the lowest numbers for this are the ones that are most identical to the original - the original scale will have a difference here of 0. Scales with less notes won't be 0 because they are missing notes, and ones with more will only be 0 if they repeat some of the scales notes exactly.

This option also sorts by the number of notes, so if you look in the main window list after the sort then you will find that the current scale is now followed by all the scales with the same number of notes sorted according to how close they are to it.

The y option is similar but lets you check all rotations to see if any rotations of the scale from the list are the same as the current scale.

Once you have done the sort, you can then select scales using the tokens drop list in the Sort window as well as the main window - as yo select a token then the corresponding scale gets selected in the main window. Look for the x 0 entry which will be the current scale. Then you can see other number there as well, for instance,

n____7_x____418.56384 5

means it is a seven note scale and the total difference of the pitches is 418.56384 cents and it was scale 5 in the original list before the sort.

File | Scale Notation (I renamed this from Number Options) | Ratios Options | Show factorisation | Show as lattice indexes.

This lets you show a scale using the notation such as {1} for 3/2,{-1} for 4/3, {1,-1} for 6/5 etc. Positive numbers there refer to the denumerator such as 3 in 3/2 and negative numbers to the quotient as /3 in 4/3 or /5 in 6/5. Then the first number in brackets is for multiples of 3, then multiples of 5 and so on. So 7/4 is {0,0,1}. 9/7 is {2,0,-1}and so on.

You can also use the lattice indexes to enter values. Since the notation in its current form doesn't say what power of two to use, so doesn't specify the octave, the ratios will all get reduced to the octave, as this is what one most often wants when making scales.

Bug fixes

FTS upload December 11 (UK time)

Later in the day (5 a.m. UK time) - last upload had the keyboard shortcuts for the windows such as Ctrl + T for the parts window disabled- sorry about that - fixed.

(1.0 a.m. UK time)

Added instrument lists for the Roland Sound Canvas to the voice menu presets from Out | Options | Customise vioces menu names.

Then this upload has a number of bug fixes.

Bug fixes

FTS upload December 4 (UK time)

This upload has some some new options for the chord progression player, mostly to do with the roman numerals notation.

It also has a new option to be able to set bank numbers for instruments in the voice menu. This makes it possible to use lists of instruments in the Roland GS and Yamaha XG format, and example voice menus are included for those formats.

It also has a few bug fixes, mainly for the chord progression player, and one extra option. So now on to the details.

The extra option is for the New Scale windows. You can now hold down the Control key as you move the mouse to make sure that you hear the dots only and not the red arrows for the new scale pitches. This works in either the keyboard or the dots area.

The new chord progression player options:

You can set a key signature for the roman numerals notation using e.g.


Has to be all one word.

Recognises microtonal key signatures too such G#^ major in 72 equal or D- minor (D half flat minor) in 31 equal. Again these have to be all one word: G#^ major or D-minor .

Recognises the classical roman numeral notation for sevenths and minor key chords. Ex. of the distinction - in the classical notation I7 is a diatonic chord with a major seventh while in the popular notation it has a minor seventh like V7.

You can now use "no" to leave out notes, e.g. Cm6no5 to leave out the fifth. Same effect in FTS as the brackets notation which you can continue to use as well: Cm6(5) .

Now has a drop list of notations to select from - See Notations... currently just 12, 31, 19, 72, solfeggio and the conglomerate of all these notations. This is where the SCALA note name systems will get selected later.

The new voice menu options

See Out | Options | Customise voice menu, . Then look in that drop list and you will find the GS and XG standards: Roland GS and Yamaha XG. Note that it doesn't yet recognise the non melodic percussion drum kits for these formats.

You can also make a voice menu similarly for your synth if you have one.

You can get many instrument definition files for synths from and they may already be readable by FTS with just a little bit of editing. There isn't much to it, just a matter of adding two lines to the head of the file to tell FTS where to find the patch number in each line, and to tell it to expect the bank number in square brackets like this (at the head of the file):

PatchAt 2

[XG Bank 0]
0=01 GrandPno
1=02 BritePno
2=03 E.Grand

XG Bank 1 (KSP)]
0=01 GrndPnoK
1=02 BritPnoK
2=03 ElGrPnoK


The PatchAt has to be all one word (case doesn't matter). So here PatchAt 2 says to look for the second number, the 01 in 0=01. (FTS will treat the '=' symbol in this context as punctuation). Numbers may start at 0 or at 1 for the grand piano. It doesn't matter which - if FTS doesn't find a 0 in the file for the patch number then it assumes the start at 1 convention. But if you want to set a start number, you can do that using StartAt 16 (say). (alternatively, [add 16]). This is useful if you can load patches at some other postion in your synth. Note that FTS can also get the instrument names from a Dx7 sysex using using File | Open | Files of type | DX7 sysexes -> names list which converts it into a list of names for the voice menu, which you can then edit if you want to modify the StartAt field.

Some of these instrument definition files include instruments for many synths all in the one file. Be sure to only include the part of the file for your synth, or FTS will go through the file getting all the instrument definitions for all the synths in it, and put them all together to make a single menu.

FTS doesn't take any notice of the order in which the instruments are listed in the file. It just orders the menu by the patch and bank numbers.

If you want to add comments, prefix the line with a semicolon ';' or an ! like this:

! edited from the Yamaha instrument definitions file at

You can also adapt tables that may come with your synth, such as the Yamaha manuals obtainable from the Yamaha Manual Library. This time each line may give the bank number, in which case you need to tell FTS where to find the bank number in the line.

You can do it like this:

PatchAt 1
BankAt 2

Family 1 Piano
1 0 CuttngNz
1 1 GrndPnoK
1 18 MelloGrP
1 40 PianoStr
1 41 Dream...

Here PatchAt1 means that the patch number is the first number in each line. BankAt 2 means the bank is the second number. The Family 1 etc here is optional and gives the family name for instrument numbers 1 - 16. The other families are 17 - 32 (family 2) and so on, up to family 16. These names are used to organise the Voice menu. If you don't give it a name then the menu for each family gets named after the first instrument in the family.

For another example:

BankAt 4
PatchAt 5

Family 1 Piano
228 213 0 0 0 GrandPno
229 214 0 1 0 GrndPnoK
230 215 0 18 0 MelloGrP

The LSBType at the head sets the Parts Window check box for LSB type synths. Synths can use either the least or the most significant byte for the bank number so you have to tell FTS which it recognises.

Bug fixes

FTS upload December 4 (UK time)

New options for the chord progression player:

You can leave out a note in a chord now using e.g. Cm6(5) to leave out the fifth.

Various overtone and undertone chord construction options - see the revised section of the help on Microtonal Chord Symbols, and the section Overtone and undertone. These let you make chords using numbers high up the harmonic series that still sound very consonant with suitable timbres, such as for instance Co5m6 which is 1/1 6/5 3/2 17/10.

You can now show the twelve tone scales used for the notations in a New Scale window by entering #12 j or #12 o5 etc into the name field for the new scale. Or indeed make the complete chord, though with 1/1 and 2/1 added if nec, using #chord Co5m6 - this shows the exact pitches that get approximated in the chord player by playing the nearest pitches in the current scale. Anyway see the intro to the section for details of how this works.

Added a new FAQ for the General FAQ called "How do I save my work?". A bit more editing of the Overview for clarity and conciseness.

New option - you can now specify which bank to use for a voice in the Voice menu. It is for the section Out | Options | Customize voices menu names

If you haven't done it yet, then first make a new list to edit - enter the desired name for your list into the custom voice menu names field, e.g. "New voice list". Then save it, and click the Ed button to edit it.

Then to add bank numbers do like this:

0 [1] Rounded Triangle

Here the desired bank number is placed in square brackets after the voice number.

So that means, voice 0 , when selected will automatically set the bank number to 1.

In this example, I have my Rounded Triangle sound font selected into bank 1 (in the place of the acoustic grand piano) so have named the entry accordingly.

You can show these bank numbers in the menu by showing the instrument numbers from Out | Options.

Note that at present you can only have one menu entry for each voice number no matter what the bank numbers are.

It would be nice to be able to do something like this:

0 Acoustic Piano
0 [1] Rounded Triangle

In the future I will support it. But at present, the voice menu as only one entry for each patch number. In fact the last one in the list will be used.

Obviously, it would be nice to be able to include voices for all the banks, for instance, to show the complete list of GS voices and XG voices. I'll work on that for some future update. Will keep it backward compatible with this file format so that files already saved will remain the same.

Bug fixes

FTS upload November 29 (UK time)

Added an option to the chord player to play in the tuning specified by the chord, even if the notes needed aren't in the current scale. Prefix the chord with x. To take an example, xEh7 will play the harmonic seventh chord on E. It gets rooted on a note of the current scale, so this will have the E of the current scale as its root and then the remaining notes added above those at the exact relative pitches needed for the harmonic seventh chord on this root..

Added the Show 1/1, Steps, Show 0 (for arpeggio) and Steps check boxes from the main window to the Bs | Scale and Arpeggio as Text window.

Added Help | Unlock. (or User Info) - same as File | Unlock, just to make it easier to find for those who may look there first.

Bug fixes

FTS upload November 24 (UK time)

More work on the help, including the FAQ, trouble shooting and overview pages.

Work improving the layout of View | Colours. I hope this helps make it clear how it works.

Updated the colour wheel you get to from that dialog so that it can show a continuous range (well, nearly, many anyway) hues around the circle instead of just six, also a continuous range for saturations, and six brightness levels. This only affects the look of the dialog - the way it works is as before, as you click between colours for intermediate shades, as is still the case for the brightness levels. The reason for the six brightness levels is simply that it seems to be a bit easier to use.

Bug fixes

FTS upload 8:16 PM Friday November 14 (UK time)

Added a Count In Introduction for the Chord Progression Player

You can set an introduction to count into the chord progression like this:

Count O O O o o Start v 100 O v50 O O o _ o

That is 4/4 of course. Similarly you can use Count O O o o Start for 3/4 or whatever, any rhythm you like to use for the count in.

The count in is played once only, then from then on the rhythm cycles back to the Start.

Details in the help now. See Chord Progression Player help | Rhythm | Introduction and Count In

You can also change the instrument to play during the rhythm or the count in. The instrument for the count in if none is specified is the high wood block.

To change:

Instr Claves

Can also change it once the chord progression is underway to change the instrument used to play the chords, e.g.

Instr Reed~Organ

(note the use of tildas for spaces in the name)

14th November

Added Chord Progression Player | From to play the chord progression from a particular chord onwards.

You can use flow directions and repeats with the chord progression player now, for the progression, or the rhythm or both.

{ ... } to repeat a section, { ... } 4 to repeat it four imes, etc.

Also you can use D.C. Al Fine etc like this:

... Fine ... DcAlFine

where DcAlFine has to be all one word, but upper or lower case letters don't matter.

You can also use DsAlFine

... Segno ... Fine ... DsAlFine

and DcAlCoda
... ToCoda ... DcsAlCoda Coda ....

and DcAlCoda
... Segno ... ToCoda ... DsAlCoda Coda ....


Em Segno Dm G7 ToCoda C DsAlCoda Coda F C7 F

Both are independent. You could set the chord progression to follow a particular flow direction and repeats and just do the same rhythm for every bar. Or set the rhythm to follow some complex pattern and play the same chords over and over again, or do both with the two following distinct patterns, or if you want to synchronise both, have to make sure for yourself that the chords and rhythms match together beat for beat throughout the progression. Later though, could add in an auto sync so that the rhythm can follow the same pattern as the chords. Not in the immediate future - the way I can think of doing it right now would be complex to code but maybe there is some easier way to do it (the flow direction amd repeats coding this afternoon was really easy :-) when I got the idea about how to do it, only a few hours work for the whole thing - could have taken days to code it properly and debug it to satisfaction if I'd set about it some other way).

Added Out | Just Intonation Retuning | Pitch drift options and notes in play | Save to Log which saves all the notes shown in that window to a text file which you can then show using the Show button. You enter the file name to save it as in the Set log File window.

Changed the Ch notation for the chord symbols to allow more harmonic series chords - the twelve tone scale now consists of a complete series of notes for the odd harmonics up to 23/16 . You can specify harmonic series chords Ch7, Ch9, Ch11, ... Ch23 - uses 11/4 for the eleventh and 13/8 for the thirteenth and then it doesn't stop at C13 as it does with normal chords, but goes on with the 15th as a B at 15/8 rather than a C then a C# at 17/16, Eb at 19/16, alternatively tuned F at 21/16, and F# which finally gives you the 23/16. Since this gives you two Fs then actually the F is played using the F# in the scale for the notation and the F# is played using the A - and the player automatically translates these to gve the expected results for Ch23.

Basically you just need to remember that the note numbers give the corresponding harmonic. So for instance Ch9add13add23 would be the harmonic ninth chord with a 13/1 and 23/1 added into it. You can add even numbered harmonics too, e.g. Ch9add10. It is all explained in the new help for the chord progression player.

Bug fixes

11th November later in the day

Added option to specify that the entire chord in the chord progression player is in 31 equal or 19 equal. Prefix with? for 31 equal: ?Cm7 and * for 19 equal: *Cm7. This means all the pitches that make up the chord are interpreted as the relevant degrees in 19 equal or 31 equal. (so also including the slightly flat fifth in the case of 19 equal).

Added a note to the help for the new microtonal chord symbols section to say that this is a beta notation and may change a bit - should have said that last night when I uploaded it. Hopefully not many will have downloaded it yet given the time of upload and that it was uploaded to the new site rather than the old one.

A little more work on the help for the chord progression player.

11th November

Added support for microtonal notations for the chord progression player. So for instance you can use Cs for the septimal major chord 1/1 9/7 3/2 or Csm7 for the septimal minor 1/1 7/6 3/2 7/4 or Ch7 for the harmonic dominant seventh chord 1/1 5/4 3/2 7/4 etc. The notation is all explained in the help for ths chord progression player so won't go into it more here.

You can also use rests in the rhythm. The way this works is that you just prefix a note by an * to play it as a rest. So *O is a quarter note rest, *o is an eighth note rest, and so on.

Also added a new option

File | Save As And E-mail and Record To File Options | E-mail recording

Also made a new folder icon for the FTS Extra Shortcuts folder to make it easier to find on a crowded desktop - now has an FTS snowflake on it and it is also blue. If you use Right click then Properties on the shortcut to the folder, you will find an option to change the icon and the list will include a gray folder icon you can use as well with the FTS snowflake on it - or you can change to the standard folder icon of course if you want. The standard icons are normally in Shell32.dll so if you enter that as the file to get them from instead of FTS, then you should be able to find them. The folder itself has also been moved but this is more of a techy detail as a shortcut to a folder on the desktop works pretty much the same as having the folder itself on the desktop.

Then a lot more work on the chord progression player, I hope improved the exposition, particularly for the rhythm section, also to explain the new microtonal chord options.

New special offer: Three programs for two. Applies retrospectively too - if you own two of my programs you can take up this offer and get the third one and the mini utilities for free. See Three programs for two for details and if you want to take it up just contact me.

Bug fixes

10th November

Added new option Out | Just Intonation Retuning | From max and min shift for current chord. This is now the preset method too.

General idea is that it makes for better choices of the intervals in some situations, particularly with tritones.

To explain the pitch drift idea first - the idea is that it looks at how far a note in the chord has to be shifted from its original tuning in the scale. If a note needs to be shifted too far to make an acceptable ratio, then it won't get retuned. So for instance if we start with twelve equal, a tritone at 600 cents won't get retuned to a 4/3 under normal circumstances because it would need to be shifted more than a semitone, which is too far - that is indeed what we want normally. If it is a pure tritone with no other notes present it will probably just remain at its original tuning of 600 cents. However, if you feel like experimenting, if you set the Pure JI up to field to a semitone or more and play a tritone you will find that this retuning will indeed happen.

Here an acceptable ratio is any ratio of two numbers in our list of Numbers to use in chord interval ratios or listed as an additional acceptable ratios.

So now suppose you make the tritone out of two stacked minor thirds at 6/5 then 6/5 we get 36/25. However 36/25 is 631.28 cents, and supposing we started with twelve equal then this has taken us quite a way from it. It might be accepted if we have allowed a large spread of pitch shifts. Suppose though we set the maximum pure j.i. field low at 20 cents, just enough to permit pure major and minor thirds. Then let's set it to drift from the average pitch shift in the chord so far as that is the "best" option we had before. You find that 36/25 has drifted too far even with this option (the average pitch shift so far in our chord is 7.82 cents and it is more than 20 cents away from that).

So that sets it outside our limit and will rule out this chord. However, since it is built up of component 6/5s, it seems more natural to include it - each individual interval in it is just fine, but it isn't working just because we had to stack the intervals.

Well the idea then is to allow intervals to get stacked like this. So that is what this option does.

For those interested, here is how it works.

So how can we do that - well one solution is to look at the maximum and minimum pitch drift for notes already in the chord rather than the average pitch drift. If the new note is within the range of pitch drifts already in the chord then say that it is okay. Also say that it is okay if it is outside the range but by no more the amount that you have set to be okay for pure j.i. So then our 36/25 is okay because in our chord 1/1 6/5 the 6/5 has already drifted by 15.64 cents. Our new note only needs to drift a further 15.64 cents and as that is less than 20 cents then it is acceptable - which is what we want.

When there is a choice of ratios to use then as before, it finds whichever one is shifted by an amount closest to the average pitch shift in the chord so far.

Bug fixes

8th November

You can now repeat a chord for the chord progression using =. So for instance Em7,=,=,= is the same as Em7,Em7,Em7,Em7.

Also the chord progression player now has a +... button below the progression. If you press this then it brings up the progression in a separate window with a larger text area for easier editing.

Bug fixes

6th November

This upload has a number of additions to the new chord progression player, and a few bug fixes for it.

You can now add extra notes to the chords using the notation e.g. Em7/B'/E.

You can now enter volumes for the notes, and also you can set it to strum a chord several times in succession by using underscores.

Example rhythm:

O _ O _ O _ o _ o strums the chords in the rhythm 1, 2, 3, 4 and 1, 2, 3, 4 and ...

with the chord changing at the start of each bar.

The way it works is that O here is a quarter note (crotchet) and o is an eighth note (quaver)

The help for the rhythms now takes things more slowly than before, with a number of example rhythms that you can paste into the player to hear how they work

The volume notation is explained in the help. You can also do bar lines which are purely visual at present, a way of showing where each bar ends and the next begins, don't get played. But later I may add an option to vary the rhythm so it slows down and speeds up depending on the position in the bar as it does with the fractal tunes at present and the metronome.

More options - explaned in its help.

Some more work also on improving its help. Better explanations and more of it.

Bug fixes

4th November

You can now specify a rhythm for the chord progression player. For details see the help for the player. But the basic idea is that you can use symbols like O for quarter note (crotchet) and o for eighth note (quaver) and you can join the symbols together by placing them together to make a longer note such as Oo for a dotted quarter note (dotted crotchet in the British notation system).

This sort of thing:

Oo o O Oo . . O

For those who use the US system of note names:
= whole note (has to be two half notes in length),
half note
O quarter note (= beat)  
eighth note,
. (full stop)  sixteenth note

Also if needed
" (double quote) for thirty second note
' or ` (single quote) for sixty-fourth note.  

British system also given in the help.

You can also do triplets, quintuplets etc. [3 o o o] means do three eighth notes in the place of two. {5 o o o o o] means do five eighth notes in the place of four. You can also nest the rhythms within each other

Then - you can also use this notation in the same way to enter seed times in the Bs | Seed As Text window for the fractal tunes - though you need to place a tilda '~' at the start of the seed times field to indicate that you are using this notation.

Like this:

~ Oo o O Oo . . O

You can look in the main window to check that it has converted the times as expected.

Now that the player may be used to play rhythms, one would want all the broken chords to be the same length so I've done it so that for the chord progressions, the notes that start a broken chord are taken from the time for the entire note so that they don't affect the length of the entire chord.

3rd November

You can now specify an inversion of a chord for the chord progression player

Recognised chord inversion and octave shift symbols are:

. first inversion
.. second inversion
... third inversion

/ shift upwards by an octave (or whatever the repeat is if the chord requires a two or more octave span)
\ shift downwards by the chords span
Again repeat the / or \ if necessary

~ shifts down by one note position in the chord, so for instance in a four note chord ~ has the same effect as \... and in a three note chord, the same as \..
Once more this can be repeated.

These can all be combined together in any order. e.g. \~~G7 etc.

An example progression might be:
I ~V I ~IV I

Bug fixes

2nd November

FTS upload 12 AM Sunday November 02 (UK time)

This is a bug fix for j.i. retuning. I'll be doing another upload soon with more things so wait for that unless you need this fix right now.

1st November

Updated the modes lists that come with the FTS installer to the most recent versions from the Scala Modes lists.

Bug fixes

31st October 2003

Realised the Chord Progression Player doesn't need an Arpeggios drop list so removed that - makes more room for other things - mainly, increased the size of the text field for entering the chord progression.

Bug fixes

30th October 2003

New main window views as promised: View | Chord Progression Player, View | Lambdoma - Small, and View | Polyrhythm Metronome.

Added Bs | PC Keyboard Notes to Play | Pitches for keyboard rows | Each row starts same position

New example fractal tune in the 2.4 folder (haven't started a new 2.5 one for it):

here is a midi clip: Leisurely_chord_progression.mid

Lots more work on improving the help for Midi Relaying (Midi In) and Midi Keyboard retuning (though I'm sure there is still lots more still to go and the newest options aren't covered yet, hardly at all). Also on the help for the mouse theremin.

Added a new section there Using the Theremin to explore consonant ratios

Added a new option to the installer - extra shortcuts for all the main window views. They get placed in a new FTS Extra Shortcuts folder on your desktop - unselect this when you install if you don't want them.

I've made a Fractal Tune Smithy forum to try out. The temporary url is:

<no longer available>

Within a few days you should also be able to access it at

<no longer available>

It is a try out using the free version of a particular script (the Discus script). Interested in any comments. If it is found useful and suitable then I'll get the Pro version eventually.

Bug fixes

24th October

Improved layout for the Lambdoma view.

Note - another upload is on its way fairly soon, in a day or two, with new views for polyrhythm metronome and the chord progression player, so you can start them on their own from their own shortcuts. It will also have a second small Lambdoma view. You may prefer to wait for that.

Also - to mention I'm considering setting up a forum at for FTS users to share ideas about how they use the program. I'll join in to answer any tough questions. Looking into options at present.

Bug fixes

22nd October

Now hides the dovetail options when dovetailing is switched off - wasn't doing before, a possible cause for confusion.

Note btw that if you adaptively retune a scale that already varies fairly widely from twelve equal, such as an already pure just intonation scale, then you may need to increase the pure J.i. limit to 60 cents say instead of 40 otherwise it may not be able to bend the notes far enough from their original position to make them in tune. But if you set the limit too high then it may find e.g. 4/3 9/4 instead of 5/4 25/16, so some balancing is needed here to see what happens with various settings.

Bug fixes

21st October

Improved processing for Out | Just intonation type | Include chord before last

Now when this is selected, then often all notes become j.i. in short not too complex pieces. Here is a little example I did to test the option, composing directly in adaptive just intonation, using my notation program with the output retuned in FTS - just composing directly by typing the notes into the score:


(for any with Note Worthy Composer, or the free NWC player, the original unretuned score is joyful.nwc)

To do it like this then select the Strongly dovetail, and Include chord before last check boxes in the Out | Just intonation type window.


(for any with Note Worthy Composer, or the free NWC player, the original unretuned score is joyful.nwc)

To do it like this then select the Strongly dovetail, and Include chord before last check boxes in the Out | Just intonation type window. With this on, it will sometimes play entirely in the just intonation twelve tone scale if the piece allows it, and often all the ratios are just intonation in short pieces, though maybe with comma pitch drift.

This example includes tritones, which are a challenge for strict just intonation tuning - should they be a 5/4 above a 9/8 (major third + whole tone) or a 6/5 above a 6/5 (two minor thirds). The choice it makes depends on what you choose for the underlying scale. Here I got comma drift with twelve equal, but not with the scale already set to just intonation twelve tone. Two stacked major thirds are another challenge - should one tune the higher one as a 25/16 or as a 8/5 above the root of the chord? Really there is no way to decide without looking at the larger context, which probably means looking ahead as well as back.  Whole tones too are a challenge (9/8 or 10/9), semitones indeed too, lots of challenges for strict just intonation!

Some pieces don't shift at all or not much. However, if your piece uses the so called "comma pump" progression iii vi ii V I then every time you do that then you get a comma shift, also if you use progression by ascending or descending major thirds or minor thirds (e.g. progress in tonics around the notes of a diminished seventh) then you will get diesis shifts, which are quite large - do that a few times and it will wander far indeed. Such pieces probably need leisure time retuning to do properly, (John deLaubenfels' speciality).

Improved the layout of Bs | Record to File Options (the double quaver "File" button) to make it more user friendly (I hope!).

Added a Mute button to the Parts window. When a part is muted, that part still receives patches from midi in but doesn't send them on, just changes the voice selection in the parts window, e.g. to show "muted - Flute". All other controllers etc are sent on as usual, but the note ons and offs aren't played. Can also be used with the fractal tunes. When you retune to adaptive just intionation then the retuning algorithm takes account of notes in the muted parts. So for instance, you can play a piece retuned to adaptive just intionatoin and then mute one of the parts Karaoke style, and the other parts will still retune to respond to the notes that it would play. E.g. if the solo instrument you are playing has a long sustained note then the accompaniment will remain in just intonation ratios with it throughout the sustain, even when it is muted.

Removed the old erase button from this window. If you want to erase a part you can still do it using Ctrl + Mute, (but not so likely to want to do it as in most cases the mute will be superior).

Updated version number to 2.5

- Accummulation of new features and bug fixes.

Bug fixes

17th October

This is a bug fix only update. Main thing is that it fixes some bugs that showed up particularly if the new adaptive just intonation drifts far from the original pitch. Fixing those also improved the way it does the diesis shifts in more normal situations, so that they are less noticeable.

The preset now is to do just intonation with pitch set free to drift. The tuning drift is restricted using From average pitch shift in current chord. - this means it can drift as far as you like, but within an individual chords the individual notes can only be shifted by a certain amount from the notes already in the chord (the amount set for the Pure JI up to field).

You can restrict the drift by setting a maximum value in the Move first dovetailed chord note no more than ... field, which affects the pitch of the first note played in a chord if there are no tied notes carried over from the previous chord (not even for an instant - sometimes a midi clip may have two notes for successive chords overlapping just for an instant, especially if the notes are in separate channels). Or change to Restrict tuning drift from original scale pitch

Midi clips:

C.P.E. Bach again, set to drift free with pure just intonation



Then here is a piece I did to show the effects of commas and diesis. Starts with the syntonic comma using a chord progression that moves the tune down by two syntonic commas - the pitch change between the end of the first tune and the start of it when it repeats is caused by this. Then shows the diesis that you get if you go up by minor thirds to the octave as in a diminished seventh - the c major chord that gets played again quiet and staccatto is shifted by a (major) diesis. Then the same, this time with the (minor) diesis you get if you go up by major thirds to the octave, and the c major chord played ff this time after the diesis shift. Then finally, all three commas together, each played twice, and each dovetailed on to the next. This time the repeated chord has no pitch drift, which demonstrates that if you stack a minor diesis and a syntonic comma together you get the (major) diesis.


Bug fixes

15th October 2003

Added another window for adaptive retuning. This shows the current chord and the previous two chords played, as intervals from 1/1, or lowest note in all the chords, and as chord intervals from the previously played note in the same chord. Also did some refining of the algorithm.

Also added a Strongly dovetail option. The way this works is that it not only looks at ratios with notes already in play, but also at ratios between currently played notes and the ones played in the previous chord. In particular it means that pure melodic lines will be just intonation even if they have no accompanying chords. This is more liable to diesis shifts, so it is preset to switched off, but works pretty well switched on with the C.P.E. Bach..

Also added an option to restrict the amount of the drift possible for chord dovetailing.

Here is the C.P.E. Bach piece again, this time with strong dovetailing, so that the melody lines use just intonation ratios even in the few places where they are unaccompanied:



Does have quite large diesis shifts here and there, e.g. at the end of the first repeat in movement 1. One could surely explore this method further to deal with those to some extent (some of course are inevitable with strict j.i.) but I'll probably leave it for now; that will be for next beta release cycle probably.

Set to wander free - this short piece is notated as a repeating arpeggio C E G# c first ascending then descending, and on the score, most of the melodic notes belong to it too. The movement of the chords is caused entirely by adaptive strict just intonation diesis shifts, resulting from the (minor) diesis, that you get if you stack three just intonation major thirds on top of each other:


You can do that sort of thing if you set the all the cents drift limits to 0 for no limit in the adaptive just intonation options windows.

Bug fixes

10th October 2003

Made a new separate window for the adaptive retuning. Also a few new ideas, particularly, idea to remember the previously played chord and retune to that. It is now practical to retune pieces to pure just intonation originally written in twelve tone, without the ugly diesis shifts of notes meant to sound as the same note. Some anyway.

Listen to this :-).



(sorry about the little clipped effects at the end of some of the notes from the all sound offs - I'll investigate and see what I can do to fix it).

The first two movements of the best known of Carl Philipp Emanuel Bach's sonatas for flute and continuo (one of the sons of the famous J.S. Bach) - well best known apart from two of the ones attributed to his father which are probably by him as well. It is retuned here using quarter comma meantone as the original scale before the retuning - I wonder if it is perhaps originally written for this tuning anyway as it sounds so good in it - but now retuned to just intonation on top of that. It uses the new standard settings for the j.i. window - pure j.i. with no compromises, and dovetail to previous notes or chords if less than a tenth of a second ago. Listen for a feeling of sharper clearer colours, kind of warm and bright and clear like colours immediately after a rainstorm.

By comparision, here is the first movement in quarter comma (which is also pretty nice, just not quite the wow factor of the j.i. one).


Bug fixes

6th October 2003


Out | Just intonation type | Restrict tuning drift: temper beyond +- 35 cents.

This is one possible solution to the problem of the two keys being retuned to the same pitch. It tempers it so that you can never drift further than 45 cents from the original tempering, enough to prevent duplicate tunings if you start with twelve equal. Does it as pure ratios for notes within 35 cents. Then beyond that, retunes by a little less than the amount needed for pure just intonation so that for instance, a 45 cents difference gets transformed into a 40 cents one, and a 55 cents difference gets transformed into a 45 cents one, and never lets you go further than 45 cents.

This is enough to have straightforward seven limit harmonise, such as a pure j.i. seven limit dominant seventh resolution to a pure j.i triad for instance. Not enough for the eleven limit harmonies - they will be a bit tempered with this option. Also harmonies will get tempered (even in the five limit) if they which wander far from the original tonality during a single series of overlapping chords. In final version the maximum pitch drift, and maximum pure ratio pitch change will be user set variables.

Out | Just intonation type | Restrict tuning dispersion (softer tempering, more drift).

This is another possible approach - let the tuning drift, and keep track of the average pitch drift of the notes in the current chord so far, and do it so the new note can't be more than say 45 cents from that, and tempered if more than 35 cents away, as before. This prevents the duplicated notes again, but lets one have twice as much leeway if all the pitch changes are up in pitch,or all down in pitch.

In its present implementation, it takes account of all notes played since the most recent moment of silence to find the average pitch drift. By way of an example, if you play a series of ascending minor thirds each overlapping with the next one only, it still takes the average of all those pitches played, rather than just the average of the last two. Later woud be nice to also do it so that it only takes account of notes currently in play, which would be softer tempering still and allow even more pitch drift with non duplicated pitches (with the overlapping minor thirds example this version would just drift endlessly as far as you like, with no tempering at all, - would drift really far quite quickly).

As usual, you just need to have a moment of silence, however short, even a millisecond, for it to reset. When this happens you may well get small diesis shifts of pitch from previous notes played - this is "By design" - if you have pure just intonation with no tempering as we have here, then they are an inevitable feature of the method.

Also note that you can use this option with any scale at all of course, not only with twelve equal. If you start off with some nice tempered twelve tone scale for instance, then the drift is the amount of drift from that tempering rather than the drift from twelve equal. But if the original scale you use is twelve tone, and goes far from twelve equal, maybe only lightly tempered from j.i. then it is possible that the 45 cents maximum here is too lenient and that you will want to reduce that to avoid possibility of duplicated notes - if so, it will need to wait until this option is done properly, probably during the next beta / release cycle.

Then, the pure j.i. retuning is retained as:

Out | Just intonation type | No tempering - may get two keys retuned to same pitch after tuning drifts.

Note that these new retuning options are best for new pieces and improvisations - they aren't particularly optimised for use to retune pieces written originally in twelve tone systems. There has been a lot of work on ways to make this work better, basically you need to do some tempering of the just intonation to keep notes fairly steady in pitch from one chord to the next, but do as little of it as you can (this is John de Laubenfels speciality). Maybe I'll do something on that here too but there is a lot involved. Retuning twelve tone pieces adaptively really works best if you can use leisure time retuning. Some pieces sound okay with pure just intonation tuning - what jars with the ear is if you have two chords that follow one on from another with a note in common that is clearly intended by the composer to be the "same note" and maybe it has to differ in pitch by a sixth or even a quarter tone to achieve just intonation (not hard for that to happen - stack three major or minor thirds on top of each other for instance and you are nearly a quarter tone out in pitch). Something has to give there; some kind of compromise is needed. But in an improvisation or a new tune you can make that diesis shift a feature as a melodic step and make clear that the notes aren't intended to be thought of as identical, then it is fine. Even just introduce a few prominent diesis steps early on in the piece and work with thm and then listener realises this is something new, not the same old twelve tone music, and is prepared for more of the same later on, and listens to it as a piece with more than twelve pitches in it (well if they are a bit used to microtonal music anyway).

Bug fixes

5th October 2003

More work on the retuning just intonation. Added new options:

Out | Just intonation type | Optimise for most ratios.

The way this works is that it finds the new pitch to be in just intonation ratios with as many of the notes already in the chord as possible, to within a tolerance of 4 cents (later will have option to set this by user). So if it is in tune with more notes, even if further from the original scale position, then that is the pitch that gets selected.

So anyway it is now finding the normal five limit chords such as 1/1 5/4 3/2 16/9 for the dominant seventh, and also more exotic chords, for instance, when you set it to thirteen limit, it is finding such chords as:

1/1 9/8 5/4 11/8 3/2 13/8 7/4

Try playing c d e f g Ab Bb in that order to hear it.

The order in which you play notes in a chord affects the tuning. If you play this chord as first a c then a Bb followed by the other notes, then it will tune the Bb at a 8/9 below the c because there is no way that the program can tell that the other harmonic series notes are on their way in a moment. So if you want your dominant sevenths to be harmonic series chords with this seven limit setting, you need to arpeggiate them slightly. Or indeed if you want it to be the five limit dominant seventh, arpeggiate it slightly the other way.

So for instance if you play c e g Bb in that order at the seven limit setting, then it will sound 1/1 5/4 3/2 7/4. But if you play them as c Bb ... , it will find the c as a 9/8 above the Bb rather than the 8/7.

This is just for now. Later I will add an option to set which tunings you want for any chord, so you will be able to say that you want your dom7ths to be tuned whichever way you prefer, similarly for any other chords you like.

Here is a midi clip of a jam session at the five limit setting :-):


If you want your melody lines to be just intonation you need to overlap successive notes in the melody slightly.

If you have many overlapping chords, or even just overlapping melodic notes, one after another, then eventually it may move so far away from the equal tempered tuning that two distinct notes of the keyboard may get retuned to the same note, or almost the same note to within a cent or so. Happened a few times in this improvisation - maybe noticeable on occasion that it was a bit of a surprise :-) ).

You can avoid this by making sure you have a bit of a space between the chords at some suitable point to let it reset back to the 1/1. Any gap at all with no notes sounding will do the trick, even if it is only for a millisecond or so. I'm not sure whether anything else can be done about that using this method of adaptive tuning, or whether one has to live with it - will think it over and see what can be done, if anything.

Also added a max ratio complexity - this isn't really needed so much when you have Optimise for most ratios in play. Anyway what it does is to set a limit on the product of the denumerator and the denominator of the fraction. So for instance, if you set the limit as say 30, then it will find new pitches that are at an interval of, 5/3 of notes already in the chord because 5*3 = 15 is less than 30, but won't find pitches at an interval of 9/5 from ones already in the chord because 9*5 is greater than 30. It does this up to octave equivalence, so 6/5 and 3/5 have the same complexity, both 15. So, the idea is to ignore all mutliples of 2 in the denumerator or denominator. You can use this if you find it is finding chords using intervals such as say 27/14 and you want it to find less complex ones than that.

Note, this is a measure of the complexity of the ratio between the new note and ones already in the chord. With this option in play, the note can get retuned if there is any sufficiently simple ratio between the note and others in the chord it , even if the new pitch is at some very complex ratio to other notes in the chord. Optimise for most ratios helps reduce the complexity of chords with several notes, while the max ratio complexity is more useful for reducing the complexity of diads.

3rd October 2003

View | Midi Keyboard Retuning | Scale Retuning - improved the way this works. Old explanation earlier in this page superseded.

First a quick intro for those who didn't see this last time I explained it. The idea of this option is that it lets you change the scale as you play.

You can bend any of the notes of the scale, apart from the 1/1. Once you bend a note, it stays in its new position until you retune it again. Maybe you only want to do this from time to time as you play, so you can designate one note of the keyboard (any unused note) as a key that switches this option on / off when you press it.

As before, it retunes only the most recently played note in a chord, so you can play a number of notes and then retune just one of them as you play, while keeping the others steady in pitch.

However, a couple of new tweaks improve the way it works.

First, when this option is switched on, then the 1/1 can't be pitch bent - this makes it easier to focus on the task of retuning the other notes. If you play a diad and one of the notes is the 1/1 then the other note is the one that gets pitch bent no matter what order the notes were played. More generally it now pitch bends the most recently played non 1/1 note

The other tweak is that you no longer need to release the pitch bend wheel and reset it to its zero position between notes as you had to before. Instead, it retunes by the amount by which you nudge the wheel from its position when you started the new note. So if you move the wheel with no note sounding, it has no effect at all on anything. If you then press a note down, it will sound at its current scale pitch, no matter what the wheel position, and then as you change the position of the wheel you nudge it up or down in pitch in the scale. Hope that doesn't sound too complicated - if you try it out I think you will agree that the way it works feels natural with this new way of doing things.

When using this option, maybe you will find your pitch bend wheel is quite coarse for this type of work. It isn't uncommon for a keyboard pitch bend wheel to have a minimum pitch step of a few cents, so that a small nudge sends the pitch all over the place. For this option you may need finer control than this. You can achieve this from In | Options | Keyboard Config | Multiply all pitch bends by - set this small for high resolution, e.g. if you set it to 0.1 then when you move the pitch bend wheel through its entire range, then it nudges the pitch by only a tenth of the normal amount.

You can keep the pitch bend range in this window at its standard setting of 2 semitones - what this does is set the maximum distance you can bend a note before it needs to be resounded. So when it is set to 2 semitones, you can bend a C at midi note number 60 up to D at 62 or down to Bb at 58. This range gives plenty of resolution for the pitch bends for FTS to use, because actually internally they are played to high resolution; it is just that most pitch bend wheels use only the most significant part of the pitch bend, and discard the fine adjustment component of it (probably for technical reasons to do with reducing the rate at which the midi messages need to be sent as you move the wheel). Main reason you might want to adjust the pitch bend range would be to enable large pitch bend swoops, e.g. if you like to do huge octave or such like pitch bend swoops as you play.

Bug fixes

1st October 2003

Please note:

Today's upload has an important bug fix - in some situations it was resetting to twelve equal and ignoring the pitch bends already applied until you change the scale or arpeggio. So update recommended, if you have found it occasionally resetting the tuning of the notes to twelve equal. Can happen after you show an Arpeggio window (or Seed or Scale window) and play a note there; possibly in other situations as well.

Also with the very new the Retune to Just Intonation - after you switch it on, if you switch it off again you find it is still retuning to 5 limit j.i.!

I think this indicates that it is time to start a new beta / release cycle soon. Sorry if you were affected in any way.

Some improvements in the Retune to Just Intonation chords (comma shifts). No longer skips 9s in the 7 limit without 5s etc - got better results without that.

Internally it has a couple of parameters that get set - the maximum cents difference for two notes to be retuned to the same pitch in a chord is 40.0 cents, and the maximum distance a note can be moved from its original position to be retuned is 70.0 cents. Later user will be able to set this. Later, will also do it so that the choice of pitches is weighted towards notes that are in just intonation intervals with as many of the chord notes as possible - at present just looks for at least one just interval with a note already in the chord.

In particular, when you play in 7 limit it currently finds

1/1 5/4 3/2 25/14 2/1.

because 25/14 is close to 12 equal and at 10/7 above the 5/4.

rather than

1/1 5/4 3/2 7/4 2/1.

where the 7/4 is further from the notes original 12 equal location, but in just ratios with all the other notes in the chord.

Similarly depending on the order in which you play the notes, it is likely to find 1/1 9/8 18/64 if you play C D E, and 1/1 9/8 5/4 when you play C E D as a broken chord. Would be better to always find 1/1 9/8 5/4.

Bug fixes

29th September 2003 - a few minutes later

This is a very minor bug fix upload. But, just thought while at it, may as well mention a couple of things to do with how you can use the new chords features.

First - while the fractal tune is playing, you can play along and everything will be in tune, from music or PC keyboard. So one can use the fractal tune as a kind of a backing track. If you set it to rotate the tonic around to match the chord root, you can play along with it in j.i.  Easiest if you have the music keyboard set to play the arpeggio from the white key - you will be able to get a few passing tones from the black keys too. Or if you have it set to play from all the keys you can still play along - just as a conventional twelve tone keyboard except that it will get retuned so that the particular chord that the fractal tune is playing at that moment is justly tuned on the keyboard.

Then in case you haven't discovered this feature yet, just to mention that you can use the new chord progressions window as a chord progression player. Just paste a progression into the window or type it in in conventional notation, and press the button to hear it played. You can set it to play chords or broken chords from the double quaver button below the play button or from Bs | Arpeggio & Scale play button opts.

Bug fixes

29th September 2003

Added Bs | Arpeggio | Synth wave Opts | Save as single wave. This is useful for making a sound font using those special waveforms - I am in the middle of doing one for the SoundBlaster sf2 format, more later. The motivation is that these waveforms are useful for listening to just intonation chords - because if one uses synths and samplers that use sampled sound then often the settings may be such that you can't hear the just intonation of a chord so very clearly as one might wish - e.g. because you can hear the looping of the waveform superimposed as a slow wah wah sound, or maybe because the wave samples are only pitched to a resolution of a cent or so (dissolving the distinction between the natural 3/2 and the equal tempered version for instance as they only differ by 2 cents). An FM synth is much better for hearing j.i. - except that there, often the designers of the patches make them with vibrato, tremulo, and various other effects that can again obscure the just intonation consonance of the chords, so you end up hunting around and tweaking them to get good j.i. patches.

Note that you can already use the Bs | Arpeggio window to make a wave file to demonstrate the chords and to listen to them to clearly hear the difference between just and equal temperament, and any other tunings you are interested in.

Here is how to do it (later I may redo this to reduce the number of steps involved):

Set up the arpeggio you want to hear in the Arpeggio window.

Go to Bs | Arpeggio and Scale playback opts or use Ctrl + click on the play button in the Arpeggio window and set up the type of playback you want, e.g. a chord or broken chord in this case probably.

Go to the Arpeggio | Opts button to the right of Synth Wave and then choose some interesting wave in the resynthesis drop list down there, anything except for sine waves which don't show off j.i. well. You can also modify the parameters there for each of the types of wave - this varies the sound timbre.

Then in the Arpeggio window click on the Synth Wave button. Then use Shift + click on the play button to play it back.

Each time you make a new arpeggio you need to click again on the Synth Wave button before you can playback this recording. In fact, as you will no doubt discover when you follow these instructions, this is a tweak of the frequency analysis section of FTS to use it to synthesize chords. When you click the Synth Wave button, what it does is to set up a frequency table with the notes of the arpeggio which it then synthesizes just as it would if it were synthesizing the result of a frequency analysis to compare with the original. But in frequency analysis normally you use sine waves. Here you use these special waveforms to give an interesting timbre for the chords and to bring out its j.i. qualities (or otherwise). The waveforms such as rounded triangles, saw tooth and square are chosen to be rich in high harmonics, so useful for listening to j.i. chords.

The new sound fonts, when ready, will let you play directly using some of these waveforms from the music keyboard or PC keyboard. I'll do them for Giga too. But first I'll see what I can do by way of automating it more in FTS - as it is at present it takes quite a while to do just a single font!

For a preview, here is a rounded triangle sound font for the SoundBlaster sound cards:


It is just a first experiment - I will do it better. For one thing it is silent in the highest register. Also it is only at half the maximum volume, a bit quiet. Also it is tuned to A=441 because that makes it easier as the waves can be of length 25 samples, 50, 100, 200, 400, 800, 1600. If the loop is one sample out with the higher frequencies, then that makes a big difference in the pitch, a huge error. But later I'll try changing the sample rate instead which will give better results probably and allow A = 440. Of course you can compensate for it, - the difference between 441 and 440 is 3.93 cents so set the pitch to say middle c fine tuned by -3.93 cents and you will have an A= 440 but since this detunes all the instruments played in FTS, it will be that much detuned compared with the other voices on your synth. Alternatively you could detune just the single part from the Parts window using the option to set an interval for each part from the drop list.

I'll do giga patches too later.

Also - added a few new options to the "Retune to just intonation" section in the out menu, including a rather wierd 13 limit one. While exploring that one to test it, in fact using the roudned triangle patch too, I came up with this really beautiful chord, so I think anyway. Incidentally you can see the intervals you are playing in every midi channel from Out | Notes in Play | Pitch bends - select intervals there instead and it will show the current interval in play in every channel - other ways to see them too. From the Tune window - use Options and set it to show intervals. Or record to midi as you play and simultaneously record all the intervals played in text format from File | Midi File Options | More Options | Log to text.

Anyway this is the chord:

1/1 13/11 4/3 3/2 16/9

and here is a fractal tune in it:


 (midi clip - also included as a new fractal tune in this upload).

Also did some work on the help. Added invisible "Skip navigation" links for blind users of FTS so that they can easily skip the navigation links at the head of each page. Just a bit of work on presenting the introductory overview page mentioning some of the new features - and added links to the on-line search pages for the FTS help.

Bug fixes

25th September 2003

 Added Bs | Seed Options | Arpeggios as Chord Progr. | Retune scale to chord roots

You can hear the effect here: Greensleeves chords just intonation harp

:-)  (midi clip - also included as a new fractal tune in this upload).

This rotates the scale around to match the chord, so that for instance if it is an A minor chord, sets the tonic to A.

New option:

Out | Retune to Just Intonation chords (comma shifts) | 5 limit, 7 limit, 11 limit or 13 limit.

This uses a simple approach for just intonation tuning. Basic idea is that it tunes new notes of chords to be in just intonation to ones already played, but doesn't bother at all about synchronising notes of consecutive chords with each other if they have no overlapping notes.

When you play just a single note then it gets tuned to the current scale. Notes in chords get tuned as close as they can to their current scale positions and still be in j.i. intervals with other notes in the chord. So the first note in the chord to be played is tuned to the current scale and as others get added, they get tuned in just intonation ratios to the ones already there.

It also uses a very simple approach to decide which intervals are j.i. - allows small number ratios like 3/2, 16/9, 5/4, 7/4. It looks for ratios between any pairs of numbers in the list:


(up to octave equivalence).

When there is a choice, it keeps as close as it can to the original tuning of the note. So when you have a choice between a 16/9 or a 7/4 for instance, e.g. for the A# above C, it will choose whichever is closest to the scale tuning - will be16/9 in twelve equal (unless the C has also got shifted because of other notes in the chord). When there are many notes already in the chord, it looks for a ratio with any of the notes that will keep it as close as possible to the current scale tuning. So the tuning depends to some extent on the current choice of scale.

The 5-limit version looks for ratios using any of 1,2,3,4,5,6,8,9,10,12,15,16,18,20,24, so never retunes to 7/4 or other 7 limit ratios.

To test this out to hear how it works, play an ascending series of overlapping major thirds, e.g. c e g# c' with each note overlapping the previous one. Then if you release the last c and play it again then you will hear it rise in pitch. This is the (minor) diesis 128/125. When you try this experiment, be sure to release the c before you play the g# or the g# will get tuned to be in a just intonation ratio with the c rather than the e.

It works like this:

 c   e    g#    c'
1/1 5/4 25/16 125/64

where each note is a just intonation 5/4 above the previous one.

You also get a diesis if you try playing a series of overlapping just intonation minor thirds at 6/5 - in fact when you do this you play the diminished seventh chord, which can't be justly tuned as it is impossible for all its intervals to be just - it always has to be tempered. The diesis this time is the 648/625 major diesis.

Similarly to hear the syntonic comma, go up by fifths, e.g. through the open strings on a 'cello, then drop back a major third to middle c, like this:

C' G' D A e c

If you play those notes with each note overlapping the next, and then release the last c and resound it, you will hear the syntonic comma 81/80.

For another experiment, go round a circle of fifths using ascending fifths or descending fourths for each step like this:

c g d a e b f# c# g# d# a# e# c. Overlap each note with the next to play perfect fifths or fourths, then release the last c and resound it and you hear it skip down by a Pythagorean comma.

So when you play using this new option, you will get lots of comma shifts like that of course, with all the intervals in chords justly tuned as far as it is possible. Comma shifts can seem natural, beautiful indeed as small melodic steps. At other times they may seem strange and xenharmonic to the ear. Try playing for a while with many overlapped notes, maybe deliberately making a comma shift, or whatever, then play a chord and release it and play again as a diesis shift - a diesis shifted chord can be quite an arresting and xenharmonc feature :-). (N.b. not sure what the distinction is between a diesis and a comma exactly - both are words for small musical intervals).

It is possible to do adaptive tuning that will remove the comma shifts - but this is far far harder than the simple approach used here. It involves being able to look ahead to see where the harmony is heading. Sometimes even the performer or composer may not know that - I gave some examples with the adapative puzzles on my tunes page. This doesn't mean to say it is impossible to do - but it is easiest if the program can look at a recording of a complete performance and retune it after the event - "leisure time retuning", the method used by John de Laubenfels, which I gather involves using a system of springs and weights.

If doing it in real time one might try maybe to make it so that the tune slowly gravitates back if it drifts away from the 1/1, with the tendency to go back getting stronger the further it drifts. However, some drift, or else pitch glides in the middle of a note as it plays, is probably fairly inevitable in real time adaptive tuning - in one of those adaptive puzzles, if the program makes the "wrong choice" then at the end of the series of chords it is more than a semitone out, and no-one could tell which is the right choice as both are equally valid depending on what comes next.

However - if you are going to follow a series of chords which can be decided on in advance, one could make a backing track for them, and add a tonic shifting channel, say channel 16, to that, and play it through FTS using its tonic shifting option. Then as one plays along with that track using the midi keyboard, also played through FTS, the keyboard would automatically be in tune with the backing track. This should be fairly easy to do. Possibly I may add an option to FTS to make a blank midi file and .rtn file from the current chord progression - with labels in the midi file so that composer can see which chord(s) each bar is retuned to. Meanwhile one could just make such a track oneself. Be sure to ask me if you want to do this and want help with the technical details of how to do it in FTS - it isn't at all hard to do.

Bug fixes

23rd September 2003

If you found the I, V etc notation wasn't working then that is because of a bug and it is fixed now, sorry! See the Bug fixes page.

Added some more buttons to the new Bs | Seed Options | Arpeggios as Chord Progr. Moved it around a bit too so that the chord progression is now at the top.

Amongst the new buttons, you will find one to play the entire chord progression so that you can hear what it sounds like in advance, as well as individual chords. Also one to copy it into the main window or into an Arpeggio window. Then there is a new Add button - to save a chord progression quickly, just enter a new name for it into the drop list box and press Add and that is it done. You get a message if it already exists. Really it is just a Save button, but because Save is usually used only to save a file that you have already saved before, I have renamed it to Add to make it clearer what it does.

A few more example fractal tunes including Daybreak_over_the_ocean, jungle_frog_chorus, and In_Dorian_Mode. Added Seed Options | Auto ground seed at layer. This deals with the matter of the tune sometimes getting very high as it progresses. Just set it to ground at a particular layer and it will never wander too far from the 1/1. Doesn't make it repeat exactly because of the fractal structure, just keeps it within the range.

Bug fixes

20th September 2003 later in the day

Bs | Seed Options | Arpeggios as Chord Progr

Now recognises I, II, ii, VIIb etc as standard symbols as well as C, D, Dm, Bb, etc. For example progressions, see Olav Torvund's Chord progressions for Guitar

For the Am, Csus4 etc chord symbols see Howard's Big List of Guitar Chord Shapes, and for example progressions in this notation, see Circle Progressions at

Seeds with chords (how to expo)

To see how it is done try Bs | Arpeggio and Scale play button opts | Make a seed from this chord, broken chord or sequence.

The idea is to use notes of zero length like this for a triad: 

 0 1 2  ; 0 0 1

Then set the Duration for each note to three seed notes in Bs | Tempo & Volume for Tune .

You can build up melodies in the same way, putting everything in groups of three. If you want to have a mixture of triads and single notes or diads, silence the remaining notes in each group of three, like this:

A chord followed by a couple of single notes:

0 1 2, 3 3 3, 4 4 4,   ; 0 0 1, 0 0 1, 0 0 1 * 1 1 1, 0 0 1, 0 0 1

(everything after the semicolon shows note times, and after the * shows the volumes. Alternatively, edit them in the Bs | Seed as Text window).

A single note followed by two broken chords

0 0 0, 1 2 3, 4 3 5 ; 0 0 1, 0.1 0.1 1, 0.1 0.1 1 * 0 0 1, 1 1 1, 1 1 1,

Looking forward

This method of making seed chords has some limitations. The graphical display of the seed shows a single line still, and when you record your playing it records a monophonic line for the seed..

I have plans for a way to present the seed in a piano roll type view for editing. Each seed entry will be a column of the roll, and there will be a way of making a note in one seed join onto the next.

If one wants to edit the seeds as text, then the idea will be to use square brackets [] to jon notes together to make a chord and tildas ~ to sustain notes to the next chord, like this:

[0 1 2] 3, 4

[0 1 2] 1~ [1~ 2~] [1 2 3] 4~ [4~ 3~] [4 3 5]

for those two examples.

The seed chords will be limited to four notes each, or alternatively eight notes if you limit the seed numbers to the range -31 to 32 - this is just for each seed of course, not the tune as a whole. This is for technical reasons (will be using sub fields of a 64 bit integer in the first instance as it is an easy mod of the existing code) - later I may make them unlimited..

Something else to expect in the near future, probably before the piano roll in fact.

Now is a good time to add in a search of the SCALA chords list, which I have had in mind to do for ages now, and I also have an idea for a method to search the current scale whatever it is to find all its just intonation chords or close approximations to them with any number of notes.

Anyway a little more on this next week surely, will work on the chords some more. However, it will still be a little while yet till I'm back to FTS full time because of the other programming projects I'm working on at present, and the small programs series that I'm gradually getting under way. Meanwhile if you have ideas or suggestions be sure to contact me at any time - I like to plan out projects like this well in advance of the coding where possible. Maybe do the SCALA chords next week depending how it goes :-).

The Seed piano roll will probably eventually develop into a piano roll view for the Midi Relaying (Midi In) section of the program - part of my long term aim to make a first start on a truly microtonal music notation software program.

20th September 2003

MFX users - please note that there has been a major bug fix for the plug in - be sure to re-download if you use it.

Midi Keyboard users and Midi Relaying (Midi In) - this upload has a number of bug fixes for Midi Relaying (Midi In) so if you found anything not working quite as it should, this may have fixed it. If not, please let me know!

Note for XP users with Giga.: You will know that you can't use the Midi Yoke beta for XP because it freezes Giga - a known issue, as mentioned in the help. However, I'm told that Maple Midi Tools from maplesound works with Giga in XP fine, without freezing the computer and is now freeware too. It also works fine in Windows 9x. However, it doesn't relay sysexes at present, which Midi Yoke can do, so it won't take the place of Midi Yoke yet for use of FTS with the FM7..

Added Bs | Seed Options | Arpeggios as Chord Progr

This lets you set a chord progression to use for the tune. Most of the tunes don't use chord progressions at all, instead they rely on a kind of layering effect of many simultaneous passing tones to work. However with this option you can now try out the tunes with chord progressions as well. The way it works is that the arpeggio for the fractal tune changes as it continues, following the progression. You can enter standard chord names such as Am7 etc for the chords. These will be recognised even in scales with many more than 12 notes, as they find whatever are the nearest pitches in that scale.

Here are a couple of example midi clips to show off the chord progressions :-):

Today's upload has a number of example fractal tunes using them in the new 2.4 folder (and I'll be adding more).

You can also make your own chords and define symbols for them - though this chord list isn't quite so flexible as the standard chord names as it doesn't get automatically translated when you change to another scale with more or less notes to an octave etc.

For more details see the tool tip extra help for the chord progressions window in this new dialog. There is more to come here!

Note that once you start using chord progressions, it makes a lot of sense to set Parts | Octave Shift to show Arpeggio Degree Shift instead, and so e.g. play notes one or two apart in the arpeggio.

Also added a new drop list of tunes, 2.4. Just has a few so far; more will get added.

Scales for Parts Presets: Added an option to let one specify which channel to use for tonic shifts / drift / transposing. The idea was that one might want to set the part to say 15 or 16 so that you can use a music keyboard to transpose a fractal tune around as it plays.

This is a first step towards a fractal arpeggiator.

So if you want to give it a go - first make a fractal tune or open one that you would like to use for your fractal arpeggiator.

Now go to Bs | Seeed Options | Scales for Parts Presets and select channel 16 (say) as the as the part to use for the presets. Then make the tonic transposing preset.

Be sure to un-mute the tonic transposing part - at least, if you want to hear your own playing as well as the fractal tune, that is.

Now when you play the fractal tune and play from the keyboard at the same time, you will find that the tune shifts around as you play.

It's not quite the same as a normal arpeggiator because in effect the fractal tune changes key all the time as you play the tonic transposing notes. Anyway rather than to try to explain that - if you try it out you will hear what I mean straight away.

If you want to change the main window scale or arpeggio, then select the option to auto remake the preset - this saves you the need to make it again every time you change the scale or arpeggio.

Added Out | Tuning Programs Options | Save Sysex As - to save the MTS sysex as a .syx file for tuning a synth or soft synth.

Work on the layout of the Tuning Programs Options window to make it easier to use and see what everything does.

Bug fixes.

For older updates, see What's new up to September 03.


Test Midi File Player & Sound card / Synth
Download Tune Smithy
Tune Smithy Manual (or popup)
Search Manual
FAQ & wiki
What's new
New Features Blog
BUY Tune Smithy








To find this feature:
look in the
Tune Smithy Tasks window for:
Acceptable Use Policy
Special Offers
Site Designed with advice from Sojo Media (Thanks!)
© Robert Walker 2008
tool tips by overlib
Robert the Inventor's programs
By Robert Walker

NEW metronome software - Download Bounce Metronome Pro with bounces and conducting patterns to help you stay in time.