Overview - Seeds etc - User guide - Musical note intervals - Scales - Midi in - Other pages
File formats used by Fractal Tune Smithy
Musical seed drop list (*.TXT) , List of Modes (*.LMD) , LMD tags for Modename.htm , List of scales (*.LSC) , SCALA Scale (*.SCL) , Tune Smithy (*.TS) , Configuration settings (*.INI)
Musical seed drop list format (*.TXT)
Typical entries:
file:
tune smithy drop list.txt
0 1 2 0
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
...
Shown in the drop list as:
tune smithy drop list
0 1 2 0
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. Musical seeds are shown in the drop list exactly as in the file.
Lines beginning with
file:
open files. The rest of the line is read as the name of the file to open. If no path is included in the file name, it is looked for in same folder as the Fractal Tune Smithy.exe file
Entries that open files are shown in the drop list as the file name with the extension (if any) removed, and any underlines replaced with spaces.
If an entry begins with
all_files:
then the rest of that line, and all subsequent lines are read as file names
all_files:
musical seeds drop list.txt
amble.ts
arabic_17_tone_maqam_Iraq.ts
any_day_now.ts
ascending_above_the_clouds.ts
Shown in the drop list as:
musical seeds drop list
amble
arabic 17 tone maqam Iraq
any day now
ascending above the clouds
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 modes are appropriate.
It starts with the scale definition. This is exactly as it is shown in the Intervals box with Add 1 to pure ratios ticked, and Steps unticked . The word cents can be omitted - program assumes
that any number larger than 10 in a file in the .SCL or .LMD format is in cents.
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 modes.
Each line starts with the mode definition as a list of steps. This is xactly as shown in the Note numbers box with Steps ticked , and leaving out the initial 0 .
The mode definition is followed by the title for the mode. The title starts as the first non numerical symbol.
If the title that 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 "##".
For modes 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)
The dropdown list of modes will be prefixed by Clear and Follow Scale entries.
Options
To show a mode immediately when the file is read, place a + sign at the start of its row.
Otherwise, mode resets to Follow Scale .
To add another list of modes 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 default 12 tone list of modes.
Since the LMD file already has a scale associated with it, one would normally leave the list of scales as it is. 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. Modes is ticked.
Default: if no list of scales is specified for a mode, list of scales is left unchanged when it 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 default 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
You can add tags to the SCALA file modename.htm to specify which scales to use as the defaults 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, defaults to n-tone ET, where n is the number of notes in the mode.
Format:
<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 entries in SCALA Modes.lsc , all linking to the same LMD file.
When there are multiple defs, the first one is saved to the LMD file, and will be the default 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 suggestion for original Tamil Shruti scale in:
http://www.cco.caltech.edu/~vidya/music/srutis.html
(as far as the 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
<SCALA_MODNAMES_FORMAT 1>
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.
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 unticked .
The scale definition is followed by the title for the mode. The title starts 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 dropdown list of scales will be prefixed by a Clear entry.
Options
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 ticked .
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. Modes is ticked.
To associate a single mode with a 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~ Gamelan selunding from Kengetan, South Bali (Pelog), 1/1=141 Hz
(associates list of modes consisting of Clear, plus the specified mode, with the one specified selected).
Default:
If no list of modes is specified for a scale, the default 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 scales for several scales in the file at once, place a line like this immediately before them:
~all *19 tone.lmd*
It remains in force until you change it.
You can use:
*:12* for the short default 12 tone list of modes.
*:* 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 default list of scales.
! pygmie.scl ! Pygmie scale 5 ! 8/7 21/16 3/2 7/4 2/1
(format used by the Scala program)
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 .
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.
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...
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 default values, and there is no need to specify them if identical to the default.
To set all the values to the defaults to see what they are, choose New from the File menu.
List of all values
These are listed according to the window in which they occur as:
Name description of value ( as shown in the window)
In some cases, the Name is identical to the description of value , except that spaces are replaced by underlines. For these, the description of the value is omitted.
When there is a fixed number of values, it is shown in square brackets: [16]
When there is more than one value, and a variable number, shown as []
If it is a value for a check box, shown as the value that needs to be set:
Name=0 if default is 1
Name=1 if default is 0
Pitch window
Frequency_of_lowest_note - Freq
Main window
ListOfModesFile
-
file for current modes list for Modes or arpeggios
Sustain
Channels_in_Play
Levels
iRhythmFractalToLevel
-
Levels
- 2nd value prefixed by r
Note_heights
times_by_melody_pos
volumes_by_melody_pos
min_note_in_milliseconds
- 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
Note_heights
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 [] - with 1 subtracted from each entry.
To show them like this, enter #sub1 into the time for one note length, then tick the Subtract 1 from pure ratios box that will appear. Also untick Steps . Subtract 1 from pure ratios is reset to hidden and unticked 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 default for saving files.
Arpeggio_Title
-
Arpeggios or modes
Arpeggio []
-
Note numbers
(as shown with Steps unticked)
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
Channel
-
highlighted channel
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:
BY_NOTE_HEIGHT 0 BY_TIME 1 BY_OTHER 2 BY_CUMMULATIVE_NOTE_HEIGHT 3 BY_LEVEL 4
BY_LEVEL_CAN_SOUND_SIMULTANEOUSLY 5
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 channels by other
(window that shows if you click Other... in the Order of play menu for Channels window)
ccbo_first_channel
-
value for C (channel) for first note of melody
ccbo_multiple_notes_in_same_channel=1
-
Allow multiple notes per voice channel for sustain
Default for this one depends on
Choose_channels_by
- if that is 2, default is 0, and if other than 2, default is 1.
ccbo_sym_chs=1
-
Notes for levels can sound simultaneously
sz_ccbo_formula
-
Formula
Ranges for channels
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
Channels effects
dVibrato_freq [16]
- vibrato freq in herz
dVibrato_amp
[16]
- vibrato amp
dVibrato_vol_amp
[16]
- optional second entry for vibrato amp, to set tremulo effect
iPortamento
[16]
- portamento on or off
iPortamento_slide_time [16]
- portamento slide
Configuration settings (*.INI)
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 defaults 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, and one is less likely to want to make the file by hand, so they will not be listed here.
You may notice that some names start with lowercase letters, or clusters of letters:
szWordsToFind
iFormatForNoteNames
bFactoriseRatios
wWhatToSearch
dFTSGalleryMins
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.2250738585072014e308 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.