From the help for Tune Smithy
Skip navigation Overview Seeds etc User guide Main Window Musical note intervals Scales Midi in Analyse sound
Hide Contents

File formats used by Fractal Tune Smithy

List of Fractal Tunes (*.LFT) , List of Musical Seeds (*.LMS) , List of Arpeggios (*.LMD) , LMD tags for Modename.htm , List of scales (*.LSC) , SCALA Scale (*.SCL) , Tune Smithy (*.TS) , Configuration settings (*.INI)

List of Fractal Tunes (*.LFT)

Edited by clicking the Ed button to the right of the Fractal Tunes drop list.

[1.082a - this one]

Shown in the drop list as:

[1.082a - this one]
african jungle
african xylophone

So, you can include the folder as part of the file name - in fact you can give the complete path there if wished. Extensions are left out when they are displayed in the list, underlines are changed to spaces, and the folder is left out.

You can also include musical seeds as entries. This is for compatibility with earlier versions of the program, which had only one drop list for both the seeds and the fractal tunes. When such an entry is selected from the drop list, it is read as a musical seed and shown in the Musical seed box.

FTS first tries reading an entry as a file, and if the file doesn't exist, and the file name begins with a numeral, it opens it as a seed instead.

However, you can also specify that all the entries from a certain point on are seeds or files in the drop list.

For seeds, add a line


(note the underline)

From then on the entries are read as seeds.

To go back to files, add


If most of the entries are seeds, you can include files individually by prefixing each line with




List of Musical seeds (*.LMS)

Typical entries:

file: musical seeds drop list.lms
file: 1.082a.lms
file: 1.082b.lms
file: 1.09a.lms
file: 1.09b.lms
0 1 2 0
0 1 0 3 4 3 -1 -2 -1
0 1 3 2 -2 -1 ; 0.05 1 0.5 0.05 0.15 1
0 1 3 2 -2 -1 ; 0.05 1 0.5 0.05 0.15 1 v 1 0.5 0.3 0.4 0.8 1 0 1 3 4 -1 1

These will be shown in the drop list as:

tune smithy drop list
0 1 2 0
0 1 0 3 4 3 -1 -2 -1
0 1 3 2 -2 -1 ; 0.05 1 0.5 0.05 0.15 1
0 1 3 2 -2 -1 ; 0.05 1 0.5 0.05 0.15 1 v 1 0.5 0.3 0.4 0.8 1 0 1 3 4 -1 1

Lines such as 0 1 2 0 specify musical seeds. These are shown in the drop list exactly as in the file.

For explanation of the v and ; in the seed see Note volume and Time for one note.

You can add a comment after the seed by prefixing it with =, e.g.

0 2 1 0 = african jungle

Lines beginning with file: open files. The rest of the line is read as the name of the file to open. File name can include paths, and if no path is given, it is looked for in same folder as the Fractal Tune Smithy.exe file

The drop list will show the file name with the extension (if any) removed, and any underlines replaced with spaces.

You can also use the entry


The rest of that line, and all subsequent lines are read as file names



to switch it off, so that all entries are read as seeds.

See also the +... | Make musical seeds drop-list from all seeds in fractal tunes list button.



List of Arpeggios (*.LMD)

File | Save As | Save as type | Lists of Arpeggios . Saves the contents of the Arpeggios drop list in the main window. Incidentally, the reason for the file extension .LMD is that originally the Arpeggios drop list was called the Modes drop list - but got changed to Arpeggio because of the possibility of confusion for FTS users accustomed to the more common meaning of the word Mode in music meaning a rotation of a scale so that it starts on another note.

Can be re-ordered or changed using Bs | Scales Options | Sort Scales or arpeggios list and File | Scales Options | Search Scales or arpeggios list .

Can also be edited by hand using the Ed button below the Arpeggios drop list.

Each line corresponds to one of the arpeggios. So if you just want to change the order in the drop list by hand, re-order the lines in the file accordingly.

1 100 ! Equal temperament
1 2 2 1 2 2 2 G.Mixolydian, G.Hyperdorian, M.Hypophrygian,M.Locrian, Pien chih: China

First line gives an example of a scale for which the arpeggios are appropriate.

It starts with the scale definition. This is exactly as it is shown in the Intervals box with Steps unselected .

It is followed by an ' ! ', then the scale description.

When the file is read, this scale is read into the Scales and Intervals boxes.


Second and subsequent lines show individual arpeggios.

Each line starts with the arpeggio definition as steps. This is exactly as shown in the main window when you have Steps selected , and leave out the initial 0 .

The definition is followed by the title. The title starts as the first non numerical symbol in the line.

If you want to set a title that begins with a number, prefix it with the character ' # '. If you ever want to give a scale a title beginning with the symbol '#', start with "##".

For arpeggios that start on some note other than the first note of the scale, put the first note in square brackets.

[20] 2 4 3 2 4 4 3 Murchhana Rajani

(mode for Indian Shruti scale)

For arpeggios such as melodic minor that have both ascending and descending forms, use this notation:

0 2 1 2 2 2 2 1 | -12 2 1 2 2 1 2 2

The | shows that the second part defines the descending arpeggio. However, rather than use negative steps, you use a -12 (or however much is needed) to take you back to the start of the scale, followed by ascending steps like the ascending mode. This is one of the formats you can use for entering an arpeggio in the main window.

The dropdown list of modes will be prefixed by Clear and Follow Scale entries.



The line beginning with + is the one you will see selected when the list of arpeggios is first shown. .

If no line is marked in this way, it resets to Follow Scale .

To add another list of arpeggios as an entry , use file name bracketed by asterisks:

*2 to 4 note modes...* #2 to 4 note modes...

You can use:

*:* for the list you get when a scale has no modes list associated with it - the one with entries like 0 -1 2.

*:12* for the short preset 12 tone list of modes.

This next feature is likely to be rarely used, but here are the details, so that it is documented, so you know it can be done:

Since the LMD file already has a scale associated with it, one would normally leave the list of scales unchanged when one changes the arpeggio. However one can associate a list of scales with a mode.

To associate a list of scales with a mode:

1 2 2 2 @Pelog.lsc@ Jegog...

When you select this mode, the list of scales will change to show Pelog scales, as is appropriate for the mode of Jegog. This feature is enabled when Sync. Arp. is selected.

If no list of scales is specified, the original list of scales is left unchanged when the list of arpeggios is selected.

To add the same list of scales for several modes in the file at once, place a line like this immediately before them:

~all @Pelog.lsc@

It remains in force until you change it.

You can use:

@:@ for the preset list of scales (the one ending with the Indian shruti scale, then More Scales...).

@@ to associate no list of scales - leaves the scales as they are when the mode is selected


LMD tags for Modename.htm

You can add tags to the SCALA file modename.htm to specify which scales to use as the preset ones for the modes lists you can make using:

File | Scales options | SCALA scales | Make LMD files from SCALA list of modes . See SCALA scales for more about this button.

If no scale is specified, and no key word is recognised in the title, it is preset to n-tone ET, where n is the number of notes in the mode.


<SCALA_SCALE_DESCR Indian shruti scale>
<SCALA_SCALE_DEF 256/243 16/15 10/9 9/8 32/27 6/5 5/4 81/64 4/3 27/20 45/32 729/512 3/2 128/81 8/5 5/3 27/16 16/9 9/5 15/8 243/128 2/1>

These need to be on new lines, and to be added before the first entry in the table for the list of modes. You need to leave out the 1 that starts the scale.

There has to be both a scale def and a scale description for it to be recognised. You can have multiple descriptions and defs for the same list of modes - these are then added as multiple scale entries in the contents list, SCALA Modes.lsc, with all of them linking to the same LMD file.

When there are multiple defs, the first one is saved to the LMD file, and will be the preset scale if you open the LMD file using File | Open .

If no scale is specified using tags, the title is searched for key words.

Title key words recognised at present are:

Pelog - add typical pelog scale.

Indian Shruti - add Indian Shruti scale.

Persian - add Persian 17 note scale.

Arabic Pythagorean - add Arabic Pythagorean scale.

Mandelbaum - add Mandelbaum's 5-limit 19 tone scale, and 19 tone ET.

Bohlen-Pierce - add Bohlen-Pierce original 13 step scale, and ET version.

Tamil - add a 22 tone Shruti scale with extra flattened fifth 40/27 replacing the entry which is 729/512 or 64/45 in the Indian Shruti scale.

This Tamil scale is a best guess at present, following a suggestion I came across for the original Tamil Shruti scale. The page I saw it in however is no longer on-line. If anyone has more information about what is the suitable scale to use for these modes, let me know!

As far as this particular mode is concerned, result is same as if Indian Shruti scale was used.

Any more details for this welcome!

Your tags override the title key words search.

Some tags are included already, and you can use these as examples to follow.

The original HTML also has descriptions of the scales in human readable format. However FTS doesn't attempt to read these because it would also have to recognise any variations in the layout to make the descriptions easier to read; and also distinguish scale entries from any other comments that might be added.

The line


near the head of the file is used to check that FTS is up to date with the format, and will be able to read the file and convert it to LMD files.


List of scales format (*.LSC)

File | Save As | Save as type Lists of Scales . Saves the contents of the Scales drop list in the main window.

1 5/4 4/3 3/2 5/3 2 Woodstock windchimes "From Olympos" [p10]

Each line starts with the scale. This is xactly as shown in the Intervals box with Steps unselected .

This is followed by the title, as the first non numerical symbol.

If the title begins with a number, prefix it with the character ' # '. This character is ignored. If you ever want to give a scale a title beginning with the symbol '#', start with "##".

The Clear entry is left out, as it is automatically added when the file is opened.



Add at head of file, on separate lines:

*needs_octave (note the underline char). A "2" will then be added to the end of each scale, for the octave.

*steps. Scale definition will then be read as steps, exactly as for the Intervals box with Steps selected .

To show a scale immediately when the file is read, place a + sign at the start of its row. Otherwise, scale is reset to first in the list.

To add another list of scales as an entry, use file name bracketed by ats:

@xylophone.lsc@ #Xylophone scales...

To associate a list of modes with a scale:

1 63.1579 cents *19 tone.lmd* #19 note micro tonal (M)

Then, when you select this scale, the list of modes will change. This feature is enabled when Sync. Arp. is selected.

To associate a single mode with a scale:

add it within tildas after the scale definition: ~0 1 2 3 4 5 6 7 8 9 10 11 0 Cycle round notes of scale~

1 124.347 cents 63/47 68/47 805.224 cents 2/1 101/47 126/47 136/47 449/141 4/1 202/47 ~0 1 2 3 4 5 6 7 8 9 10 11 0 Cycle round notes of scale~ Gamelan selunding from Kengetan, South Bali (Pelog), 1/1=141 Hz

When you select this scale, FTS will make the short preset list of arpeggios - the one with the Follow Scale entry, and add in the new mode as another entry - with the new one selected.

You can also use ~@ Cycle round notes of scale~ as a shortcut for a cycle round all the notes of the scale - will get displayed as 0 1 2 3 4 5 6 7 8 9 10 11 0 Cycle round notes of scale up to the needed number. The '@' gets replaced by the cycle

Short preset list:

If no list of modes is specified for a scale, the preset list has entries 0 -1 2, etc which can give interesting effects, and with Follow Scale as the one selected.

To add the same list of arepggios for several scales in the file at once, place a line like this immediately before the first one:

~all *19 tone.lmd*

It remains in force until you change it with another similar instruction.

You can use:

*:12* for the short preset 12 tone list of arpeggios.

*:* for the list you get when a scale has no modes list associated with it - the one with entries like 0 -1 2 (this can be useful to override one specified using *all)

** to associate no lists of modes with the scale - leaves the modes as they are

@:@ for the preset list of scales.


SCALA Scale format (*.SCL)

File | Save As | Save as type Scales . Saves current scale as shown in the Intervals box.

! pygmie.scl
Pygmie scale

Lines that start with ' ! ' are ignored.

First non comment line is the title for the scale.

Next non comment line is number of notes in the scale

Subsequent non comment lines give the individual notes.

First note of scale is omitted, taken to be 1/1 .

When you open a scale, if the last note is anything other than an octave, F.T.S. sets the mode to cycle round all the notes of the scale, returning to the start of the scale after the top note. This is because some of the scales in the archive are for instruments such as pan-pipes or xylophones with limited compass, that don't have any notes beyond the scale as recorded. Others are scales with non octave repeats, and for those, one will want to select Follow Scale.

This is the format used by the Scala program. For details: Scala scale file format. No .SCL files are included with F.T.S., however you can download an archive of over 2000 scales in this format with the Scala program.

You can make a .LSC file from all the .SCL files in a directory from File | More Scales | Make List of Scales...


Tune Smithy format (*.TS)

File | Save As | Save as type Tune Smithy Files .

General format of entry:

Single value:

Name value

Fixed number of values

Name values

Variable number of values

Name values //

The // can be replaced by any non numeric characters.

Check boxes

Name=1 or Name=0 (no space before / after the equals sign)

All entries have preset standard values, and there is no need to specify them if identical to the standard values.

To set all the values to the standard values to see what they are, choose New from the File menu.

It isn't really anticipated that anyone will want to edit these files by hand - but in case you do, or are just curious here are some of the settings. If you need more details, contact me - this only lists some of the older settings in FTS. and not any of the more recent fractal tune features. You can also try selecting / unselecting an option in FTS, or changing a value, and see which line of the file gets changed as a result.



List of some of the main settings

This list shows some of the settings, listed according to the window in which they occur as:

Name description (as shown in the window)

In some cases, the Name is identical to the description, except that spaces are replaced by underlines. For these, the description is omitted.

When there is a fixed number of values, the number of values will be shown in square brackets: [16]

When there is more than one value, and the number is variable, it is shown with a []

A value for a check box is shown as the value that needs to be set (because you only need to use it in this form):

Name=0 if preset value is 1

Name=1 if preset value is 0



Pitch window

Frequency_of_lowest_note - Freq



Main window

ListOfModesFile - file for current modes list of arpeggios
- Seed Layers - 2
- Rhythm fractal in all laysers up to... - 2nd value prefixed by r
Note_heights - Seed numbers...
- all this information is shown in musical seed box in format Note heights ; times v volumes #r min note in milliseconds
The times_by_melody_pos and volumes_by_melody_pos (if present) need to have the same number of values as the Intervals_Title - Scales
Intervals_1 [] - Intervals

They can be given in cents, ratios or the n(..) notation. When saved by FTS, they are shown with the max quotient for ratios set to 100000000, the max quotient for ratios of form n(..) set to 100 and show cents or small ratios switched off. (some of the earlier ts files are saved with other values for these settings).

Intervals [] - shown with 1 subtracted from each entry.

To show the scale values in FTS in this form, to match the entries in the file, enter #sub1 into the time for one note box. A Subtract 1 from pure ratios box will appear. Select this. Also unselect Steps .

This box Subtract 1 from pure ratios is unlikely to be used much, so is reset to hidden and unselected at the start of each session.

Many of the TS files that come with the program are saved with this setting, as it was originally the standard setting.

Arpeggio_Title - Arpeggios
Arpeggio [] - Arpeggio note numbers (as shown with Steps unselected)



Note timing options

(click on the +... button below the time for one note box)

Note_length - time for one note
Top_note_length - time for 10th note of scale
Top_note_volume - vol for 10th note of scale
Note_timing_shift - amount to shift by




Channel - highlighted part
Voices_for_channels [16] - voices
For complete list of voices, with numbers for each: GM voice numbers . Non melodic percussion is shown as 128 + the number from the non melodic percussion table

Choose_channels_by - order of play menu selection - possible values:
shift_by_octave_or_arpeggio [16] - Octave shift menu ( above 3rd col )
Octave_shifts_for_channels [16] - 3rd col
Volumes_for_channels [16] - vols



New seed window

VolForSilentSimNote - vol for sim. rests



Choose parts by other

(window that shows if you click Other... in the Order of play menu for Parts window)

ccbo_first_channel - value for C (part) for first note of melody
ccbo_multiple_notes_in_same_channel=1 - Allow multiple notes per part for sustain
Standard setting for this one depends on Choose_channels_by - if that is 2, the preset value is 0, and if other than 2, preset is 1.

ccbo_sym_chs=1 - Notes for layers can sound simultaneously
sz_ccbo_formula - Formula



Ranges for parts

Min_notes_for_channels [16] - lowest note of range
Max_notes_for_channels [16] - top note of range
Sync_to_pitch [16] - Lock to pitch
iPitch_for_sync_to_pitch [16] - used to keep track of pitch for lock to pitch
iVibrato [16] - Vibrato on or off col - Channels effects



Parts effects

dVibrato_freq [16] - vibrato freq in hertz
dVibrato_amp [16] - vibrato amp
dVibrato_vol_amp [16] - optional second entry for vibrato amp, to set tremolo effect
iPortamento [16] - portamento on or off
iPortamento_slide_time [16] - portamento slide



Seeds Options

There are so many parameters for these windows that it would take several pages to list them all.

The values for the check boxes and radios are:

Multiple seeds:

ft_rotate_multiple_seeds, ft_permute_multiple_seeds

Seed symmetries:

ft_reverse_seed, ft_reverse_rhythm, ft_invert_seed

Seed permutations etc:

ft_rotate_seed, ft_rotate_seed_times, ft_sync_rotate_seed_with_times, ft_sync_rotate_seed_with_volumes
ft_permute_seed, ft_permute_seed_times, ft_sync_permute_seed_with_times, ft_sync_permute_seed_with_volumes, ft_shift_perm_first_note_to_zero
ft_add_to_seed, ft_add_to_seed_times

Golden ratio rhythm:

play_golden_ratio_rhythm, gr_three_beat_rhythm

radios for this window: golden_ratio_rhythm, gr_seed_long_beat_one_level_higher_than_short

Custom 2 or 3 beat fractal rhythm:

play_2_beat_fr_rhythm, play_3_beat_fr_rhythm, show_all_gr_levels 

(plus play_golden_ratio_rhythm and gr_three_beat_rhythm )



List of scales format (*.LSC)

File | Save As | Save as type Lists of Custom Voices .

Normally edited using

File | Voice... | Custom voices | Edit Custom melod. voices..


File | Voice... | Non M. Perc. Custom | Edit Custom N. M. Perc.

Typical entry:

CustomVoice 5
szDescr Flute + 5 + 7 triangle
nInst 3
iInst 0 ipatch 208 nrepeat_at 4 nnotes 2 0 1
iInst 1 ipatch 73
iInst 2 ipatch 209 nrepeat_at 6 nnotes 2 0 1

With comments to explain them:

CustomVoice 5 = its position in the menu (0 = first entry)
szDescr Flute + 5 + 7 triangle = The description you see in the menu
nInst 3 = Number of instruments
iInst 0 ipatch 208 nrepeat_at 4 nnotes 2 0 1 = Midi patch number for first instrument, and notes to play
iInst 1 ipatch 73 = Midi patch number + play them all
iInst 2 ipatch 209 nrepeat_at 6 nnotes 2 0 1  = Midi patch number for first instrument, and notes to play

Other possible entries:

iMidiShift -12 = shift down by one octave (12 midi notes)
dExtraShift 3/2 = transpose up a major fifth

Configuration settings (*.INI)

The file FractalTuneSmithy.ini is automatically saved at the end of the session, provided you have File | Auto save Config selected. You can also open or save configuration settings using File | Save As | Save as type | Configuration Settings

The general format for entries in the .ini file is the same as for .TS files. The .ini file records the values that are set to their standard settings when Reset check boxes, colours etc is clicked from the file menu. However there are so many values that can be set for the .ini file, so they will not be listed here.

You may notice that some names start with lowercase letters, or clusters of letters:






This is "Hungarian Notation" as used by many Windows programmers. It is named in honor of the Microsoft programmer Charles Simonyi. C doesn't have the same amount of data type checking as some other languages, and this notation helps prevent programming errors due to mismatch of data types.

Here are some of the main data types used by FTS for the .ini file.

Example C data type meaning
szWordsToFind String terminated by 0 character A string is any sequence of characters.

The z stands for zero. That's because when stored in memory, a value of 0 is used to mark the end of the string.

iFormatForNoteNames int 32 bit Integer, range -2,147,483,648 to 2,147,483,647
bFactoriseRatios Boolean 1 for true, 0 for false
wWhatToSearch Word Unsigned 16 bit integer, range 0 to 65535
dMaxMidiFileSizeForGallery double Number with decimal point such as 1.5.

Can also use notation 2.8e+5 (2.8 with decimal point shifted 5 places to the right, i.e. 28000). Numbers in this notation are called floating point numbers.

Range 2.2250738585072014e–308 to 1.7976931348623158e+308

N.B. I am in the habit of using double for all numbers with decimal points, except for a few arrays where the amount of memory allocated is a consideration. That's because doubles have more numbers after the decimal point, so are more precise, and if all numbers are doubles, one doesn't need to think about effects of converting between different floating point data types.

Similarly, I am in the habit of using 32 bit integers. The 16 bit integer type has range –32768 to 32767.