Algorithmic Music Composition Programs

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 128

ALGORITHMIC

MUSIC

COMPOSITION
PROGRAMS
&
UTILITIES

Compiled by Mehmet Okonsar


Tangent p.3

Musinum p.23

Fmusic p.30

FractMus 2000 p.38

A Musical Generator p.50

Poodles & Flan p.66

Quasi Fractal Composer p.71

Make Prime Music p.80

Lmuse p.84

Texture p.97

Utilities:

Midi Illustrate p.100

GN Midi p.126

2
TANGENT
http://www.poodlesandflan.com/randomtunes

Introduction
Once upon a time, an artificial intelligence researcher named Douglas Lenat created a program
named Eurisko. In its time, Eurisko was probably the most impressive general-purpose AI
program in existence.
What made it so successful was that it combined many diverse methods and techniques into a
single program. Through careful coordination, Eurisko was able to capitalize on the strengths of
the individual elements, thus creating a whole that was greater than the sum of the parts.
I have adopted this "everything-including-the-kitchen-sink" approach and have applied it in the
design of my music composition programs, first with QuasiFractal Composer, and now its
successor, Tangent.
Tangent expands upon many of the better aspects of QFC and provides the user with improved
control over the compositional process. Tangent uses methods that are both algorithmic and
heuristic, deterministic and stochastic, generative and transformational.

3
Tangent generates polyphonic pieces that exhibit melodic, tonal, and rhythmic coherence.
Tangent likes to use lots of instruments and can create polyphony that is large and lush, deep and
dense, intricate and interesting. Tangent creations can be traditionally orchestral, ethnically
rhythmic, light and cheery, dark and foreboding, surprising and (hopefully) rarely boring.
Tangent is a "top-down" composer that deals with musical structures, not individual notes. It
programmatically creates periods of bass and polyphony. It can do this automatically or the user
can determine the musical characteristics of these individual periods. It can even take a few
measures of userdefined melody and turn it into an entire composition. The results have been
both promising and pleasing. It seems to be a step in the right direction.

The Tangent Operating Console

The Tangent operating console is organized as a set of pull-down menus and three tabbed pages:
General, Composition, and Orchestration. To display a page, just click on the tab at the top of
the page.

Most of the text boxes on the console have associated spinner controls. This allows the user to
incrementally change the contents of a text box without having to use the keyboard.

Most of the pushbuttons and checkboxes on the console have corresponding selections in the
pull-down menus. These menu selections, and the associated shortcut keys, have been included
to provide a more flexible user interface.

File Menu

New Composition All of the console controls are re-initialized and the Comp Info
field is cleared.

Load Composition See "Load Composition" in the section "General Controls".

Save Composition See "Save Composition" in the section "General Controls".

Load Orchestration See "Load Orchestration" in the section "General Controls".

Save Orchestration See "Save Orchestration" in the section "General Controls".

Define Scale Define a custom scale. When the Define Scale dialog box appears,
just type the notes of the desired scale using naturals and sharps
(i.e. C, C#, D, D#, E, F, F#, G, G#, A, A#, B). This scale can be
used in a composition by selecting the User-defined entry in the
Tonality drop-down list.

Load Scale Loads a previously saved user-defined scale. When the file dialog
box appears, the scale file name can be entered without the ".sca"
extension.

4
Save Scale Saves the current user-defined scale. When the file dialog box
appears, the scale file name can be entered without the ".sca"
extension.

Load Melody / Beat Loads a previously saved melody / beat pattern pair into the
Melody pattern and Beat pattern boxes. When the file dialog box
appears, the name of the pattern file can be entered without the
".bpt" extension.

Save Melody / Beat Saves the current contents of the Melody pattern and Beat
pattern boxes. When the file dialog box appears, the name of the
pattern file can be entered without the ".bpt" extension.

MIDI Map MIDI Map allows you to define which MIDI channel is assigned
to each of Tangent's sixteen tracks. Most tracks will operate just
fine at the default setting, but the MIDI percussion channel (either
10 or 16, depending on your system) needs to be assigned to the
appropriate percussion tracks (if any) in your composition. Once
defined, the MIDI mapping information will be saved in both
composition (".cmp") and orchestration (".orc") files. Note: A
single MIDI channel can be mapped to multiple Tangent tracks.

Compose See "Compose" in the section "General Controls".

Exit Exit from Tangent. The current control settings are saved and will
be reloaded when Tangent is next used.

Edit Menu

Cut Copies the highlighted cells in the Parameter Editor into the parameter
"clipboard" and then deletes them from the Parameter Editor. Operates only
when the Pattern / Parameter Editor page is visible. See the section
"Parameter Editor".

Copy If the Pattern / Parameter Editor page is visible, copies the highlighted cells in
the Parameter Editor into the parameter "clipboard". If the Orchestration page
is visible, copies the enabled tracks into the orchestration "clipboard". See the
sections "Parameter Editor" and "Copying and Pasting Tracks".

Paste If the Pattern / Parameter Editor page is visible, pastes (overwrites) the contents
of the parameter "clipboard" into the Parameter Editor. If the Orchestration
page is visible, pastes track data from the orchestration "clipboard" into
Orchestration starting at the first enabled track. See the section "Parameter
Editor" and "Copying and Pasting Tracks".

Insert Inserts the contents of the parameter "clipboard" into the Parameter Editor.
Operates only when the Pattern / Parameter Editor page is visible. See the

5
section "Parameter Editor".

Delete Deletes (removes) the highlighted cells from the Parameter Editor. Operates
only when the Pattern / Parameter Editor page is visible. See the section
"Parameter Editor".

Options Menu

Auto-Generate Parameters See "Auto-parameters" in the section "General


Controls".

Autoplay after Compose When enabled, Tangent will automatically play a


composition when the Compose process is done.

Mutate Instruments Toggles the Mutate Instruments mode on and off (see the
section "Mutate Instruments Mode").

Elevator Music Mode See "Elevator" in the section "General Controls".

Enable All Controls Acts like a pushbutton that, when pressed, enables all the
controls that have associated checkboxes. The one
exception is the checkbox next to Mutate seed, which is
not affected. After enabling all controls, you can still go
back and "freeze" (disable) selected controls.

Freeze All Controls Acts like a pushbutton that, when pressed, "freezes"
(disables) all controls that have associated checkboxes. The
one exception is the checkbox next to Mutate seed, which
is not affected. After "freezing" (disabling) all controls, you
can still go back a re-enable selected controls.

Freeze Periods When enabled, prevents auto-generation from changing the


setting displayed in the Periods box (see "Periods" in the
section "General Controls").

Freeze Tempo When enabled, prevents auto-generation from changing the


setting displayed in the Tempo box (see "Tempo" in the
section "General Controls").

Freeze Tonality When enabled, prevents auto-generation from changing the


setting displayed in the Tonality drop-down list (see
"Tonality" in the section "General Controls").

Freeze Comp Devices When enabled, prevents auto-generation from changing the
settings displayed in the Composition devices list (see the
section "Composition Devices").

Freeze Beat Pattern When enabled, prevents auto-generation from changing the

6
setting displayed in the Beat pattern box (see the section
"Melody and Beat Patterns").

Auto-Composition See "Auto-composition" in the section "General


Controls".

Freeze Parameter Editor See "Freeze parameter editor" in the section "Pattern /
Parameter Editor Controls".

Emphasize Bass See "Emphasize bass" in the section "Pattern / Parameter


Editor Controls".

Fade Intro Causes the first period of a composition to be "faded in".

Fade Instruments In and Out Causes individual instruments (tracks) to be "faded in" and
"faded out" as they brought into and taken out of play from
period to period.

Fade Closing Causes the last period of a composition to be "faded out".

Help Menu

Help Displays the Tangent help file.

Registration Info Displays information about obtaining a registered version of Tangent.

About Tangent Displays Tangent copyright information.

General Controls

The General tabbed page holds the following controls:

Load Composition Loads all of the control values associated with a composition.
Composition files have a ".cmp" extension. There is a
corresponding selection in the File menu. When the Load
Composition file dialog box appear, you can enter the name of the
composition file without the ".cmp" extension.

Save Composition Saves all of the control values associated with a composition.
Composition files have a ".cmp" extension. There is a
corresponding selection in the File menu. When the Save
Composition file dialog box appears, you can enter the name of
the composition file without the ".cmp" extension. In the registered
version of Tangent, Save Composition also creates a MIDI (.mid)
file.

7
Load Orchestration Loads all of the control values for a specific Orchestration
configuration. Orchestration files have a ".orc" extension. There
is a corresponding selection in the File menu. When the Load
Orchestration file dialog box appears, you can enter the name of
the orchestration file without the ".orc" extension.

Save Orchestration Saves all of the control values for a specific Orchestration
configuration. Orchestration files have a "" extension. There is a
corresponding selection in the File menu. When the Save
Orchestration file dialog box appears, you can enter the name of
the orchestration file without the ".orc" extension. This function is
disabled in the unregistered version of Tangent.

Compose Starts the composition process. The progress of the process will be
shown in the status display above the tabbed pages. While the
Compose button displays the caption "Cancel", the composition
process can be cancelled by clicking the button. There is a
corresponding selection in the File menu.

Elevator Activates the Elevator Music mode (see the section "Elevator
Music Mode").

Multimedia controls The Rewind, Play, and Stop buttons operate as standard
multimedia controls.

Auto-composition When checked, Tangent operates in Automatic Mode, otherwise


Tangent operates in Manual Mode (see the section "Automatic
and Manual Composition Modes").

Auto-parameters When checked, Tangent will generate random values for the
Periods, Tempo, Tonality, Composition devices, and Period
Parameters controls. Individual controls can be exempted by
unchecking their associated checkboxes, or by checking the
appropriate Freeze selections in the Options menu.

Comp seed This is the seed for the random number generator used in the
compositional process. All control values that are randomly
generated are affected by this setting. This also affects the melody,
if it has not been user-defined in the Melody pattern control. The
value can range from 0 to 32767. Note: If all of the other console
controls (except Auto-parameters) are disabled, then changing
Comp seed allows you to experiment with different random
melodies in the same fixed musical structure (see the section
"Elevator Music Mode").

Mutate seed This is the seed for the random number generator used in the
Mutate Instruments mode (see the section "Mutate Instruments
Mode"). The value can range from 0 to 32767.

Mutate rate Determines the average number of instruments that are changed in

8
the Mutate Instruments mode (see the section "Mutate
Instruments Mode"). The value can range from 1 to 16.

Comp info Composition information is a free-form text field that can be used
to record any kind of data (author, copyright, etc.) about a
composition. This text is saved in the composition (".cmp") files
and is embedded in the MIDI (".mid") files that Tangent
generates. Tangent's version number and the current date are
automatically "stamped" on the Comp Info field.

Periods Determines the number of periods that will comprise a


composition. The value can range from 1 to 64. Associated with
this control is a checkbox. When the box is checked, the Periods
value will be randomly generated whenever the Compose button is
pressed. If the box is unchecked, then its value will remain
unchanged. There is also a Freeze Periods selection in the
Options menu. This selection works just the opposite of the
checkbox. When one is checked, the other will be unchecked.

Tempo Determines the overall tempo (quarter notes per minute) of a


composition. The value can range from 20 to 420. Associated with
this control is a checkbox. When the box is checked, the Tempo
value will be randomly generated whenever the Compose button is
pressed. If the box is unchecked, then its value will remain
unchanged. There is also a Freeze Tempo selection in the Options
menu. This selection works just the opposite of the checkbox.
When one is checked, the other will be unchecked.

Tonality This is a drop-down list of scales that can be used in a composition.


The list includes the following selections:

Chromatic
Symmetric
Major
Minor
Pentatonic #1
Pentatonic #2
Pentatonic #3
Whole-tone
User-defined

If User-defined is selected, the composition will use the scale that


has been defined by the Define Scale or the Load Scale functions
in the File menu.

Associated with the Tonality control is a checkbox. When the box


is checked, the Tonality selection will be randomly generated
whenever the Compose button is pressed. If the box is unchecked,
then its value will remain unchanged. There is also a Freeze

9
Tonality selection in the Options menu. This selection works just
the opposite of the checkbox. When one is checked, the other will
be unchecked.

Composition devices See the section "Composition Devices".

Period Parameters See the sections "Periods and Profiles" and "Period
Parameters".

All of the control values on the General page are saved / loaded by the Save Composition and
Load Composition functions.

Pattern / Parameter Editor Controls

The Pattern / Parameter Editor tabbed page holds the following controls:

Melody pattern See the section "Melody and Beat Patterns".

Beat pattern See the section "Melody and Beat Patterns".

Emphasize bass When checked, Tangent will compose by starting with the bass
parts and generate polyphony to fit. When unchecked, Tangent
will compose by starting with the polyphony parts and generate
bass to fit. There is a corresponding selection in the Options menu.
Note: This setting of Emphasize bass has not affect when a user-
defined Melody pattern is supplied.

Freeze parameter editor When checked, prevents Compose from changing the values in the
Parameter Editor, otherwise these values will reflect the period
parameter values of the newly generated composition.

Parameter editor See the section "Parameter Editor".

All of the control values on the Pattern / Parameter Editor page are saved / loaded by the
Save Composition and Load Composition functions.

Automatic and Manual Composition Modes


There are basically two ways to compose in Tangent: Automatic Mode and Manual Mode. The
current mode is determined by the Auto-composition checkbox (or the Options menu selection of
the same name).

When it's checked, Tangent is in Automatic Mode, otherwise Manual Mode is enabled.
In Automatic Mode, Tangent uses period parameter values that are generated by the Period
Parameters controls on the General Controls page.

10
Tangent automatically generates random settings for all these controls and then uses these random
settings to calculate the period parameter values. It is these automatically calculated parameter values
which define the composition. Simply stated, Tangent does all the work. The user can manually set
any (or all) of these controls, but this is strictly optional.

In Manual Mode, Tangent uses period parameter values that are defined in the Parameter Editor
on the Pattern / Parameter Editor Controls page.

Instead of using randomly generated control settings and calculations, Tangent takes the individual
period parameter values directly from the Parameter Editor.
Thus, the composition is determined by the user-defined values in the Parameter Editor. Thus, in
Manual Mode the user has the greatest control of the compositional process.
When you first view the Parameter Editor, it looks like it takes a lot of work to enter all those
values. Fear not. Tangent gives you a "helping hand". Whenever you generate a composition in
Automatic Mode, all the individual period parameter values for that composition are recorded in the
Parameter Editor. Thus, you can create a "rough draft" of a composition in Automatic Mode, then
switch to Manual Mode and use the Parameter Editor to refine the composition.

You compose using these modes singly or in combination. It is just a matter of personal preference.
Most new users will probably want to get the "feel" of Tangent in Automatic Mode before diving
into Manual Mode.

11
A Note about Bass and Polyphony
Tangent makes a distinction between bass and polyphony. In the compositional process, Tangent
handles bass and polyphony separately. The bass concentrates on the rhythmic aspects of the
composition and is the primary center of "beat". The polyphony is responsible for development of
melody and harmony.
You can select which of the two, bass or polyphony, has the most significance in a composition. This
is accomplished using the Emphasize bass checkbox (on the Pattern / Parameter Editor page).
When Emphasize bass is checked, Tangent will create the bass first and then build the polyphony to
fit. This results in compositions with a strong, coherent beat.
When Emphasize bass in not checked, Tangent will create the polyphony first and then build the
bass to fit. In this case, the beat will be less significant.

General Controls
The General tabbed page holds the following controls:
Load Composition Loads all of the control values associated with a composition. Composition
files have a ".cmp" extension. There is a corresponding selection in the File menu. When the Load
Composition file dialog box appear, you can enter the name of the composition file without the
".cmp" extension.
Save Composition Saves all of the control values associated with a composition. Composition
files have a ".cmp" extension. There is a corresponding selection in the File menu. When the Save
Composition file dialog box appears, you can enter the name of the composition file without the
".cmp" extension. In the registered version of Tangent, Save Composition also creates a MIDI
(.mid) file.
Load Orchestration Loads all of the control values for a specific Orchestration configuration.
Orchestration files have a ".orc" extension. There is a corresponding selection in the File menu.
When the Load Orchestration file dialog box appears, you can enter the name of the orchestration
file without the ".orc" extension.
Save Orchestration Saves all of the control values for a specific Orchestration configuration.
Orchestration files have a "" extension. There is a corresponding selection in the File menu. When
the Save Orchestration file dialog box appears, you can enter the name of the orchestration file
without the ".orc" extension. This function is disabled in the unregistered version of Tangent.
Compose Starts the composition process. The progress of the process will be shown in the status
display above the tabbed pages.

Periods and Profiles


A composition is comprised of a number of periods. The exact number of periods is defined by the
setting of the Periods control.

Each period contains a musical phrase (typically four measures) and zero or more repetitions of that
phrase. The characteristics of each period are defined by the ten
Period Parameters:
1. Period length
2. Beat pattern reduce %
3. Melodic material
4. Period transposition
5. Primary bass track
6. # of active bass tracks

12
7. Primary poly track
8. # of active poly tracks
9. Composition device probability (%)
10. Rest probability (%)
These parameters are described in the section "Period Parameters".

A Period Parameter can have an integer value anywhere in the range defined by the Min and Max
settings associated with the parameter. The exact value of a Period Parameter for any specified
period is determined by the parameter's Profile function.

Profile functions are used by Tangent to create simple, cyclic structures in the composition. The
available Profile functions are:
1. Square
2. Square [inverted]
3. Triangle
4. Triangle [inverted]
5. Sawtooth
6. Sawtooth [inverted]
7. Random
With the exception of Random, all of the Profile functions are cyclic and each will repeat after a
specified number of periods.
The number of periods is defined by the Periods / cycle setting associated with the parameter.

The Periods / cycle setting can range from 1 to 64. The Periods / cycle setting is meaningless for the
Random Profile function.

• Square profile has a value of zero in the first half of its cycle and a value of one in the second
half. The inverted Square is just the opposite.
• Triangle profile starts at zero, ramps up toward a value of one at the midpoint of its cycle,
and then ramps back down to zero. The inverted Triangle starts at one, ramps down to zero,
and then back up.
• Sawtooth profile starts at zero and ramps up toward a value of one. The inverted Sawtooth
starts at one and ramps down to zero.
• Random profile just generates a random number from zero to one.

When a Profile is at zero, the value generated for the specified Period Parameter will be equal to

the value defined by the Min setting of the parameter. When the Profile is at one, the

generated value will be equal to the parameter's Max setting.

Similarly, when the Profile is at its midpoint, the generated value will equal the midpoint between
the parameter's Min and Max settings. In summary, as the Profile function swings between zero and
one, the value of the Period Parameter swings between its Min and Max settings. In this way, the
value of the Period Parameter is synchronized to the Profile function.

13
Example: For a parameter with Min and Max values of -10 and 10, respectively, and a Periods /
cycle setting of 10, the parameter values for various Profiles is displayed below.
Period Square Triangle Sawtooth
1 -10 -10 -10
2 -10 -6 -8
3 -10 -2 -6
4 -10 3 -4
5 -10 7 -2
6 10 10 0
7 10 7 3
8 10 3 5
9 10 -2 7
10 10 -6 9
Note: Due round-off errors in the program, the actual parameter value may be off by +/-1. This is
shown in the example above.

Period Parameters
All of the Period Parameters have associated with them Profile functions, Periods / cycle settings,
and Min and Max settings. These are discussed in the section "Periods and Profiles".
Each of the Period Parameters has an Auto checkbox associated with it.

When the the Compose button is pressed, if this box is checked, Tangent will automatically generate
all the initial settings for the parameter. When the box is left unchecked, then any settings made by
the user will be used in the subsequent composition.

Period length

Determines the number of repetitions of a musical phrase that will occur in a period. The value
ranges from 1 to 8. This parameter is independent of the length of the musical phrase.
Generally, larger values produce longer periods.

Period length value Musical phrase + repetitions


1 1
2 2
3 2
4 4
5 4
6 6
7 6
8 8

Beat pattern reduce %

14
Beat pattern reduction causes a truncation of the Beat pattern. The value ranges from -50% to 50%.
At values less than zero, the specified % is removed from the left end of the Beat pattern. At values
greater than zero, the right end of the Beat pattern is trimmed. With a zero value, the Beat pattern
is left untouched. The function of Beat pattern reduction is to provide rhythmic variation in a
composition. Basically, the further this value gets from zero, the more the beat pattern gets truncated.

Example: If the original Beat pattern is "QqqQqqQeeeeQeeee", then a reduction of -50% would
yield "eeeQeeee", and a reduction of 50% would yield "QqqQqqQe".

Melodic material

Determines the source of melodic material for the period's musical phrase. The value ranges from 0
to 7, where 0 represents a primary melody and 1 through 7 represent melodic sequences derived from
the primary through various transformations. In essence, the composition can make use of up to eight
related melodic sequences. If there is a user-defined Melody Pattern

it becomes the primary melody (value = 0). Otherwise, the primary melody is generated by the
program. It might be useful to think of the primary melody (value = 0) as a theme and the other seven
melodies as transformations of that theme.

Period transposition

Determines the number of semitones that all notes in the period will be transposed. The value ranges
from -11 to 11. This transposition is performed in addition to that defined by the Transposition

controls in the Orchestration parameters section.

Primary bass track

Determines which track is to be defined as the Primary bass track for the current period. The range
of values is determined by the settings of the Bass 1st track and Bass last track controls in the

Orchestration parameters section.


The Primary bass track has special significance in that it is affected by neither the Rest probability
parameter, nor the Secondary presence control. Primary bass track, when used with the # of active
bass tracks parameter, allows you to determine what set of instruments will be playing the bass parts
in any specified period.

# of active bass tracks

Determines the number of tracks that actively participate as bass tracks in the current period. The
values range from 1 to (Bass last track - Bass 1st track + 1). Except for the Primary bass track, all
active bass tracks are secondary tracks and are affected by the Rest probability parameter and the
Secondary presence control. Starting with the Primary bass track, all active bass tracks will be
contiguous within the range allocated to bass. Thus, adjacent instruments in the Orchestration
Instruments list will tend to play together.

15
Example: If Bass 1st track = 1, Bass last track = 4, Primary bass track = 1, and # of active bass
tracks = 3, then tracks 1, 2, and 3 are the active bass tracks.
Another example: If in the above example Primary bass track = 3, then tracks 3, 4, and 1 would be
active. This is a case where the contiguous active tracks reach Bass last track and must wrap around
back to Bass 1st track.

Primary poly track

Determines which track is to be defined as the Primary poly track for the current period. The range
of values is determined by the settings of the Poly 1st track and Poly last track controls in the

Orchestration parameters section.


The Primary poly track has special significance in that it is affected by neither the Rest probability
parameter, nor the Secondary presence control. Primary poly track, when used with the # of active
poly tracks parameter, allows you to determine what set of instruments will be playing the
polyphony parts in any specified period.

# of active poly tracks

Determines the number of tracks that actively participate as polyphony tracks in the current period.
The values range from 1 to (Poly last track - Poly 1st track + 1). Except for the Primary poly
track, all active polyphony tracks are secondary tracks and are affected by the Rest probability
parameter and the Secondary presence control. Starting with the Primary poly track, all active
polyphony tracks will be contiguous within the range allocated to polyphony. Thus, adjacent
instruments in the Orchestration Instruments list will tend to play together.

Example: If Poly 1st track = 5, Poly last track = 14, Primary poly track = 5, and # of active poly
tracks = 6, then tracks 5, 6, 7, 8, 9, and 10 are the active polyphony tracks. Another example: If in
the above example Primary poly track = 11, then tracks 11, 12, 13, 14, 5, and 6 would be active. This
is a case where the contiguous active tracks reach Poly last track and must wrap around back to
Poly 1st track.

Composition device probability (%)

determines the probability that Composition devices will be applied to various tracks (both bass and
polyphony) in the current period. The values range from 0 to 100.

Composition devices are used to create variation amongst the various


tracks. Thus, the higher the probability of using a Composition device, the greater the likelihood that
the period will exhibit diversity and complexity. It should be noted that this is a random process and
that two different periods, with otherwise identical parameters, will probably not display the same
usage of Composition devices. Basically, larger values usually produce more variety and intricacy,
and smaller values yield more uniform, homophonic music.

16
Rest probability (%)

Determines the probability that portions of secondary tracks will be replaced with rests in the current
period. The values range from 0 to 100. The rests can be for long, multi-measure durations or for
randomly-selected single notes. At high values, approximately 75% of the notes in secondary tracks
will be replaced with rests. At low values, rests will be practically non-existent. It should be noted
that this is a random process and that two different periods, with otherwise identical parameters, will
probably not insert rests at the same locations. Generally, larger values result in more long rests.
The use of random processes in the Composition device probability and Rest probability
parameters introduces an element of unpredictability. Though this might be a drawback in some
situations, it tends to be an advantage in that it reduces the likelihood of undesirable repetition.

Sometimes you will want to set a parameter to a single, constant value. This can be accomplished by
setting the Min and Max controls to the desired value. So, for example, if you do not want any beat
pattern reduction to occur during a composition, just set the Beat pattern reduce Min and Max
controls to zero.

Composition Devices

Composition devices are methods that are used to modify bass and polyphony lines in an orderly
manner. It is these transformations that Tangent uses to create diversity and complexity in a
multitrack composition. These devices are listed in the Composition devices list box and can be
individually enabled or disabled by clicking on them with the mouse.

Only those devices that are enabled will be eligible for use in a composition. The actual selection of
which devices are used, and to what track they are applied, is random. The period value of the Comp
device probability parameter determines the overall likelihood that any given track will be modified
during a specified period. The Composition device list box has a checkbox associated with it. When
this box is checked, Composition devices in the list will be selected randomly whenever the
Compose button is pressed.

Otherwise, the selections in the list box will remain unchanged. There is also a Freeze Comp
Devices selection in the Options menu. This selection works just the opposite of the checkbox.
When one is checked, the other will be unchecked.

Composition devices are also present and selectable in the Orchestration Complex performance
list (see the section "Orchestration Controls").

When a Composition device is enabled for a specific track, the selection will override the random
selection of any other device for that track. This provides a means of defining a characteristic
performance style for a selected instrument.

Dynamic contrast of duration (+)

17
Long notes are emphasised by making them louder. All notes that are longer than the average note
duration for the period are emphasized by raising their MIDI velocity. All other notes are de-
emphasized by reducing their MIDI velocity. If all notes are of the same duration, no change occurs.
Dynamic contrast of duration (-)
Short notes are emphasised by making them louder. All notes that are shorter than the average note
duration for the period are emphasized by raising their MIDI velocity. All other notes are de-
emphasized by reducing their velocity. If all notes are of the same duration, no change occurs.
Dynamic contrast of pitch (+)
High notes are emphasised by making them louder. All notes that are higher than the average note
pitch for the period are emphasized by increasing their MIDI velocity. All other notes are de-
emphasized by reducing their velocity. If all notes are of the same pitch, then no change occurs.
Dynamic contrast of pitch (-)
Low notes are emphasised by making them louder. All notes that are lower than the average note
pitch for the period are emphasized by increasing their MIDI velocity. All other notes are de-
emphasized by reducing their velocity. If all notes are of the same pitch, then no change occurs.
Rhythmic contrast of duration(+)
Long notes are emphasised by splitting them into two pairs of shorter notes. All notes that are longer
than the average note duration for the period are emphasized by splitting them into two shorter notes
of the same pitch. All other notes remain unchanged. If all notes are of the same duration, then no
change occurs.
Rhythmic contrast of duration (-)
Short notes are emphasised by splitting them into pairs of shorter notes. All notes that are shorter than
the average note duration for the period are emphasized by splitting them into two shorter notes of
the same pitch. All other notes remain unchanged. If all notes are of the same duration, then no
change occurs.
Rhythmic contrast of pitch (+)
High notes are emphasised by splitting them into pairs of shorter notes. All notes that are higher than
the average note pitch for the period are emphasized by splitting them into two smaller notes of the
same pitch. All other notes remain unchanged. If all notes are of the same pitch, then no change
occurs.
Rhythmic contrast of pitch (-)
Low notes are emphasised by splitting them into pairs of shorter notes. All notes that are lower than
the average note pitch for the period are emphasized by splitting them into two smaller notes of the
same pitch. All other notes remain unchanged. If all notes are of the same pitch, then no change
occurs.
Tonic contrast of duration (+)
Long notes are emphasised by raising them an octave. All notes that are longer than the average note
duration for the period are emphasized by raising their pitch one octave. All other notes are de-
emphasized by lower their picth one octave. If all notes are ofthe same duration, then no change
occurs.
Tonic contrast of duration (-)
Short notes are emphasised by raising them an octave. All notes that are shorter than the average note
duration for the period are emphasized by raising their pitch one octave. All other notes are
deemphasized by lower their picth one octave. If all notes are of the same duration, then no change
occurs.
Tonic contrast of pitch (+)
High notes are emphasised by raising them an octave. All notes that are higher than the average note
pitch for the period are emphasized by raising their pitch one octave. All other notes are de-
emphasized by lowering their pitch one octave. If all notes are of the same pitch, then no change
occurs.

18
Tonic contrast of pitch (-)
Low notes are emphasised by raising them an octave. All notes that are lower than the average note
pitch for the period are emphasized by raising their pitch one octave. All other notes are de-
emphasized by lowering their pitch one octave. If all notes are of the same pitch, then no change
occurs.
Tuplets
All notes longer than a sixteenth are replaced with duplets or triplets, depending upon the exact
duration of the note.
Truncated long notes
All notes that are longer than a quarter are truncated to that duration. The remaining time in truncated
notes is padded out with rests.
Rising pitch #1
Notes are raised in pitch in a series of four discrete steps. The first 25% of the notes are untouched,
the second 25% are raised 7 semitones, the third 25% are raised 12 semitones, and the final 25% are
raised 19 semitones. Notes that are raised 7 or 19 semitones will display a certain degree of
dissonance.
Declining pitch #1
Notes are decreased in pitch in a series of four discrete steps. The first 25% of the notes are raised 19
semitones, the second 25% are raised 12 semitones, the third 25% are raised 7 semitones, and the
final 25% are untouched. Notes that are raised 7 or 19 semitones will display a certain degree of
dissonance.
Rising pitch #2
Same as Rising pitch #1 except that the transposition order is 0, 12, 7, and 19 semitones.
Declining pitch #2
Same as Declining pitch #1 except that the transposition order is 19, 7, 12, and 0 semitones.
Tuplets + rising pitch #1
Compound device in which the Tuplets device is applied to the result of using the Rising pitch #1
device.
Tuplets + declining pitch #1
Compound device in which the Tuplets is applied to the result of using the Declining pitch #1
device.
Tuplets + rising pitch #2
Compound device in which the Tuplets device is applied to the result of using the Rising pitch #2
device.
Tuplets + declining pitch #2
Compound device in which the Tuplets is applied to the result of using the Declining pitch #2
device.
Glissando
Wherever there are two consecutive notes of different pitch, the second note will be approached by
glissando using sixteenth notes. This does not apply to sixteenth notes. The use of this device will
result in a certain degree of dissonance.
Trill
All half notes, and longer, are replaced with trills using sixteenth notes. The use of this device will
result in a certain degree of dissonance.
Quasi-ornamented #1, #2, #3
These are three varieties of random embellishment that can serve to ornament a melody. Use of these
devices will result in a certain degree of dissonance.
Random rests
Approximately 50% of the notes (selected randomly) are replaced with rests.

19
Melody and Beat Patterns
The Melody pattern and Beat pattern boxes

define a melodic theme in terms of both note pitch and note duration patterns.
When entering a melody into the Melody pattern box, use only naturals (C, D, E, F, G, A, and B)
and sharps (C#, D#, E#, G#, A#).

Notes may be upper or lower case and may be separated by spaces.

If the Melody pattern box is left empty, then Tangent will programmatically generate a melody to
fit the beat pattern. If a user-defined melody pattern is supplied, then a user-defined beat pattern must
also be supplied.

When entering a beat pattern into the Beat pattern box, use w, h, q, e, and s to represent whole, half,
quarter, eighth, and sixteenth notes, respectively. Any duration, except a sixteenth, may be dotted
("."). Values should be lower case for unaccented notes and upper case for accented notes. Spaces are
allowed between note values. Note: There must be one note value for each note defined in the
Melody pattern box.

In order for a user-defined beat pattern to be used in a composition, the Freeze Beat Pattern entry in
the Options menu must be checked (or the auto-enable checkbox next to the Beat pattern box must
be unchecked),

otherwise Tangent will programmatically generate an arbitrary beat pattern.

When a user-defined melody is supplied, it becomes the melodic material that is referenced when the
Melodic material parameter has a value of zero. The other seven settings for Melodic material will
then reference transformations of the user-defined melody. To get the fullest expression of a user-
defined melody, try setting the Beat pattern reduction Min and Max controls to zero. Do the same
with the Melodic material Min and Max controls. The result will be fairly repetitious, but this can
be dealt with by experimentally "re-introducing" Beat pattern reduction and Melodic material a
bit.

Parameter Editor

The Parameter Editor allows the modification of the parameter values for any of the 1-64
individual periods of a composition.

20
All that is necessary to edit an individual parameter is to double-click on the desired cell and then edit
the value in the text box using the keyboard or the associated spinner control.

The rules for using the Parameter Editor are fairly simple. When entering values in consecutive
cells (left to right), press Enter after each value. To move the edit box back to a previous cell, press
Shift-Enter. You can also move the edit box down and up using Ctrl-Enter and Ctrl-Shift-Enter,
respectively.

Using the Edit menu commands, you can Copy and Paste highlighted blocks of cells anywhere
within the editor array. Also, full columns (all rows selected) can be Cut, Inserted, or Deleted.

If you press the Compose button when Auto-composition is checked


(either the box or the selection in the Options menu) and Freeze Parameter Editor is unchecked,
the Parameter Editor is updated with the values calculated from the Period Parameter profiles,
otherwise the editor data remains unchanged. This feature allows you to first generate a composition
using the Period Parameter Profiles, and then tweak / customize / improve that composition by
editting the individual periods. Once you have begun editting a composition, you should not check
the Auto-composition box without also checking the Freeze Parameter Editor box. If you do so,
the contents of the ParameterEditor will be over-written the next time you press the Compose
button. If you press the Compose button when Auto-composition is checked and Freeze Parameter
Editor is unchecked, the composition is performed using the values of the Period Parameter
controls. If autocomposition is unchecked, then the composition is performed using the values in the
Parameter Editor. When you save a composition, the contents of the Parameter Editor array will
be saved, regardless of whether or not it is visible. Likewise, when you load a composition, the editor
array will be updated regardless of the console state.

Elevator Music Mode

Elevator Music mode is one of the nicer features of Tangent. Most people are familiar with the
background music played in elevators, waiting rooms, and over the telephone when some nameless
bureaucrat has put you on "hold".
What Elevator mode does is to put Tangent into a loop. While in this loop, Tangent will

automatically increment the Comp seed setting , compose a piece, play it, and
then repeat the process.

This loop will continue until the multimedia Stop button is pressed or until a Load Composition or
Load Orchestration is performed.

Elevator mode allows you to "browse" through random compositions until you hear something that
sounds interesting.. When you find a piece that you like, you can do a Save Composition

and then return to browsing. When you are done browsing, you can relaod what you
have save and experiment with it.
You can run Elevator mode with all the controls enabled and get a wide variety of compositions.
You can also use it with selected controls "frozen". For instance, you can define a specific beat
pattern and listen to different compositions based on that pattern. Another trick is to "freeze" all of
the controls, but leave the Auto-parameters box checked. This will let you listen to different random
melodies in a fixed musical structure.

21
Elevator Music mode also works with the Mutate Instruments mode (see the section "Mutate
Instruments Mode"). This gives you the ability to try all sorts of orchestral modifications without
having to manually change the Orchestration settings. As with the Comp seed control, the Mutate
seed setting will be incremented at the start of each compose-play loop. You just need to enable the
Mutate Instruments mode by checking the box next to the Mutate seed control or by selecting
Mutate Instruments in the Options menu. Tip: When Elevator Music mode is running and you
want to "skip" to the next selection, just click the Elevator button.

Mutate Instruments Mode

Mutate Instruments mode is another interesting feature of Tangent. This mode generates random
variations in the selection of instruments used in a composition. It works by using the user-defined
Instrument settings on a the Orchestration page as a reference. When enabled, Mutate Instruments
mode will change from zero to sixteen of the Instrument settings. The approximate number of
changes is determined by the Mutate rate control. The Mutate seed setting determines the random
sequence of mutations that will occur. Tangent is designed to make "intelligent" instrument
substitutions. More often than not, instruments will be changed to others in the same category. For
instance, strings will usually be changed to other strings, and wind instruments to other winds.
Sometimes, though, the substitution will be radical (e.g. from strings to chromatic percussion). This
has been done to ensure a degree of variety in the mutations. It should be noted that the Mutate
Instruments mode works well with the Elevator Music mode (see the section "Elevator Music
Mode"). This gives you an automated method for experimenting with orchestral variations.

22
MUSINUM
http://reglos.de/musinum/

Music and mathematics always had a close relationship. Since Pythagoras it is known that
harmony can be understood simply by the numerical relation of the frequencies.

In the last years a new field of science and mathematics boomed. Chaos, fractals and self-
similarity are topics which caught public interest not at least because of the beautiful pictures
which offsprung from then. Hardly anybody does not know the pictures of the Mandelbrot-set
and even people never heard of imaginary numbers before bought mathematical books on this
topics now.

Experiments which tried to extend the beauty of the fractal-art-pictures to the acoustical sense
sometimes gave interesting results but often sound rather strange. I think the difficulty arises
from the fact that chaos theory usually works with real numbers. But the music we are used to is
based on discrete frequencies -scales-, and simple combinations of frequencies -harmony-, and
the mathematical discipline which is employed with the simple numbers is the number-theory.

Perhaps the most fundamental thing in mathematics are the natural numbers: 1,2,3,4,5...
They are something universal: It is a hard thing to imagine a mind which would count in a
different way. But the style we write them down can vary: The decimal system based on the
digits 0-9 is by no way the only or natural method to present numbers. It has just been arbitrarily
chosen some time ago in history. The simplest notation is the binary notation which only uses the
digits 0 and 1. Computers always calculate in binary notation because it can be easily mapped to
electrical devices: the presence of current means 1 and no current means 0.

This is all one have to know to understand how this program works.

23
How this program works
This program counts. And because it is running on a computer it first counts in binary
notation.Then it counts the "1" digits in these binary numbers and plays a note: c for one
"1", d for two "1", e for three "1" etc.
Decimal Binary Numb.of"1" Tone
1 1 1 c
2 10 1 c
3 11 2 d
4 100 1 c
5 101 2 d
6 110 2 d
7 111 3 e
8 1000 1 c
9 1001 2 d
10 1010 2 d
11 1011 3 e
12 1100 2 d
13 1101 3 e
14 1110 3 e
15 1111 4 f
16 10000 1 c
Besides this minimal function there are many possibilities to experiment around.
The most interesting effects arise when the computer does not count simply 1,2,3...
but is calculating different 1x1´s. For example 3, 6, 9, 12... Completely different
melodies are generated. Or several different voices can be combined to a more
complex piece of music. Feel free to experiment with the setting in the Voice Editor!

The Music is generated after this formula:


Calculate ((Counter div Speed) * Step) + Start, express the result in Base-system,
calculate the cross-sum and take it mod Modulo.

The result is translated to a midi note: 1 means the note you select in the Note-box

, other values are mapped according to the selected scale .

On Turn this voice On or Off


Step Sets the step-value of the formula (multiplicator) for this voice (default: 1)
Base Sets the base-value: the system in which the numbers are represented e.g. 2 for
binary numbers or 10 for the decimal-system

24
Start Sets the start-value (offset) for this voice (default: 0)
Modulo Takes the result mod the value, thus mapping the result to values between 0
and value (default: 0 means no mod operation is performed)
Speed Slow down the speed for this voice by this value (default: 1 means the same
speed as the counter)
Mode All plays a tone for every count
New (default) plays a tone only if the result of the formula has changed: two or more
successive equal notes are combined to one long note.
Same plays tones only when the last tone was the same
Rising plays tones only when higher then the last tone
Falling plays tones only when lower then the last tone
Rythm plays only the tone specified in Note for a odd number of "1" digits in the result.
Try with the midi drum-channel (9 or 15)
Note Specifies the note which is played for one digit "1" (default: c') Range: C3 (very
deep) to c´´´´ (very high pitch). The range being actually played can depend on the midi-
device selected. The up and down buttons move one octave.
Key major (default)
• minor
• diatonic
• pentatonic
• Rythm plays only the tone specified in Note for a odd number of "1" digits in the
result. Try with drum-mode!
• user-definable can be set via the edit button.
Hold
• normal (default)
• legato Notes are held a long time, like using the pedal on a piano
• staccato Notes are held only for a short time

The Formula in the Status Line


The Status line displays the formula used to calculate the actual tone:

Count * Step + Start = Result -> (Base) Binary result -> Tone

The Tone then equals the number of ocurrences of the digit "1" in the Binary result.
The note actually being played depends of the settings of the Mode, Note and Key
values in the Voice Edit dialogue. If the Speed has a value other than 1 the Count is
increased slower.

Here are some suggestions for interesting melodies:


First execute the File-New command from the menu, then enter the following entries into
the voice edit boxes
• Try to set Step to powers of two minus one, e.g. 3, 7, 15, 31, 63, 127, 255, 511,
• 1023... (and please be a little patient)
• Try to set Step to powers of two plus one, e.g. 3, 5, 9, 17, 33, 65, 129, 257, 513,
• 1025
• Try to set Step to powers of two, e.g. 1, 2, 4, 8, 16, 32, 64, 128, 256, 1024...

25
MENU COMMANDS:
File
New Resets all settings to default values
Open Reads a file from disk (Extention *.MIN)
Save Saves the current status to a file
Save as Saves to a new file
Save MIDI Saves the sound of the current settings to a MIDI-file. This file can be
utilized by other programs, the Windows media-player for example, or modified, printed etc. by
almost every sequenzer program. You must specify the counter-range to be evaluated and the
name of the file.
Exit Stops playing music and leaves the program

Data
Load Loads an ascii data file into the data-table for sonification
Paste Pastes data from clibboard to the data table (works fine with Excel)
Close Closes the data-table and returns to algorithmic music generation

Sound
Play Starts playing
Stop Stops or pauses playing
RewindSets the counter to zero
Faster Increases the tempo
Slower Decreases the tempo

Script
Internal Speaker Selects the PC-speaker as output. Only one voice can be played at a
time
Midi-Devices Selects a midi-type output device (Aviable only if a sound or midi card is
installed)
Midi-Setup Defines the Drum Channel and an external Midi Player

Define User Scale

Voice
Show all active Maximizes the main window and shows all active voices

26
Show only one Makes the main window small and displays only one voice at a time
Voice ... Edit a specific voice

Help
Contents Displays the help-index
Introduction An introduction to the program
Examples Plays interesting examples directly from a help-page
About Displays the about-box and the author. A link to the MusiNum Homepage, if you
have Internet access

GRAPH:

Mathematical Background
The following text is taken by kindly permission from the books "Number Theory in Science and
Communication" (Heidelberg, 1984) and "Fractals, Chaos, Power Laws - Minutes from an Infinite
Paradise" (New York, 1991) by M.R. Schroeder.
Take the simplest concept from number theory, ("Kronecker's") integers. Starting
from nothing and counting up, we get
0, 1, 2, 3, 4, 5, 6, 7...
Next, let us represent these numbers in the binary system:
0, 1, 10, 11, 100, 101, 110, 111, ...
Now take the "digital roots" or parity of each binary number (i.e., the sum of its digits
modulo 2):
0 1 1 0 1 0 0 1 ...
The resulting sequcnce is called the Morse-Thue sequence. It has many remarkable
properties. For example, it can be constructed recursively by appending to each subsequence the
complemented subsequence, as follows:
0
01
0110
01101001
This kind of construction makes it manifestly aperiodic; it never repeats. But it has a
much more interesting property: the infinite sequence is self-similar. In fact, striking
out every second term reproduces the sequence:
0 1 1 0 1 0 0 1 ... = 0 1 1 0 ...
The sequence can also be constructed from "nothing" by having each term have a
"complementary baby":
0
0 1

27
0 1 1 0
0 1 1 0 1 0 0 1
Such sequences are called self-generating.

These sequences mimic, in one dimension, the self-organization of matter, such as crystal
growth. However the Morse-Thue sequence is an aperiodic self-generating sequence, thus
imitating not the growth of a periodic crystal but a recently discovcred new solidification
process. Surprisingly, although the Morse-Thue sequence is aperiodic, its Fourier transform or
spectrum is not at all noiselike.

The self-similarity of the sequence induces longrange correlations and causes its spectrum to be
highly structured with many high peaks, as if it were periodic. In other words, the Morse-Thue
sequence, being selfsimilar, is both aperiodic and has a spectrum resembling that of a periodic
sequence. This fact would perhaps be only mildly interesting if such sequences did not model
something that can actually happen in nature, but was discovered only recently: a new state of
matter! We are all familiar with crystals, in which the individual atoms are arranged in
periodic lattices. And we also know amorphous substances, such as ordinary glasses or most
liquids, in which the atoms are randomly distributed.

Until recently, few if any people suspected that there could be another state of matter sharing
important aspects with both crystalline and amorphous substances. Yet, this is precisely what D.
Shechtman discovered when they recorded electron diffraction patterns of a special aluminum-
manganese alloy (A16Mn). The diffraction pattern, i.e., the two-dimensional Fourier transform,
showed sharp peaks, just like those for a periodic crystal. But the pattern showed a five-fold
symmetry that periodic crystals simply cannot have. However, as we know from the number-
theoretic Morse-Thue sequence, sharp spectral peaks and aperiodicity are no contradiction, as
long as self-similarity prevails. Fourier amplitude spectrum of the self-similar number-theoretic
Morse-Thue sequence: 01101001..., defined by the parity of the integers 0, 1, 2, 3 ... when
expressed in the binary notation (0, 1, 10, 11, ...).

The (infinite) sequence reproduces itself when, after each element, the complementary element is
inserted. Equivalently, the sequence also reproduces itself upon decimation, namely when every
other element is struck out. The scaling factor of the self-similarity is thus 2. Although this
sequence is aperiodic (it never repeats itself), the amplitude spcctrum shows prominent peaks
that would be missing in a truly random sequence, such as an aperiodic sequence without the
long-range order of the Morse-Thue sequence. (For the discrete Fourier transform shown here,
the sequence was truncated to a length of 256.)

28
FMUSIC
http://www.fractal-vibes.com/fm/

All of the paramters in the list box on the right-hand side can be defined for
Each of the 8 states 0 - 7.

Volume The loudness of each instrument 0-127, 127 being the highest Volume.
Pan The Right-Left balance of the instrument. 0 = Left, 127 = Right.
Patch The midi Patch (Instrument) Use the handy pull-down list to choose instruments for each
state for the five tracks.
Octave Choose from the 5 ranges, 0 is the lowest note range, 4 the highest.
Key Select from 12 different keys for each instrument.
Note Type This selects which type of note to generate:
• 0 - Durational Fractal Note
• 1 - Cellular Automata Note
• 2 - Base 8 Morse-Thue type Note
• 3 - Grey Code

29
Next Section Determines for the 8 states, what section the composition will change to next.
Init Good for note-types 0, 2, and 3. Determines where in the duration string to start from.
Incr Causes a skip of N durations
CA Notes When note-type is 1, whatever is assigned on the Fractal Notes page for your
scale (notes 0-7) will be assigned for each of the 8 states for that instrument.
CA Transition Func Select The CA funtions can be defined on the CA page as sort of an
"overide" as to what the state transitions will be. Here you choose to use one of these to
force the transition.
Note Duration Forces note duration to be N beats.
Cell# Rotate Shifts all notes over by 1 cell in the array.
Repeat Note Repeats N times after playing note.

Note Filtering Filters out certain types of notes.


Bass System Choose which of the 8 bass systems you may define are used for each state.
Trk_Note_Remap Take all the notes generated for 1 track and copy them to another track.
Diatonic Shift Acts as a transpose feature.
Drum System Does the same thing for the 8 possible drum systems as the Bass system
parameter.

Cell# and State Contents

Follow Section Section(Initial Section)

Select one of these radio buttons to define all parameters for the 3 possible
sections, each independant of the other. The All button is a shortcut to copy to all sections.
Track

Choose the track with the radio button and set all definable
parameters.
Section Copy to:

Copy all parameters from the selected Section(Initial Section) and copy
to the section selected here. The check boxes represent cell contents(Cell#) , event parameters
(EP), and track durations (TD).
Track Copy to:

Same as section copy, except just applies to individual tracks


within a section.

30
Save CA Drawing

Saves the Cellular Automata drawing on the far right as a bitmap.


Save Midi File

Saves your composition in standard MIDI format.


Play / Stop

Plays / Stops playing your composition.


New / Open / Save

Standard file functions. The event parameters are store in a file with *.ev
as the file extension. Note that each tabbed page stores it's parameters in a different file.
Exit

Quit the program - make sure you have saved the parameters from each page!

Track Mute

Selectively mute
individual instruments / drums / basses

CA and Misc. Options page

31
The CA and Misc. Options page contains Cellular Automata parameters to set for the 8 different
states. This can be left at default values or experimented with. Experiment! Any parameters not
mentioned here operate the same as on the Event parameter page (save,mute, etc.)

Function Select /output color select / State transition

Function

Select a function with the radio button. Each of the colors

represent a state. By selecting one of the colors and then clicking on

squares within the State Transition Function grid you can force
certain state transitions to occur.

Function Default Options

Reset one of all functions to their default states (no transition forcing).
Initialization String

Set initial values for each state of the


CA array

Neighbor Check

These values are used in summing levels


of the CA array, and how each cell is summed with it's neighbors. Must add up to 9.

Rule Map

These values supply the "rules" for


summing levels in the CA array.

32
State

Select a state 0-7 and set values for the initialization string, Neighbor
check, and Rule map.
Default Options

Resets the Initialization string, Neighbor Check, and Rule Map


for any or all sections to their default values.
Track channel

Controls which MIDI channel each of the tracks / bass /


drums is played on.
Ticks

Controls the Tempo - the higher the number, the faster the Tempo.

Fractal Notes

Define the fractal notes for your composition. Parameters / Controls not defined here
are the same as on Events Page.

33
7-Note Scale

Define the scale in terms of m2 M3 P4, etc.


where:
• m2 = Minor Second
• M3 = Major Second
• P4 = Perfect Fourth
Level Sum Method

Either a Diatonic or Chromatic Scale is created.


Duration

The relative duration pattern. 1,1,1,1,4 = da da da da daaaa

Sub-Scale

Select notes within the 7-note scale as a sub-scale.


Arrange

Arrange the order of the notes within the scale


System

The parameters defined will apply to one of the bass systems as


well.

34
Percussion and Bass Settings

Define the bass and drum patterns for up to 8 different drum systems of 5 drums each, and 8
different bass systems of 5 basses each. See Events Page for other common controls.

Rythm / Bass Patterns

For Each of the Perc. or Basses, check off the


"beats" in each of the measures

35
Perc. Instruments

Choose individual drums from the pull-down list for each of the 5
drums.
Bass Instrument

Select your basses


System

Click on a system 0-7 radio button and create your percussion and
bass system.
Volume

Set the volume for a particular bass or drum system.

Percussion / Bass radio buttons

Switch between defining patterns and volume setting for a


drum and bass system.

36
FRACTMUS 2000
http://www.geocities.com/SiliconValley/Haven/4386/

FractMus is a FREEWARE algorithmic-music generator, that is, it creates melodies using


mathematical formulas.

Since the times of Ancient Greece, people have realized that music and mathematics had a very
close relationship, maybe because music is the most abstract form of art. Using mathematics
explicitly to create music is nevertheless something of our time. Without the help of the modern
computer it would be a daunting task (if not an impossible one) to do all the necessary
calculations by hand.

A word of caution: YOU are the composer, FractMus will create no masterpiece for you, nor it
was designed for that. Think of it as a tool which gives you raw material that you can later use in
your compositions. Writing a midi file and later importing it with music-editing programs such as
Finale or Encore gives you the invaluable option of seeing your creation as a musical score, with
all the correct pitches and durations, for later editing. FractMus uses only a few of the infinity of
possible algorithms for note creation. Some of them exhibit fractal behavior, like the Morse-Thue
sequence, Henon attractor, gingerbread man fractal, etc, while others use well-known formulas
from chaotic dynamics, like the Logistic Map.

In the end, it is always your inventiveness what makes a composition better or worse, FractMus
just gives you the "inspiration".

37
FractMus uses two counters as an iteration control for the algorithms. Melodies
are always played from the Start counter, which counts in thirty-second notes. The End counter
marks the point were the music stops. An example: Lets assume a note value of quarters (8
thirty-seconds) and the Henon algorithm. We start at counter 0, that is the first iteration of the
algorithm (the first note), next, since we have chosen quarters as the note value, which
corresponds to 8 thirty-seconds, we must wait until counter 8 to play the next note (iteration 2),
then 16, then, 24, and so forth. Some algorithms are two dimensional maps, such as the Henon,
Gingerbread man fractal, etc. As such, these equations give back (X, Y) values when iterated. In
order to get a unique value from these coordinates, a modulus operation is performed, that is, the
square root of the sum of the values squared [ sqrt(X*X + Y*Y) ]. From this value the final note
is computed, depending on the scale chosen, the number of octaves, etc. The Reset button will set
both counters to 0. The Round button will set the counters to the nearest multiple (up or down) of
the value of the voice of your choice (a dialog will pop up for you to choose the voice).
Normally, when you play in the Current Settings mode, the End counter will start running from
the value of the Start counter until you stop. If you do not want the End counter to run, press the
Lock button. The music will stop automatically when the value at the End counter is reached.
Counters can have a maximum value of 50000.

FractMus "translates" your composition into a graphical image. Basically it takes all your
composition parameters (scales, durations, voices, algorithms, etc), and from them creates an
interference pattern similar to the moire pattern, which has fractal structure. Every pattern is
uniquely mapped to each composition. They often resemble persian rugs!. The image generated
is true-color, 500x500 pixels.

FractMus offers you 15 pre-defined scales to choose from and the possibility to create your own.
Built in scales include (click on the scale to listen):

38
To create your own scale select "user scale" from the scale combo box. A dialog will pop up with
12 check boxes, one for every note. User scales are pre-defined to a default Major scale when
first accessed. Simply check the notes that form your scale. You can create scales with any
number of pitches, from 1 to all 11 notes. Note that FractMus transposes all scales to C, thus, for
example, a scale defined as E - F - Ab - Bb - B will be transposed (and shown) as C - Db - E - Gb
- G.

FractMus provides 11 pre-defined note durations. You can also define your own note-duration.
Just select "other" from the combo box. A dialog will pop up. Enter the value of the duration
(1=thirty second, 2=sixteenth, 3=dotted sixteenth, 8=quarter (8 thirty seconds), 10=quarter +
sixteenth, etc).

The tempo marking controls how fast your composition goes. It is measured in
quarter notes per minute. Basically works as a metronome, the higher the value the faster your
music will sound. Values are between 20 and 320. Note that unless you have a really fast
computer, your tempo marking may not corresponds with the playing speed (it may be noticeably
slower). This happens because FractMus computes the music in real time. Nevertheless, when
you save the midi-file the tempo will be correct. The Global Tempo button allows you to change
the tempo globally for the whole composition (every Event's tempo will be modified).

The time signature is a very useful feature if you import your midi files into a
music editing program (such as Finale or Encore). The numerator is the number of values per
measure. The denominator represents the base value of the measure, it must be a power of 2 (1

39
represents whole, 2 half, 4 quarter, etc). The Global button allows you to change the time
signature globally for the whole composition (every Event's time signature will be modified).
The time signature has no effect on how the music sounds.

Inverting a melody is a compositional procedure in which the direction of intervals in the melody
is reversed, for example: a fifth up becomes a fifth down, a second down becomes a second up,
etc. For simplicity, FractMus inverts "from C", that is, taking the note C as the pivot note for the
inversion.

Modulation is a procedure were a melody changes from one key to another. In


FractMus you can modulate in two different ways. First you can have the melody to modulate
every N notes. To do so, simply specify N in the Every edit box (values are between 1 and 50).
The other option is to let the computer choose N randomly (from 1 to 50), to do so just select
Random. The actual key were the melody modulates depends on the algorithm and the value
generated at the point of modulation. Melodies can modulate from a minor second to a major
seventh, that is, the whole chromatic range.

ALGORITHMS
FractMus 2000 generates notes using twelve algorithms from number theory, chaotic dynamics,
fractals and cellular automata. This yields the composer an almost inexhaustible source of
melodic material. Each voice can use any algorithm independently from the others. You can see a
graphical representation of the algorithm by pressing the Visualize button.

1. Morse-Thue Sequence
2. Earthworm Sequence
3. Wolfram one-dimensional cellular automata
4. 3n+1 numbers
5. Logistic Map
6. 1/f Noise
7. Henon
8. Hopalong
9. Martin
10. Gingerbread man
11. Lorenz
12. Random

Morse-Thue Sequence
Consider the following sequence of the non-negative integers 0, 1, 2, 3, 4, 5... written in binary
notation:
0, 1, 10, 11, 100, 101...

40
take the sum of the digits modulo 2 (known as the "digital root") of each number, thus forming
the following sequence:
0, 1, 1, 0, 1, 0, 0...
This is the so-called Morse-Thue Sequence. This sequence can also be generated by iterating the
map 0 -> 01 and 1 -> 10. Starting with a single "0" you get:
0
0 1
0 1 1 0
01101001
Also, each generation can be created appending the complement of the preceding one, as follows:
0
01
01 10
01 10 10 01
Of course, you are not restricted to base 2. You can use any counting system you like.
Furthermore, the sequence shows a high degree of self-similarity; for instance, if every even term
in the sequence is removed the sequence remains unchanged!:
0110100110010110
0 1 1 0 1 0 0 1
Also, removing every second couple keeps the sequence unchanged:
01 10 10 01 10 01 01 10
01 10 10 01
How do you make music out of this sequence?. Very simply.
First you select a base in which to count (the original sequence is in base 2). Second you choose
a number by which the general counters will be multiplied (the multiplier). Now, this is what
happens: The number shown in the Start Counter is multiplied by whatever value you have
chosen for the multiplier, then the result is converted to the base you have chosen, for example:
base 3 multiplier 3 (counter 17) = 3*17 = 51 -> 3 = 1220.
The digits of this number are then added (in base 10):

1+2+2+0 = 5 and made the modulo operation with the number of notes in the scale

times the number of octaves Assuming C major (7 notes) and 1 octave, this yields:
5%(7*1) = 5,
which is then is added to the starting note note in MIDI values (middle C is No. 60). Since the
mapping starts at 0, then the resulting note is an A above middle C.
Some base-multiplier combinations yield an amazing variety, while others are boringly static.
The result depends in the right combination of base, multiplier and scale.

Earthworm Sequence
"Earthworm" algebra was first discussed by Clifford A. Pickover in his book Computers and the
Imagination. While digging in his garden Clifford accidentally severed an earthworm. It is
known that both parts of a severed earthworm generally continue growing, so Mr. Pickover did
not worry to much about the fate of the earthworm. However, he devised a method of multiply-
and-severe which he called "Earthworm algebra". It works as follows: take any whole number A,
a constant multiplier B and a number which will be the maximum number of digits allowed, C.
Next, multiply A and B. Take the result and multiply it again by B. Repeat this process until the
number of digits in the result get past C. Now, severe the result by truncating it to the its
rightmost C digits. Multiply again by B and severe again to C digits, and so forth. It turns out that
all earthworms (mathematically speaking) eventually enter a cycle, an infinite loop of repeating

41
values. A simple example: lets take 2 as our first number, 3 as the multiplier and 2 for the
maximum number of digits. The sequence will go as follows:

6 18 54 62 (severed 162) 86 58 74 22 66 98 94 82 46 38 14 42 26 78 34 2 6 18...

This particular combination gives a cycle of 20 different values. Some combinations generate
"worms" that are thousands of values long. This simple procedure yields great complexity. The
generated sequences seem to be almost random, but if you listen to them you'll notice hidden
patterns. I believe that aural inspection of these algorithms reveals information that would
otherwise go unnoticed.

Wolfram one-dimensional cellular automata


The mathematician Stephen Wolfram created a one-dimensional variation of von Neumann's
cellular automata which develops on a one-dimensional universe (a line). In this type of CA, each
cell is surrounded by only two other cells, its two immediate neighbors on either side. Each
succeeding generation is represented by a line underneath the preceding one. A cell in generation
2 determines its state (dead or alive) by looking at the state of the cell directly above it (that is, in
generation 1) and at that cell's two neighbors. There are only eight possible combinations of the
states of those 3 cells, ranging from "AAA" (all alive) to "DDD" (all dead). Since there are only
eight possible states for the ancestors of any given cell, and these states may result in one of two
states for the new cell (dead or alive), there are 256 (2 to the 8th power) possible rulesets for this
type of cellular automata. Wolfram classified all 256 rules in four different "classes":

Class I are rules that generate boring configurations, such as all dead or all alive
cells.

Class II includes "frozen" configurations, where all initial activity eventually


settles down to stable structures.

Class III rules generate chaotic configurations, resembling noise patterns.

42
Class IV rules display complex but not random behavior. The output is highly
sensitive on initial conditions (cell configuration).

These universes are one-dimensional tori, that is, the last cell connects with the first cell. It is
remarkable how the aural representation resembles the graphical output of these CA. You can
very clearly hear the differences between all four classes and how they match perfectly with their
graphical counterpart.

3n+1 Numbers
Take any whole number greater than 1. If it is even, divide it by two, if odd, multiply by 3 and
add 1; continue with this process until you reach the number 1. This is the procedure to generate
3n+1 number sequences, a.k.a. hailstone numbers. Take for example the number 7. It generates
the following sequence:
7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1...
It is conjectured that all numbers "fall" to 1 after a finite number of iterations. Some numbers
generate extraordinarily long sequences before falling to 1. 27 is one of the smallest examples.
Very little is known about these simple but mysterious sequences. Although seemingly chaotic,
there is an hidden order in these sequences, and you can easily tell when you listen to the music
they generate.

Logistic Map
The Logistic Map is one of most studied non-linear equations in chaotic dynamics (view image).
It models very well the behavior of many natural phenomena, such as predator-prey ecosystems,
food-population, etc. It is defined as follows:
X(n+1) = X(n)*k*(1-X(n)),
where k is any real value in the interval [0, 4]. The iteration of this formula gives back values
between [0, 1]. For k values less than 3.5 the iteration quickly stabilizes into one value. But at
higher values of k the solutions start bifurcating, stabilizing in 2 values then 4, 8, 16... until it
reaches total chaos. This is called period doubling. Surprisingly, among this sections of total
chaos there are others that have a stable number of values. For a k value of 4, the behavior is
totally unpredictable, random. In fact, the power spectrum for this value is indistinguishable from
that of "white noise". The logistic map is an example of "deterministic" chaos, that is, for a given
value of k, the equation produces the same set of values.
How all this is transformed into notes is a very simple matter: The counters are used as an
iteration control. The formula will be iterated until the number shown there. The result (between
0, and 1) is then multiplied by the number of notes in the scale and by the number of octaves .
The result of adding this value to the starting note is the final note that will be played. Since the
sequence of values is deterministic, for a given value of k you always get the same sequence of
values, thus the same melodies.

1/f Noise
1/f noise ("one-over-f-noise", occasionally called "flicker noise" or "pink noise") is a type of
noise whose power spectra P(f) as a function of the frequency f behaves like: P(f) = 1/f^a, where
the exponent a is very close to 1 (hence the name "1/f noise"). Frequencies in "white noise" ( P(f)
= 1/f^0 ) are uncorrelated, totally independent from each other, whereas in "brown noise" ( P(f) =

43
1/f^2 ) they are closely correlated. 1/f noise is somehow middle-ground between white and
brown noises.

1/f noise appears in nature all over the places, including traffic flow, radioactive decay, chemical
systems, granular flow, ecological systems, human speech...and music!!.

Extensive spectral analysis of "pleasing" pieces of music, such as Bach's Brandenburg Concerti,
Vivaldi's four seasons, etc, etc, show the same spectrum as the 1/f noise. The music derived from
the 1/f noise is the most pleasing to the human ear: it does not have the unpredictability and
randomness of "white noise" (the power spectrum of the Logistic Map for a k value of 4) nor the
boringness and predictability of "brown noise" (derived from brownian motion). 1/f noise is
simulated with the aid of the following non-linear equation:
X(n+1) = (X(n)*n)+(sqr(1-n^2)*r),
where n is a real number between [0, 1] and r is any random value. The user has to specify only
the n parameter. Instead of using a truly random value for r, the program uses the Logistic Map
algorithm with a k value of 4, which generates random but deterministic values. This is necessary
so that your melodies are the same for the same set of parameters, otherwise you would never
know what will come next.
As with the Logistic Map , the counters are used as an iteration control. Try using values of n that
are not to much to the extremes (0 and 1), for the music gets "brownish". Best values are between
.6 and .85.

Henon
Michel Henon was an astronomer at Nice observatory in southern France. He became interested
in fractals by investigating the orbits of astronomical objects. The strange attractor most often
linked with Henon's name comes not from a differential equation, but from the world of discrete
mathematics - difference equations. The Henon map is an example of a very simple dynamic
system that exhibits strange behavior. The orbit traces out its characteristic banana shape (view
image), but on close inspection, the shape is made up of thicker and thinner parts. Upon
magnification, the thicker bands resolve to still other thick and thin components. And so it goes
forever! The equations that generate this strange pattern perform the mathematical equivalent of
repeated stretching and folding, over and over again:
X(n+1) = 1 + Y(n) - a*X(n)^2
Y(n+1) = b*X(n)
Two parameters a and b. Default values are a=1.4, b=0.3. As with other two dimensional maps,
the length of the vector is used to compute the note to be played, which depends on your choice
of octaves, scale, etc.

Hopalong
This fractal is attributed to Barry Martin of Aston University in Birmingham, England (view
image). Hopalong is an "orbit" type fractal like Lorenz. The image is obtained by iterating this
formula after setting X(0) = Y(0) = 0:
X(n+1) = Y(n) - sign(X(n))*sqrt(|sin(a)*X(n)-cos(a)|)
Y(n+1) = a - X(n)
The only parameter is the angle a, measured in radians (-2pi to 2pi). The function sign() returns 1
if the argument is positive, -1 if argument is negative or 0 if the argument is 0. This fractal
continues to develop in surprising ways after many iterations. Notes are computed from this
fractal by iterating the equation and taking the vector length of the (X,Y) values, from which the
pitch is finally computed.

44
Martin
This simple 2-dimensional map is also attributed to Barry Martin (view image). Although
graphically not as interesting as other fractal types, it generates very interesting melodies. It is
defined by the following formulas:
X(n+1) = Y(n) - sin(X(n))
Y(n+1) = a - X(n)
Only one parameter: the angle a measured in radians (-2pi to 2pi). Try values near pi. As with
other 2-dimensional maps, notes are computed from the value generated by the length of the
vector for the (X,Y) values.

Gingerbread man
This chaotic map in two dimensions was proposed and studied by R. Devaney (view picture). It
is chaotic in certain regions and stable in others; for example, (1,1) is a fixed point. All other
points within the hexagonal region whose vertices are (0,0), (1,0), (2,1), (2,2), (1,2) and (0,1) are
periodic with period 6. This contrasts with a point just outside this region: it leads to a chaotic
orbit. There is a stable hexagonal region forming the belly and five others forming the legs, arms
and head of the gingerbread man. These points are, of course, points of stable orbits.
The gingerbread man fractal is defined by the following formulas:
X(n+1) = 1 - Y(n) + |X(n)|
Y(n+1) = X(n)
FractMus' counters are used as an iteration control. The user has to input the initial values of X
and Y. Values can range from -20 to 20. After every iteration, in order to get a unique value, the
vector length is computed (the square root of the sum of the values squared). From this value,
depending on the choice of scale, octaves, modulation, etc, the actual note is computed.

Lorenz
This algorithm does not use Lorenz' world-wide famous three-dimensional chaotic map, defined
as follows:
dx/dt = -a + ay
dy/dt = -xz + bx - y
dz/dt = xy - cz
Instead it utilizes a more humble-looking (although equally interesting in its output) chaotic
equation proposed by Lorenz in 1976 as part of his research in climatology. The equation is
defined as follows:
X(n+1) = a(3X(n) - 4X(n)^3)
One parameter: value of a. Range is [0, 1]. Range with best results is [.65, 1]. Parameters under
.5 produce monotonic results, but you may want to use them anyway depending on the situation.

Random
This algorithm uses a pseudo-random number generator to produce values between 0 and 1. The
music generated with this algorithm is always unpredictable and does not show any discernible
pattern. You may specify the range of the numbers generated. FractMus uses an excellent
pseudo-random number generator function based in "random deviates".

45
TOOLS : Composition Maker

The Composition Maker is a utility that allows you to create complex compositions in short time.
The Composition Maker works with Events. Every Event has a complete set of parameters (Start
and End Counters, Voices, Algorithms, etc). A Composition is a group of Events played
continuously. Events are completely independent from each other. You can add, insert, delete
and play events individually (please refer to FractMus' help file for more details). You are limited
to 1000 events per composition. The list box in the Composition Maker tells you the Start and
End counters of every Event. Double-clicking on them will transfer all the Event's parameters to
the main window.
NOTE: Some Compositions can generate extremely large FractMus files (up to 3Mb), depending
in how many events they contain, the scales used, etc. However, they compress really well
(usually 96-99%).

Composition Randomizer

This tool, in conjunction with the Composition Maker, lets you to create compositions in a flash.
It allows you to custom randomize all composition parameters (Algorithms, Scales, Octaves,
Voices, etc). After you have set all the randomization parameters the way you like, pressing the
Randomize button will randomize the main window; pressing the Create button will create a
composition. For a more detailed explanation of the Randomizer refer to FractMus' Help file.

46
Multiple Voice Editor

The Multiple Voice Editor is a time-saving utility that lets you change one or several parameters
in the main window as well as in the Events of your compositions. Just select what you want to
be changed, the voices it will affect, and which Events in your composition (if you have created
one) will be modified, then press the Change Settings button (for main window modifications) or
the Change Selected Events (for Events in your composition).

Transposer

The Transposer is a utility that allows you to quickly transpose voices both in the Main Window
and your compositions events. You can transpose any interval (from a minor second to an
octave) up or down.

Get Notes
Get Notes is a utility that shows you the notes that will be generated from the Main Window
voice parameters at the current Start Counter. Note names and numbers are shown. N/A will be
displayed if your voices use random parameters. "None" will be displayed if, due to the offset
parameter, the Start Counter for that voice is currently negative. You can move the counter up or
down to go forward or backwards in the melody. You may also hear the notes by checking Play.

47
Events Presets

This utility allows you to create file libraries of pre-defined events. These may be later added to
your compositions at any point.

Randomizer Parameters

The Randomizer Parameters (accessed in the Composition Randomizer Tool) is a utility that lets
you create file libraries of pre-defined Composition Randomizer parameter sets. These can later
be used to create random compositions using the pre-defined parameters.

48
A MUSICAL GENERATOR
http://www.musoft-builders.com/index.shtml

A Musical Generator (aMG for short) takes all kind of objects in your computer and turns these
into music. Take a picture from your desktop and convert it into music. Take the name of you
and your friend and let them sound together. But why not take your tax figures from a
spreadsheet and look whether they sound as music to you. When they sound bad, maybe you
should have a better look at the figures.
What it all boils down to is take information from almost everywhere from your computer and
turn it into music. That’s why I call it a Musical Generator; it generates music from almost
everything you offer it.

Fractal control of drums. Sixteen drum channels have been added which can be fractally
controlled separately.

49
• Fractal control of MIDI controllers. For each channel all 127 MIDI controllers are accessible
so that you can control aspects like panning, volume, reverb, sustain pedal etc.

• Insert your own controllers. Apart from fractally controlled MIDI controllers, you can insert
your own controllers. You can change the panning in the midst of a piece, change the
program or whatever.

50
• Tremendously improved fractal editing. The fractal editors have been greatly improved and
have facilities to preview and prehear your work.

• Nicer colors of fractals. Much more control over the colors of fractals has been given.

• The Lyapunov fractal has been added. A fractal of great beauty, but it takes (a lot of) time to
compute.

WHAT ARE ASPECTS?


Notes are have several properties, called aspects in a Musical Generator. Aspects are pitch,
duration, speed (the volume) and time of each note. When music is generated, a value should be

51
assigned to each aspect. However, in lesson 1 you only assigned a vector to its notes aspect and
you were able to play the music. That is because each aspect, except the pitch provides a default
if no vector is provided. In the table below the aspects are explained.

Notes. A vector assigned to this aspect generates the pitch of the notes. There
is no default provided so you must assign a vector to this aspect in order to
hear music.

Duration. The values of a vector to this note generates the duration of each
note. If no time vector is provided, the next note starts after the duration of
the previous note. The higher the value, the longer the note lasts.

Speed. This is the speed with which a key on a keyboard is pressed. The
higher the value provided by the vector, the faster the key is pressed and the
louder the note will sound.

Time. Determines at which time the note should be played. If values go up


and down, notes that are generated later in the sequence can sound earlier
because thay are sorted according to their time value. This can cause
confusion.

HOW TO ASSIGN VECTORS TO DIFFERENT ASPECTS?


You can assign a vector to a certain aspect in several ways:

Dragging. You drag a vector from the DATA section to the button that represents the aspect and
drop it there. You will see the name of the vector at the button.

Use the aspect editor. Click at the button, a dialog pops up and the first item (listed vector)
contains the vector selected. Click at the arrow down and select the desired vector. Click OK and
the vector appears at the button.

Right-click the button. Click with your right mouse button on the button. A popup menu
appears that lists all available vectors. Select the one you want to assign to the button, or choose
<none> ro remove a vector.

Click Edit|Assign. A popup menu comes up, choose Assign, and choose the aspect you want the
vector to have assigned to.

52
CHANGING THE MINIMUM AND MAXIMUM
The values between which the notes are rescaled are listed below current. The allowable values
are listed under the heading allowed. You may never enter a value below the allowable minimum
or above the allowable maximum. Change the value for minimum to c2 and for maximum to c7.
Press OK and next press play. The sinus now sounds an octave lower. Again press the notes
button and replace c7 by c9 as maximum, press OK and play. The sinus now covers a much
broader range.

Evaluation

What you have learned now is that when you change the parameters of an aspect, exactly the
same vector sounds different. This feature of a Musical Generator gives you even within a
limited range of vectors a broad range of possibilities. As with the notes aspect, you can change
the parameters of the other aspects as well. Experiment with it as much as possible.

RESCALING VECTORS
A vector is being rescaled between the minimum and maximum provided. You can switch off
rescaling by unchecking rescale in the aspect editor. The result is that the vector values are
directly used as input. However, if their values are below minimum or above maximum they will
be assigned the minimum respectively the maximum (in order to prevent program crashes).

DEFAULT
The default is provided for an aspect if no vector is provided for all aspects except the notes
aspect. It is disabled for the time aspect however. The time default of a note is the time of the
former note plus its duration. The first note starts at time zero.

53
CONVERTING TEXT INTO A VECTOR
Text can be typed into a vector, read from a file (select File|Open and choose text file) or pasted
from the clipboard. Because the basic material of a Musical Generator consists of vectors and
vectors consist of numbers, text must be translated into numbers. The rules of converting text to
numbers are the following:

• All non-letter symbols are stripped from the text

• All remaining letters are uppercased

• The letters are converted into their ASCII representation (A=65, B=66, .. Z=90).

After these rules have been applied, the text is converted into a data vector and the text cannot be
recovered.

CONVERTING BITMAPS INTO A VECTOR


Bitmaps can be read from file (select File|Open and choose bitmap file) or pasted from the
clipboard. They are automatically converted into one or three data vector depending on the
number of colors present in the bitmap.

Two colors. When there are exactly two colors in the bitmap and one of them is white, the
bitmap is interpreted as a line on a white background. For each point along the horizontal axis
the height of the first non-white pixel is computed and stored as a number in the data vector.

Exercise

Select File|Open. Go to the Examples directory, choose *.bmp as file type and select the file
Graph.bmp. A vector is entered in the data section.

More colors. When there are more colors in the bitmap (or non of them is white), the picture is
scanned pixel for pixel (for each horizontal point, all vertical points are scanned) and dissected
into their three basic colors: Red Green and Blue. These three colors are inserted as vectors into
the data section.

CONVERTING NUMBERS INTO A VECTOR


Numbers can be typed directly into a vector (select the Data tab and click N) or read from file
(select File|Open and select space delimited files (*.prn) as file type). Numbers should be ASCII
text and delimited by spaces. You can save Excel files (and undoubtedly other spreadsheet files
as well) by choosing save as in Excel and choose to save (parts of) your spreadsheet as a space-
delimited file (these are *.prn files).

INTRODUCING FRACTALS
Fractals are mathematical expressions that yield interesting pictures. They are characterized by
endless repetition and are often used for stunning pictures and landscapes.

INSERTING A FRACTAL AS VECTOR


The tabs Dynamic systems and Complex maps contain fractals. Each type contains a lot of
fractals. Experiment with these because they have quite different characteristics. Plot these first
so you can see how they behave.

54
Exercise

Select the Dynamic systems tab and click at the Martin fractal. Drag it to the notes button and
play it. It is always a good thing to see what you hear, so plot the fractal.

DIMENSIONS
A fractal can have more free dimensions than the vectors we have seen till now.

Exercise

If you haven't assigned the Martin fractal to the notes button, do so. Click the notes button. You
see that both the X and Y dimension can be chosen. Until now you have heard the Y dimension.
Choose the X dimension and click close. Play the music again.

EDITING A FRACTAL
Fractals can be edited in the same way as other vectors. Each fractal has its own editor. You will
notice different parameters for each fractal. You can play with these without any problem.
Sometimes a fractal crashes when parameters are too weird, but mostly the program continues. If
you have created an interesting piece of music, save before you start fiddling around with the
parameters of a fractal. There are several types of fractals and for each type there exists a fractal
editor.

Exercise

Double click on the Martin vector. Change the parameter a from 3.1400 to 3.1700. Press OK.
After some time you will see that the shape of the vector changes. Now play the music again.

BUILD YOUR OWN FRACTALS


The most exciting thing (in my opinion) is trying to build your own fractals, but you must have
some idea of common mathematics. Fractals are based on self referencing. That means that
expressions like:

x = a - sin (y)
y = sin (x) - cos (y)
z=x*y

are quite common. The X before the equals sign denotes the newly to be computed X. Note that
in this example the X and Y after the equals sign refer to the current X and Y values. So in the
expression y = sin (x) - cos (y), the current X is used, even when a new X was computed in the
former equation.

A Musical Generator iterates the equations from 1 to N. N is a value you can provide. The
iteration value is assigned to the variable T. So you have four variables: T (the iteration variable)
and X, Y, Z: the variables for each dimension. The equation computed for Z is used for the color,
you may omit this equation. An equation for Y must be supplied. If you omit the equation for X,
the value for T will be assumed. That means that if you provide only the equation: y = sin (x), y
will assume the value sin (1), sin (2) .. sin (N).

Apart from the variables you may provide up to five parameters: A .. E. These do not change
during the computation of the formula, you can set these when you edit the formulas.

55
How to create your own fractal? Select the Dynamic Sytems tab and click the button Your own

fractal The user editor comes up, and you can supply the formulas, starting values of the
fractal and the values for the parameters.

Dimensionality
Most functions have one free dimension: Y. The X dimension is varied by the program (from 1
to the size of the vector) and the function yields the Y, for example: Y=sin (X). Two-dimensional
fractals have two free dimensions, both the X and the Y dimension are functions by a third
parameter, let's say T. This parameter is varied by the program between 1 and the size of the
fractal. For three-dimensional fractals this story is more complex. There are two types: dynamic
systems and complex maps. The Lorenz fractal is a 3D dynamic system and it behaves in exactly
the same way as 2D dynamic systems, but it has one free dimension extra: Z. When plotting a
Lorenz fractal this third dimension is the color of the fractal. The other type of 3D fractal is the
complex map. This one has only one free dimension: Z. This dimension is computed as a
function from both X and Y. Two examples of these fractals are the Mandelbrot and Julia sets.

TONE SCALE EDITOR


The tone scale editor allows you to create new or change existing tone scales. When a Musical
Generator is playing music, playback is halted. Click Edit|Tone scales and you will see the tone
scale editor.

EDITING A 1D FRACTAL
The 1D editor shows the parameters of the fractal and if you press the preview button ( ) it also
shows the fractal itself. You can change the parameters and plot and hear the results.

56
Normally, playing of a fractal begins at its first value, in the plot its leftmost value. You can
change this value by either changing the start value or by clicking near the left end of the plot. In
that case a black bar appear which can be moved with the mouse. When the bar is moved, the
value in the start box changes as well. The same applies to the finish value, either change it in the
finish box or click at the right side of the box. By pressing play, you’ll hear the difference.

Shows the fractal. This yields a better impression of the musical capabilities of the fractal. You
can change the start and finish positions from which the vector is played in two ways: by
changing the start and finish values or by setting the range limits manually. To change the start
value, manually click near the left end of the plot. A black bar appears which can be moved with
the mouse. When the bar is moved, the value in the start box changes as well. The same applies
to the finish value, either change it in the finish box or click at the right side of the box. By
pressing play ( ), you’ll hear (and see) the difference.

EDITING A DYNAMIC SYSTEM


The Dynamic System editor shows the parameters of the fractal and if you press the preview
button ( ) it also shows the fractal itself. You can change the parameters and plot and hear the
results.

57
Dynamic systems begin from a starting point, and create new points by using formulas in which
is referred to the former points. In this way interesting trajectories are computed. Most of the
dynamic systems are 2D. The user defined fractal is also a dynamic system.

They are stored as a formula, virtually using no memory. You can easily generate 1.000.000
points without any memory penalty. There is a penalty however, because it may take a large
amount of computing time to generate such a vector.

There are a lot of dynamic systems. Experiment which one generates the best result.

EDITING A USER DEFINED FRACTAL


The user editor allows you to create your own functions or fractals. You must supply an equation
for the Y dimension, if you don't provide an equation for the X dimension, the iteration variable
(T) will be assumed and if you provide an equation for the Z dimension, it will be used for the
color. You can insert four variables: T, X, Y and Z in the equations and five parameters: A .. E.
The X, Y and Z values are these of the former iteration.

58
The editor supports the following functions for the formulas:

Predefined variable: PI

Accepted operators: + , - , * , / , ^ , MOD, DIV

The following functions are supported; it doesn't matter if you use lower or upper case:
COS, SIN, SINH, COSH, TAN, COTAN, ARCTAN, ARG,
EXP, LN, LOG10, LOG2, LOGN,
SQRT, SQR, POWER, INTPOWER,
MIN, MAX, ABS, TRUNC, INT, CEIL, FLOOR,
HEAV (heav(x) is =1 for x>0 and =0 for x<=0),
SIGN (sign(x) is 1 for x>1, 0 for x=0, -1 for x<0),
ZERO (zero(x) is 0 for x=0, 1 for x<>0),
PH (ph(x) = x - 2*pi*round(x/2/pi))
RND (rnd(x) = int(x) * Random)
RANDOM (random(X) = Random; the argument X is not used)

The dimension preview shows the fractal for each dimension. This yields a better impression of
the musical capabilities of the fractal. You can change the start and finish positions from which
the vector is played in two ways: by changing the start and finish values or by setting the range
limits manually. To change the start value, manually click near the left end of the plot. A black
bar appears which can be moved with the mouse. When the bar is moved, the value in the start
box changes as well. The same applies to the finish value, either change it in the finish box or
click at the right side of the box. By pressing play ( ), you’ll hear (and see) the difference.

The preview bar has many functionality’s to preview and prehear the choices you have made in
the fractal editor.

59
The preview button shows the impact of the current settings on the fractal. In some cases this
yields an error. In that case you should change the settings.

The MIDI messages window shows the MIDI messages generated for this one fractal.

EDITING A COMPLEX MAP


The complex map editor allows to to edit, preview and “prehear” complex map vectors. Change
the values and press the plot button ( ) to see the effects of the changes. To hear the changes,
press the play button ( ). You can zoom in on a fractal by selecting a small are with the mouse
and the editor will automatically zoom in on the fractal.

There are three ways in which a complex map fractal generates sound. The old way was for each
step down the Y-direction, all lines in the X-direction are computed. This is now equivalent with
the Z-Dimension and is still the default. Two other methods are a slice in the X-Direction and a
slice in the Y-Direction. In order to achieve this click either the X or the Y dimension. The small
plots on the left and below the central plot show the slices look like. To determine which parts
will be sliced a cross can be put over the map. Click on the cross button and a cross appears on
the map. By moving the mouse, the cross is moved. Choose an appropriate position for the cross
and click the mouse. Click the play button and the vector is being played. You can change the

note aspects by clicking the aspect button ( ).

Complex maps are computed for each point in a certain area. The most famous are the
Mandelbrot and the Julia Fractal.

Complex maps are very suitable to zoom into. When you plot a complex map, you can zoom in
to a detail of the plot. This zoom becomes the new fractal (zooming changes the parameters of
the fractal).

60
EDITING A LINDENMAYER FRACTAL
Edits a Lindenmayer fractal.

Lindenmayer vectors or 0L systems which are described in The Algorithmic Beauty of Plants by
Przemyslaw Prusinkiewicz and Aristid Lindenmayer. They describe a simple grammar with
which you can easily generate plant-like structures. When inserting a Lindenmayer vector a
default plant is chosen. You can insert a lindemayer via the Other tab and clicking on
Lindenmayer, or by selecting File|Open and then loading a .l file. The Examples directory
contains several examples from the book.

The grammar assumes a turtle that walks over a sheet of paper. When it walks, the turtle may or
may not draw a line. Three parameters are defined: the axiom (a Musical Generator only
recognizis a single start symbol), the number of recursions and the angle. The following symbols
can be used:

Symbol Meaning

f Move the turtle forward without drawing


F Move the forward and draw a line
+ Rotate the turtle right angle degrees
- Rotate the turtle left angle degrees
[ Start recursion
] End recursion
Other symbol Like F

When a Lindemayer vector is generated, all line segments are stored into memory. This can make
a Lindenmayer vector very memory intensive. You should be careful with the number of
recursions, because increasing this number increases the memory load exponentially.

EDITING AN ITERATED FUNCTION SYSTEM (IFS)


Allows you to edit an IFS fractal. Three fractals are preprogrammed: Fern, Sierpinski and Chaos.

61
ASPECT EDITOR
The aspect editor comes up when you press one of the aspect buttons. Not all properties may be
changed for each aspect. This will be mentioned for the property in question.

Press the arrow down button and choose the vector to be assigned to this aspect. Select <none> if
you want no vector assigned or want to remove a vector from the aspect.
Select minimum and maximum of the aspect. Under the heading “allowed” you find the maximal
maximum and the minimal minimum show.

PLOTTER
The plotter allows you to have a view of the vectors. In order to plot one or more vectors, right
click on them in the DATA view and select plot. You can copy the plot to the clipboard by right
clicking in the plot button.

62
Copies the plotter area to the clipboard so that it can be pasted in other applications.

NUMBER GENERATOR
The number generator generates numbers according to a specific pattern.
Begin
First number of sequence.
End
Last number of sequence.
Skip
Amount of numbers to be skipped. When it is 1, the sequence might be: 1, 3, 5, 7..., when it is 2:
1, 4, 7…
Increment
The amount with which the iterator is increased. This number should always be positive as the
end should always be greater that the begin number.
Iterations
The number of times the sequence should be repeated.
Noise
Allows you to add a random pattern (white noise) between the values low and high. If you wish
to add brown (Gaussian) noise, the first parameter is the mean and the next is the standard
deviation.

TRANSFORMING VECTORS
A vector can be transformed by applying mathematical formulas to all values of one dimension
of a vector. This results in a data vector, i.e. a list of numbers. Select a function and click on a
vector. By clicking on apply a new vector is computed and added to the list of vector.

Functions

63
A list of available functions. When Xi denotes a value of the vector, the functions compute the
following:
Mirror value – Xi; value is requested from user
Invert From back to forward
Add cumulative Xi + Xi-1
Multiply with constant constant * Xi; constant is requested from user
Difference Xi – Xi-1
Absolute |Xi|
Ln ln (Xi)
Exp eXi (easily overflows)
Sinus sin (Xi)
Cosinus cos (Xi)

Vectors
The list of vectors from the data view. New vectors are added to this list by clicking apply.

Name
Name of the newly added vector.

Close
Closes the transform dialogue and adds all vectors from vectors to the DATA view.

Apply
Applies the selected function to the selected vector. If successful a new vector is added to
vectors.

64
poodles & flan: Act I
http://poodlesandflan.com/

poodles & flan: Act I is a metacomposition


it resides in music space somewhere between a composition and a form
it is the potential for myriad musical pieces, all interrelated through a patchwork of
juxtaposed methodologies
poodles & flan: Act I is a tool, a kind of "paramusic" browser
a. use it with a sense of adventure
b. use it with a sense of the absurd
c. ignore all rules
poodles & flan: Act I generates MIDI compositions that are bounded by user-defined
palettes of musical parameters
it can use existing material in a Burroughsian cut and paste
the resulting compositions can sound like jazz, classical, avant-garde or ethnic

and sometimes not...

65
inside poodles & flan: Act I

take a string of digits (or letters)

use it as a seed pattern to create a self-similar shape

use this self-similar shape as a series to generate various musical parameters (e.g. note pitch
and duration, transposition, phrase and period length, scale / mode, polyphonic form and
density, etc.)

the result will have an internal logic that, when rendered, sometimes resembles musical
development, sometimes improvisation, sometimes an organic process and sometimes...

Structure String

The “Structure String” is the heart of any composition. Indirectly, it affects practically every aspect of a
composition. An explanation of its effect is well beyond the scope of this document and undoubtedly
exceeds my writing skills. What is important to know is that pattern and order in the structure string will
be reflected in its compositions.
What do I mean by pattern and order? Take the following string as an example:
111223888776
Here we see an ascending series (1-2-3) and a descending series (8-7-6). There are also series of
repeated digits (three 1’s, two 2’s, three 8’s, two 7’s). These series will sometimes be heard at the
melodic level, sometimes in terms of development at a multi-measure scale, perhaps as the patterns
of instruments. After a fashion, a structure string is not unlike a melody.
The structure string can be entered as digits (0 - 9) or letters (A - Z) up to a maximum length of 25
characters. Typical structure strings range in length from 8 to 16 characters. If you chose letters (either
upper or lower-case), they will be internally assigned numeric values (0 - 25). If the check box to the
right of the “Structure String” is checked, poodles & flan will automatically generate a structure string.

Form

”Form” lets you select one of three structural categories.


”Simple form” is as it states: simple. There is very little conventional musical structure. There is no
deliberate repetition of musical sequences and traditional phrasing is the exception, not the rule.
”Repetition form” generates compositions in which note sequences are repeated in a concentional
fashion. As a result, phrasing becomes a little more regular.
”Extended form” is a cross between the first two forms. Additionally, melodic themes are significantly
longer.

Random Seeds

The three “Random Seed” settings seed the internal random number generator for various operations.
The controls are labelled “course”, “medium”, and “fine”.
”coarse” controls the random generation and setting of all controls on the “Composition” tab. It also

66
determines the internal methods by which poodles & flan interprets the structure string.
”medium” modifies poodles & flan’s intepretation of the structure string.
”fine” allows you to tweak a composition. Its effect is primarily in how poodles & flan uses modifiers.
Its effect is often quite subtle.

Scale, Chord and Modifier Palettes

poodles & flan uses palettes of scales, chords, and modifiers much as a painter uses a palette of
colors. For example, if the Chord Palette has “major triad” and “minor 7th” selected (highlighted), then
poodles & flan will be limited to using only these chord types in a composition. Why not just use all
possible palette selections? Because a musical composition is determined not only by what goes into
it, but also by what is left out. By limiting the selection of scales, chords, and modifiers, you give a
composition a certain feel or character.
What is the purpose of the check box by each palette? When checked, poodles & flan will
automatically make random selections in the palette. These selections will be determined by the
setting of “Random Seed (coarse)”. When the box is left unchecked, then you can manually select (or
de-select) items in the palette by left-clicking with the mouse.
Scale / Mode Palette
The “Scale / Mode Palette” makes available 48 (approx.) pre-defined scales and modes. Each scale
entry shows its definition. The definition is normalized to the key of “C”, but poodles & flan transposes
this whenever necessary. There is also a selection for a “user-defined scale”. If this is selected, then
poodles & flan will use the scale that has been entered in the “User-Defined Scale” box.
Chord Palette
The “Chord Palette” defines 8 chord patterns. While some of these selections are not technically
chords, they nonetheless define specific harmonic conditions.
Modifier Palette
The “Modifier Palette” specifies 13 types of modifiers. poodles & flan uses modifiers to make simple
melodic lines more diverse and interesting, both melodically and rhythmically. These modifiers are
applied, under poodles & flan’s direction, separately to each track that is not defined as ostinato
or drums.
”pedal point” modifiers come in two styles; long sustained notes and quarter notes.
”arpeggios” are applied to notes (typically quarter note or longer) in either rising intervals,
falling intervals, or both.
”ornament” modifies by replacing notes with “turns”.
”trill” is merely a rapid alternation between two notes.
”notes only” modifiers are filters that pass through only the indicated notes and replace the
others with rests.
”step and repeat” modifier takes the first few notes of a phrase and repeats them transposed at
various intervals.

67
User-Defined Note Strings
poodles & flan can base a composition upon user-supplied melodies. In doing so it extracts
fragments of these melodies then swaps, transforms, and juxtaposes the pitch and rhythm
components of them. The resulting music becomes a collage of melodies and rhythms, all based upon
the user-supplied material. This is sometimes referred to as recombinancy.
User-supplied material is entered as simple note strings. Each note is comprised of a pitch, an optional
octave, and a note duration. You can enter up to 10 note strings, just separate them with blank lines.
Pitch is coded as: C C# (or Db) D D# (or Eb) E F F# (or Gb) G G# (or Ab) A A# (or Bb) B R (R = rest)
Octave is coded as: 0 to 9
Duration coding: S sixteenth, S. dotted sixteenth, T triplet (1/3 quarter note), E eighth, E. dotted
eighth, Q quarter, Q. dotted quarter, H half, H. dotted half, W whole

Example: an ascending series of nine notes and a rest with increasing durations
C0S C#0S. D0T D#0E E0E. F0Q F#0Q. G0H G#0H. RW

All characters may be either upper or lower-case.


Note: To enable the use of note strings, be sure to check the check box below the note string text box.
Load and Save Note Strings

”Load Note Strings” loads a previously saved set of user-defined note strings. ”Save Note Strings” saves
the current user-defined note strings in a “.nts” file.
Note String Transformation

The “Note String Transformation” control determines the overall amount of melodic and rhythmic
transformation that is applied to the user-defined note strings.
0 = no transformation
7 = maximum transformation
Max comp duration

The “Max comp duration” controls sets an approximate limit (in seconds) to the length of compositions.

68
The will be a few compositions that extend beyond this limit, especially when it is set to a low value.

Option
The “Option” control lets you customize the way that poodles & flan composes for each track. The
selections available in the Option list include all the modifiers from the Modifier Palette as well as a variety
of ostinato options. If a modifier is selected, poodles & flan will give it a preference when it selects a
modifier to apply to the track. The selection in the Option list won’t always be selected, but it will be
applied more frequently then selections from the Modifier Palette.

If an ostinato option is selected, it will always be active. Such tracks are referred to as “ostinato tracks”
and are handled differently than other tracks. Each of the ostinato selections has a time signature
ranging from ½ to 8/8 and has an accent on the first note.
There are also three selections with time signatures of 0/2, 0/3, and 0/4. These merely take to current
melody and speed it up by a factor of 2, 3, or 4.

69
QUASI FRACTAL COMPOSER
http://members.tripod.com/~paulwhalley/

The QFC Console:


There are five groups of controls on the QFC console: File and Help menus (at the top), File
and MIDI controls (in the upper left), General Parameters, Mapped Parameters, and
Orchestration. Except for the MIDI player, the controls should not be changed during the
playback of a composition.

The console controls come in five varieties: buttons, text boxes, drop-down boxes, check boxes,
and pull-down menus. These are standard controls (no hidden "surprises") and operate just like
the controls in any other Windows program. Additionally, each text box (except Structure) has
an adjacent "spinner" control for changing the value in the box without having to use the
keyboard.

Quick Instructions:
If you want to start playing with QFC immediately and don't want to read the instructions first,
then:

1. Enter a string of about a dozen digits in the Structure box.

2. Enter any integer from 1 to 32767 in the Mapping box.


3. "Twiddle" any of the other controls in any way that pleases you.

70
4. Make sure the Auto box is switched on (checked).
5. Press the Compose button.
6. When QFC is done, press the multimedia play button.

Melody-to-Structure translates a simple melody (3 to 16 notes) into a Structure. When the


translation dialog box appears, just type the desired melody using naturals and sharps (i.e. A, A#,
B, C, C#, D, D#, E, F, F#, G, G#). When you exit the dialog box, the translation will appear in
the Structure box. Note: If the melody covers a span of more than ten semitones, then the
resulting Structure will be truncated (i.e. shorter than the melody). This translation feature
generally works best in compositions where Tonality is set to chromatic and Variation is set to a
low value. Melody-to-Structure can also be invoked using F7.

General Parameters Controls:


Structure Structure is a string of from 3 to 16 digits. This string is the basis of the
self-similar structure that directly, or indirectly, controls or influences
most parts of the composition. The only constraint on Structure is that it
must not be composed of just one digit (e.g. "333333" is not valid, but
"333334" is OK). Structure is covered in greater detail in the section
Structure and Mapping.

Mapping Mapping is an integer value from 1 to 32767. This control seeds the
program's random number generator (when the Compose button is
pressed), thereby determining the values of all randomly set parameters
inside the program. Also, if the Mapped Parameters Auto box is
checked, all the Mapped Parameters will be assigned random values.
Mapping is covered in greater detail in the section Structure and Mapping.

Variation Variation is an integer value from 0 to 10. This control determines the
amount of variation in the composition. Generally, lower settings will
result in more simplistic compositions, while higher settings will increase
the probable use of specialized musical devices ("bells and whistles").

Fade Fade has a drop-down list of four settings: NONE, FADE IN, FADE
OUT, and FADE IN & OUT. The fade function operates on the first and
last periods of the composition.

Smooth Smooth has a drop-down list of foursettings: NONE, PERIOD, PHRASE,


and ALL. The smoothing function attempts to do exactly what it says; it
tries to smooth the transition between phrases, periods, or both. Smoothing
typically results in more gradual and intricate transitions.

Tracks Tracks is an integer value from 1 to 16. This control determines the
maximum number of tracks that will be used in the composition. If the
number of tracks is less than 16, then QFC will use the tracks from 1 up to
the value in Tracks.

71
Tempo Tempo is an integer value from 20 to 420. This control determines the
MIDI tempo of the composition.

Tonality Tonality has a drop-down list of seven scales: chromatic, major, minor,
whole-tone, and three penatonic scales. This control determines the scale
that will be used throughout the composition.

Mapped Parameters Controls:


Auto When Auto is set (checked), the Mapped Parameters controls will be
assigned random values automatically when the Compose button is
pressed. The random values will be determined by the value of Mapping
which acts as the seed for the program's internal random number
generator. When Auto is clear (not checked), the Mapped Parameters
controls can be manually set by the user.

Active Voices Active Voices is an integer value from 1 to 12. This control selects the
structure map that determines the number of voices (tracks) that will be
active at any given point in the composition.

Period Length Period Length is an integer value from 1 to 4. This control selects the
structure map that determines the length (number of phrases) of each
period in the composition. The maximum number of phrases in a period is
limited by the number of digits in the Structure.

Period Repeats Period Repeats is an integer value from 0 to 4. This control selects the
structure map that determines the number of times that a period is
repeated. A value of 0 disables the period repeat function. The maximum
number of period repetitions is three.

Phrase Length Phrase Length is an integer value from 1 to 12. This control selects the
structure map that determines the nominal length (number of notes) of
each phrase in a period. The maximum number of notes in a phrase
(nominally) is limited by the number of digits in the Structure.

Phrase Mirror Phrase Mirror is an integer value from 0 to 12. This control selects the
structure map that determines the amount of "phrase mirroring" for each
phrase in a period. Phrase mirroring is when a phrase is lengthened by
concatenating a mirror-image copy of it. A value of 0 disables the phrase
mirror function.

Current Key Current Key is an integer value from 1 to 12. This control selects the
structure map that determines the key that will be in effect at any point in
the composition. This control has no effect when the Tonality control is
set to Pentatonic Or Whole-Tone.

Note Pitch Note Pitch is an integer value from 1 to 29. This control selects the
structure map that determines the pitch of each note in a phrase. The
maximum pitch range for any track is two octaves.

72
Note Duration Note Duration is an integer value from 1 to 29. This control selects the
structure map that determines the duration of each note in a phrase.

Glissando Glissando is an integer value from 0 to 12. This control selects the
structure map that determines whether or not glissando can occur in any
given phrase. A value of 0 disables the glissando function.

Pointillism Pointillism is an integer value from 0 to 12. This control selects the
structure map that determines whether or not pointillism can occur in any
given phrase. Pointillism, as it is implemented in QFC, means that the
individual notes within a single phrase will be randomly assigned to two or
more different voices. A value of 0 disables the pointillism function.

Rhythm Rhythm is an integer value from 0 to 12. This control selects the structure
map that determines whether a rhythm (specifically, a quick melodic
accompaniment) will be present during any given phrase in a composition.
A value of 0 disables the rhythm function. It should be noted that other,
non-programmed rhythms will "emerge" in compositions.

Rhythm Track Rhythm Track is an integer value from 1 to 12. This control selects the
structure map that determines which track will contain the active rhythm at
any given point in a composition.

Dynamics Dynamics is an integer value from 0 to 12. This control selects the
structure map that determines the velocity (volume) dynamics that will be
applied to any given phrase. Dynamics is implemented by making note
velocity proportional (either directly or inversely) to note duration. The
direction and degree of proportionality is determined through the structure
map. A value of 0 disables the dynamics function.

Compression Compression is an integer value from 0 to 12. This control selects the
structure map that determines the degree of pitch compression that will be
applied to the melody in any given phrase. The effect of Compression is
that angular melodies with large skips will become more lyric and lyric
melodies will have even smaller steps and more repeated notes. A value of
0 disables the compression function.

Orchestration Controls:
Instrument Instrument has a drop-down list of 128 standard patches (instruments).
This control determines which patch will be assigned to the indicated
track.

Transpose Transpose is an integer value from 0 to 96. This control determines the
base MIDI pitch for all notes assigned to indicated track. Each step
represents a semitone and twelve steps is an octave. A MIDI pitch of 60
translates to middle C.

73
Volume Volume is an integer value from 0 to 127. This control determines the
maximum volume (MIDI velocity) for all notes assigned to the indicated
track.

Pan Pan is an integer value from 0 to 127. This control determines the panning
(balance) for the indicated track. It ranges continuously from left channel
only (0) to right channel only (127), with the midpoint at 64.

Tie When Tie is set (checked), repeated notes (adjacent notes of the same
pitch) in each phrase will be tied. This control applies to the indicated
track.
A QFC composition is comprised of "n" tracks (where "n" is the number of tracks specified in

the Tracks control). Each track is broken down into "x" periods (where "x"

is the number of digits in the Structure ).

Each period will contain from 1 to "x" phrases. Likewise, each phrase is comprised of from 1 to
"x" notes (nominally). The number of phrases can vary from period to period, just as the
number of notes can vary from phrase to phrase. Periods and phrases in all tracks will be
synchronized, beginning and ending at the same time.

It may be convenient to think of each track as a "staff". Similarly, each phrase can be likened to
a short musical structure representing from one to a few measures and each period, thereby, is a
larger musical structure. While this is a fairly good way to visualize the form and structure of a
composition, you should also keep in mind the a single period can (and will) range anywhere
from one to 256 notes in length. Thus an entire period could end up fulfilling the musical role
of a single measure.

Structure And Mapping:

The Structure is the heart of all compositional processes in QFC. It


is reflected everywhere in the composition, from the overall form of the composition to the
pitch and duration of individual notes. In this respect, the Structure is functionally similar to
the noterow in a robust serial composition. It is the gestalt of the composition.

The Structure directs the composition process through the Mapped Parameters controls.

74
Each Mapped Parameter is assigned one of 28 possible structure maps.
The structure map determines how the Mapped Parameter translates the individual digits of
the Structure into control values for the specified compositional process or characteristic.

During composition processing, Mapped Parameters with structure maps 1 through 4 are
calculated at the beginning of each period and remain in effect for the entire period. Mapped
Parameters with structure maps 5 through 12 are calculated at the beginning of each phrase
and remain in effect for the duration of the phrase. Finally, Mapped Parameters with structure
maps 13 through 28 are calculated for each individual note. In other words, maps 1 - 4 can
exercise control over the form of a composition, maps 5 - 12 can control at a more detailed
level, and maps 13 - 28 control the definition of individual notes.

Another way of looking at structure maps is in terms of diversity. Lower numbered maps will
generally yield more repetition in the final composition. Correspondingly, the higher numbered
maps tend to produce greater variety.

If you want a controlled way to observe how different structure maps effect the composition
process, try this:

1. Set the Structure to "0123450".


2. Set the Variations control to "5".
3. Set all the Mapped Parameters to their respective minimum values.
4. Make sure the Auto box is switched off (unchecked).
5. Press the Compose button.

Listen to the composition (maybe a couple times). Save it to disk so you will have it for
reference later. Then select one of the Mapped Parameters controls, "twiddle" (change) it,
regenerate the composition, and listen to the differences. Note: Not every control change will
result in a noticeable composition change. There are stochastic (random) processes in QFC
which will occasionally "override" the manually set parameters.

75
Structure Map Table:
The following table lists the structure maps for all of the possible Mapped Parameters values:

map index effect


1 period absolute
2 period absolute, inverted
3 period relative
4 period relative, inverted
5 phrase absolute
6 phrase absolute, inverted
7 phrase relative
8 phrase relative, inverted
9 phrase + period absolute
10 phrase + period absolute, inverted
11 phrase + period relative
12 phrase + period relative, inverted
13 note absolute
14 note absolute, inverted
15 note relative
16 note relative, inverted
17 note + period absolute
18 note + period absolute, inverted
19 note + period relative
20 note + period relative, inverted
21 note + phrase absolute
22 note + phrase absolute, inverted
23 note + phrase relative
24 note + phrase relative, inverted
25 note + phrase + period absolute
26 note + phrase + period absolute, inverted
27 note + phrase + period relative
28 note + phrase + period relative, inverted
___________________________________________________________________________

Tips, Hints, and Suggestions:


Structures need patterns. Because the Structure is so pervasive throughout a composition, it
is important that it exhibits some rhyme and reason. A Structure without any pattern will
usually result in compositions that sound "random" and lack coherence. On the other hand, a
little randomness in the Structure can "break up" an otherwise monotonous composition. One
favorite trick of mine is to end the Structure with the same 3 or 4 digits that it starts with (e.g.
0480022440480). This has the effect of "rounding" the composition. Another trick is to repeat
digits (e.g. 00, 22, and 44 in the preceding example). This has the effect of adding rhythmic
character to the melody, but does so at the expense of repetition in the overall form of the
composition.

76
How long should a Structure be? Typically 9 to 14 digits is a good length for a Structure, but
I've run across interesting compositions with as few as six digits and as many as sixteen. For a
slow piece (e.g. an adagio), a half-dozen digits might do quite nicely. On the other hand, a full
sixteen digits with the Tempo cranked way up can yield something quite intricate and bizarre.

Interesting Structures and Mappings. After you have played with QFC for a while, you will
probably notice that some Structures seem to yield more interesting compositions than do
others. Keep track of these Structures. The same seems to hold true for Mappings, so keep
track of these as well.

Variations. If you generate a composition that sounds promising but is not


quite right, try switching off the Auto control and then change either the Variations control or
the Mapping control (or both). This is a good way to generate potentially similar compositions.
Also, minor refinements in the Orchestration settings can often make a world of difference.

Controls don't always work the way you would expect. Sometimes when you change a
parameter, it doesn't seem to change the composition (or doesn't change it the way you'd
expect). This is to be expected because QFC makes use of stochastic (random) processes. Many
of the parameters don't control the composition process directly, but instead control the
probability of a change.

Tonality and dissonance. QFC was originally designed to generate relatively consonant
compositions based on the traditional chromatic, major, and minor scales. The addition of the
pentatonic and whole-tone scales was a recent afterthought and, as a result, the use of these
scales tends to generate a fair amount of dissonance. You can either avoid the use of these
scales or, if you're adventurous, embrace and utilize the dissonance.

What if you want a little more more dissonance? Try "twiddling" the Transpose controls in
the Orchestration frame. Normally you will set the transpositions as multiples of 12. Try
raising a few of them by a fixed amount . Seven steps usually gives pleasing results, one step
will probably make you wish you hadn't.

Want more variation in the melody? Try increasing the setting of the Variations

control.

Want longer melodies? Try setting the value of the Phrase Mirror
control equal to the value of the Phrase Length control. This often works
for me. Still not long enough? Try incrementing or decrementing both controls by one count.

A short motif doesn't produce much of a composition when using the Melody-to-Structure
function. Try doubling (or even tripling) each note of the motif. You might even make the
number of note repeats proportional to the duration of the note (e.g. eighth note = no repeats,
quarter note = 1 repeat, half note = three repeats, etc.).

Glissando and pointillism don't play well together. Each of these musical devices can
effectively embellish a melody, but with both active simultaneously (even in different voices)

77
the composition tends to sound garbled and mushy. Avoid setting these two controls to identical
values.

Want QFC to compose in a particular style? Good luck. I usually just experiment until I find
something in the desired genre and then I attempt to refine it. The Orchestration settings is
usually a good place to start. When you find something that seems to be a step in the right
direction, save it for future reference. If you come up with a better method, or even have some
vague glimmer of an idea, please let me know.

78
Make Prime Music

Prime numbers have the characteristic that they extract themselves from each regularity. Since
they expand however in the infinite, theoretically meaningful information must arise sometime.
The difficulty consists in, to break down this result that it is available in an understandable form.
Music is a form under many possibilities. The music midi files, may not contains any particularly
valuable informations, than aestheticalies. However it represent the spirit of this reflection.

Description of the Midifile

(basic algorithm) With exception of 2 and 5, any prime number modulo 5 have as results 1, 2, 3
or 4. Around now the definite Midi note to be received, the modulo results of three successive
prime numbers are selected and to a number, on base 4, compound. 64 possible combinations
result.

How to calculate the three first midi notes?

The three first prime numbers 7. 11. 13 modulo 5 results in 2. 1. 3. In the four-calculating-system
this number represent 2-1=1, 1-1=0, 3-1=2 >> 102. In the decimal system this results in
1*4^2+0*4^1+2*4^0=18. The midi note become 18.

79
The Midi file has the following characteristics

The prime numbers 2 and 5 make no sense in the characteristic described here, so the prime
number 7 is the first possible number to be considered. The notes are divided in to 4
voices/tracks.

INIFILE EDITING:

########Method=3########
The Method value >> 1....3
1 = one prime jumping [7,11,13] [11,13,17] [13,17,19].....a.s.o.
2 = two primes jumping [7,11,13] [13,17,19] [19,23,29].....a.s.o.
3 = three primes jumping [7,11,13] [17,19,23] [29,31,37].....a.s.o.
###############Base_4_Count=2###############
Base_4_Count value >> 1...2
1 = calculating the decimal value (midi note=decimal value + FirstMidiNote)
((Prime[x] mod 5)*4^2)+((Prime[x+1] mod 5)*4^1)+((Prime[x+2] mod 5)*4^0)
2 = calculating the decimal value
((Prime[x] mod 5)*4^0)+((Prime[x+1] mod 5)*4^1)+((Prime[x+2] mod 5)*4^3)
##################
VolumeChannel1=127
VolumeChannel2=115
VolumeChannel3=80
VolumeChannel4=35
##################
The VolumeChannel value >> 0....127
The volume of each channel/track
#######################
AutomaticPosition=21
NotesPositionTrack1=21
NotesPositionTrack2=37
NotesPositionTrack3=43
NotesPositionTrack4=53
#######################

AutomaticPosition value >> 0....63

80
If AutomaticPosition value=0, the NotesPositionTrack values takes effect.
see below.
If AutomaticPosition > 0, the notes calculated for each track, dont
overlapthe notes in an other track. The value you give is the first
lower note in track1.
The exact note division:
track1-notes-area: AutomaticPosition+0.......AutomaticPosition+16
track2-notes-area: AutomaticPosition+17......AutomaticPosition+32
track3-notes-area: AutomaticPosition+33......AutomaticPosition+48
track4-notes-area: AutomaticPosition+49......AutomaticPosition+64
The NotesPositionTrack values >> 0.....112
It define the notes position for each track.
!!! It take only effect if the AutomaticPosition value = 0 !!!
ex. NotesPositionTrack1 values = 39
first note in this track = 39 last note = 54
NotesPositionTrack2 values = 45
first note in this track = 45 last note = 60
NotesPositionTrack3 values = 50
first note in this track = 50 last note = 65
NotesPositionTrack4 values = 21
first note in this track = 28 last note = 43
########################
Ticks_per_QuaterNote=150
Counter1=96
Counter2=48
Counter3=96
Counter4=192
FixCounter=1
########################

The FixCounter value >> 0....1


If 1, each track have a fixed counter
ex. Counter1=192 related to Track1
If 0, each track have one of the 4 counter value.
The changes are calculated from the prime numbers.
FixCounter is in a experimental phase. So you should set
FixCounter=1.
The Ticks_per_QuaterNote value >> 0.....32600.
Lower value slow down, and higher value speed up, the tempo.
The Counterx values >> what ever you want.
BUT!! If you want a reasonable result, which means a not too chaotic result,
the counterx value should have common divisors.
(Also see APPENDIX Midi.txt)
If the Ticks_per_QuaterNote value = 96 then the notes have the notation:
Quater note = 96 ticks duration
counterx = 48 // every 48 ticks or eighth note an event may happen,
it depend if a note is present in this track or not.
Note: The midi files have always 4 tracks.
Example 1:
Ticks_per_QuaterNote=96

81
Counter1=384 // Whole note
Counter2=192 // Half note
Counter3=96 // Quater note
Counter4=48 // Eighth note

Example 2:
Ticks_per_QuaterNote=96
Counter1=48 // eighth notes
Counter2=48
Counter3=48
Counter4=48
##################NoteArraySize=6000##################
The NoteArraySize value >> 1000.....infini
How many notes to be created from prime numbers
The size depend of computer memory

82
LMUSE
http://www.geocities.com/Athens/Academy/8764/lmuse/lmuse.html
L-Systems

L-systems were invented by Aristid Lindenmayer in 1968 to model the development of living
organisms by recursively applying a set of transformation rules to a simple initial string of
symbols and interpreting the resulting (usually more complex) string of symbols as structure
elements of the organsism. L-systems also provide a concise grammar for generating classic
fractals like von Koch snowflakes, dragon curves and space filling curves, as well as for
modeling organic growth.

An L-system starts in generation 0 with a simple string of symbols, and for each subsequent
generation, symbols are replaced by new symbols or strings of symbols according to a set of
rules. The idea is easiest to see by example. Say our starting string, (called the 'axiom'), is just

The replacement rules show how each symbol in the current generation should be replaced. Two
simple rules (for example) are

A=B
B=BA

According to the first rule, every 'A' in the current generation should be replaced by a 'B', and
each 'B' in the current generation will be replaced with 'BA' in the next generation.

generation 0: A (the axiom)


generation 1: B (the A was replaced with B )
generation 2: BA (the B of generation 1 was replaced with BA)
generation 3: BAB (the B of gen 2 replaced with BA and the A replaced with B)
generation 4: BABBA

Note how the replacements for each generation occur in 'parallel'. We will call the number of
generations the "recursion level". When the symbols are interpreted as graphics commands,
reading from left to right, the resulting pictures can get very complex. In most L-system
implementations the symbol 'F' is interpreted as a command to "draw a line". Because of the
recursive way the production string is made, L-systems are a concise way to generate the 'self-
similar' nature of fractals.

The purpose of LMUSe is to interpret the resulting symbol strings as musical directions. For
example, 'F' is interpreted as "play the note". See 'Symbols'. LMUSe starts with a 'rule file' which
contains an axiom string, a set of replacement rules, a default recursion level, and another
parameter the 'angle' (a number of the specially interpreted symbols have to do with changing the
drawing turtle's direction and orientation).

#=== Sample Rules file ====


5 #recursion level

83
10 #angle
AB #axiom
A=+FB # first rule
B=AF # second rule
#===========================

In LMUSe, '#' is a special 'comment' symbol. LMUSe ignores everything on a line after a '#'. The
rules are applied to the axiom to make a 'production string' (the first generation). The rules are
then applied to that production string in turn, making a new production string (the second
generation), which is run through the rules, the process repeated "recursion level" number of
times. The result at the end is just called the "production string".

By itself, the production string is just a string of symbols. The production string is then
'interpreted'. That is, the symbols are mapped to drawing and/or music playing commands. In
LMUSe, the musical commands are in the form of MIDI messages.
----------------------------------------------------
Context Sensitivity and Stochastic Rules

Rules like A=AB, and X=FB^&F, are called 'context-free' because the symbol to be replaced (on
the left of the '=') is replaced by the right side of the '=' no matter what other symbols happen to
surround the symbol to be replaced. 'Context-sensitive' rules are rules whose application does
depend on the surrounding symbols. In LMUSE, context-sensitivity of a rule is denoted with '>'
or '<' after the symbol to be replaced and before the '='.

For examples:
A>B=AB # "if B is to the immediate right of A replace the A with AB".
A<F=FFAB # "if F is to the left of A, replace the A with FFAB"

In LMUSe rules, the symbol to be replaced is always the first symbol in the rule's line. If the
above pair of rules were in the same rules file and both conditions were true, (for example if the
production contained the sequence "FAB") only the first rule would be actually applied. This is
because once a rule is applied to a symbol, all following rules for that symbol are ignored. Also,
"A is to the left of B" is True if all that separates A and B is a number or a number in
parentheses, or, of course, if A is directly adjacent to B.

To combine both '<', and '>' in a single rule condition, the two conditions must be in that order:

A<B>C=X

would only match BAC and replace the A with X (BAC becomes BXC).

LMUSe also implements 'stochastic rules'.

A(.5)=BBA

will replace A with BBA only 50% of the time. The pair of rules:

A(.5)=BBA
A=ABA

84
will replace A with BBA 50% of the time, otherwise (the other 50% of the time) A is replaced
with AAB. The order of these two rules is important. Reversing them:

A=ABA
A(.5)=BBA

will always replace A with ABA. This is because the first (A=ABA) is not a stochastic rule (no
probability in parentheses) and since it comes first, it is applied. Once a rule is applied to a
symbol, the rest of the rules for that symbol are skipped, so the second line has no effect at all.

To have three stochastic rules each with a probability of 1/3, you would write:

A(.33)=BBA
A(.5)=ABA
A=BABB

The way it works is, the probability in parentheses is the probability that the rule will be applied
if LMUSe gets to that rule, and LMUSe stops looking for a rule to apply once it has applied one.
That is, there is a .33 probability that the first rule will be applied. If it isn't applied (probability
.67), then the second rule is attempted. Half the time the second rule is attempted, it is applied.
That is 1/2 of .67 =.335 probability that the second rule will be applied. And finally, if and only if
neither of the first two are applied, the last rule is applied. Again, once a rule is applied to a
symbol, following rules are skipped.

To combine a stochastic condition with a context-sensitive condition, the stochastic condition


must come at the end:
F<A>B(.5)=FF

Stochastic rules have their random effect as the production string is being built. Once the
production string is done you would have to do another 'Make' to see any difference due to the
randomness.

LMUSe transformation rules can contain another type of randomness. The '~' (tilde) changes,
randomly, the current state's direction. And '~(x)' changes the direction randomly up to a
maximum of x degrees. This random change occurs at the time of interpretation and will give
(probably) different results every time the production string is interpreted. To avoid differences
between interpretations, you can do 'ReMap' instead of 'Remake'.

---------------------------------------------------------------
The State and Stack

In interpreting the production string, the string is treated as sequence of commands to a 'turtle'.
These commands can alter the turtle's state and/or cause the turtle to draw or make sound.

In LMUSe, the turtle's state consists of the turtle's position (x, y, and z coordinates), a 'forward'
vector telling it what direction it is facing, an 'up' vector tells what direction the top of its head is
pointing, and a 'left' vector telling what direction is to the turtle's left. The state also holds the
current 'length' and 'thickness', color or instrument timbre, the size of the basic turning angle, and
which map the turtle is using to convert its current state into pitches, durations, and volumes. In

85
addition, the state holds what 'time' it is (when the notes it is making are to be played), and how
far to transpose pitches.

Each of these components of the turtle's state can change and 'develop' as the production string is
interpreted.

There is only one turtle, so in order for it to make branching structures, or polyphonic musical
lines, it needs some sort of memory of where it has been so that it can go back to certain points in
its development to pick up where it left off.

The turtle's state stack acts like the turtle's memory. A command which tells the turtle to put its
state onto the stack is called a 'push', and a command which tells the turtle to retrieve its old state
from the stack is called a 'pop'. When a state is 'pushed' it is always placed on 'top' of the stack,
and when the turtle does a 'pop' it always gets its new state off the top of the stack ('last in, first
out'). The symbol '{' is used to push the turtle's state and time and the accompanying 'pop state
and time' symbol is '}'.

To push the state of the turtle, but not time (that is, so that a 'pop' will send the turtle back to
where it was, but not back in time), you use '[', and naturally the accompanying pop symbol is ']'.

It is often convenient to just push and pop the time (to allow the turtle to continue developing,
but parallel in time to its previous development). The LMUSe symbols for pushing and popping
just the time are '\' (push) and '/' (pop).

---------------------------------------------------------------------------------------------
Menus
---------------------------------------------------------------------------------------------
Production menu
-------------------------
(Also see Help menu / Process Overview) Making the production string and interpreting can take
a long time, depending on recursion level and how long the production string gets. You can
cancel/abort a `Make' or `Interpret' with the ESC key or clicking the right mouse button.
Depending on how far the interpretation gets, you may have enough to play.
From the production screen, you can save the drawing to a PCX file by hitting `CTRL-d'.
Also, from the production screen or the play screen, you can do a `screen dump' to a PCX file by
hitting `CTRL-p'.

* Load, Make, and Interpret


Gets the name of the rule file to use, and makes the production string. Then it goes ahead and
interprets the string and plays the result. Use this to load a file and make music with least fuss.

* Load Rules
Gets the name of a rule file and loads the rules into memory. (Doesn't make a production)

* Make Production
Makes the production string from already loaded axiom and rules. (Doesn't interpret or play it).
Pressing ESC or clicking the right mouse button interrupts and aborts making the production
string.

* Interpret Production

86
Interprets the production string. You are asked how you want the production string interpreted.
That is, what parameter should be mapped to pitch, what maps to note durations and note
volume.
Pressing ESC or clicking the right mouse button aborts the interpretting.

* Remake and Interpret


Makes and interprets the production string using the already loaded rules. Remake and Interpret
also recalculates the necessary screen dimensions and state limits. Reinterpret(Remap) (see
below) does not and so it is certainly safer to use Remake and Interpret, although it is more time
consuming.
Pressing ESC or clicking the right mouse button aborts/cancels the process.

* Reinterpet (Remap)
Reinterpret the already made production string, going through the mapping process anew. Note
that if the rule file contains stochastic rules, you will need to Remake the production string to get
different results from rules's stochastic nature. Remap will just reinterpret the production.
On the other hand, certain symbols, like `~', yield stochastic results during interpretation.
Pressing ESC aborts the remapping.

* Play
Go to the 'Play' screen to hear your interpreted production

* Save Rule File As


Save the current transformation rules as a rules file, including current recursion level and basic
angle

If the rules were originally loaded from disk, be aware that 'Save Rules' does not keep comments
you may have in the original file. To keep the original file, you will have to remember to save the
rules with a modified name so the original file isn't overwritten.

* Get Production
Read in a previously saved production string from disk. Since this production string is already
`made', the only Production Menu opotions that make sense to use on it are `Interpret' or
`Reinterpret/Remap'. (`Make' will make a new production string from whatever rules are
currently in use which may have nothing to do with the production string you have loaded from
disk. In this case the production string is overwritten and will no longer be in memory). When a
production string is saved, the map parameters and the rule file angle are not saved, so when you
`Get' a production, you will have to either remember these or supply new ones (or use the
defaults)

* View/Save Production
Look at the current production string. Option to save the production string (as *.out).

* Save MIDI
Saves your music as a (SMF format 1, multitrack) MIDI file. MIDI files are widely supportedby
sequencing programs, sound cards, and web browsers on nearly every type of computer. There
are also utilities for converting MIDI files into CSound scores and other formats

Options available when you save a MIDI file:


Split Tracks by Program:

87
With this off, LMUSe writes MIDI files just as they were interpreted, which means that the file
may have multi-program tracks. Some sequencing programs and midi-file players don't treat such
files very well. With this toggled to on (checked), tracks containing multiple programs
(instruments) will be split up and each instrument is given its own MIDI channel. There is no
limit to the number of tracks that might be written into the MIDI file.
Write info into MIDI file:
Toggles writing certain LMUSe information (the rule file name, map file name, mutations, etc)
into a text field in saved MIDI files. In some sequencers this field is visible as the name of track
0.
Save (number) Loop(s):
Choose how many repetitions of the interpretation to save.
* Load Map
Gets parameters (map, scale, etc) from a previously saved map file.

* Save Map
Save parameters (map, scale, etc) to a map file.

* Play a MIDI file


Load and play a previously created MIDI file.

* Stop MIDI - Ctrl-s


Stops the playing of a MIDI file.

* DOS shell
Shells to DOS command prompt

* Quit
Quits LMUSe

-------------------------------------
Map menu
-------------------------------------
* Map
Opens the map dialog. For the most part, this menu item is unnecessary since you are
automatically presented with the map dialog on every Interpret. Click on the `Pitch' box with the
mouse and drag a line to the parameter you want to dictate the pitches to be played. Similarly for
`Durations' and `Volume'. LMUSe keeps track of the x, y, and z coordinates of an interpreted
production. At all times the interpretation has three directions: forward (where the line is
headed), up, and left. These are unit vectors each with x, y, and z components. The difference
between `state length' and `draw length' is that the `state length' only changes with the length
incrementing and decrementing commands (see Symbols under Help). The `draw length' comes
from the actual length being drawn (or not drawn) on the screen. The draw length is affected by
the difference between F and F(5) for example, or the difference between F and Z.
(see Symbols).

The map(s) determine how the L-system production string (the list of symbols resulting from the
recursive rewriting of the axiom) is interpreted as notes to be played. The production string itself
can contain directions as to which map should be used (the m(x) symbol; see Help/Symbols).

88
You can load a previously saved map with the 'Load Map' button. (See 'Map Files' below). If the
map file does not contain a mapnumber, the map will be loaded into the currently viewed map.

In the Map dialog, the fields are all part of the map (except the basic angle) and will be saved as
part of the map file (except the basic angle).

'Load INI file' gets parameters (map, scale, etc) from a previously saved INI file.

Use the three "spread" sliders to increase the interpreted range of the parameters. For example,
by making the "pitch spread" greater than 1.00, the mapped ptiches will be spread out further
from middle c. A pitch spread less than 1.00 causes the mapped pitches to be squeezed closer to
middle c. Basically, increasing the "spread" makes changes in pitch, duration, and volume more
dramatic.
A negative value for the spread `inverts' the map. For example, when the duration spread is
positive and duration is mapped to `draw length', longer lines make for longer note durations, but
if a negative value is chosen for the duration spread, longer lines will yield shorter notes.

The "Scale" button is for choosing a musical scale into which the generated notes are "forced".
How the notes are forced into a scale is determined with the scale function button. (see
Help/Scales)

Multiply durations slider is for stretching or compressing all musical event times. Multiplying by
a number greater than 1.0 stretches out the notes, while multiplying durations by a number less
than 1.0 compresses all the notes. Similar to changing tempo.

"Use Transpose stack" enables the "T(x) ... T" transpose stack.
"Factor stacks" enables the "D(x) ... D" and "V(x) ... V" duration and velocity multiplier stacks.
If you aren't using these extra stack constructs in a set of transformation rules, it is safest to turn
this off (unchecked).

"Load a Map" gets parameters (map, scale, etc) from a previously saved map file.

-------------------------------------
Edit Menu
------------------------------------
* Edit Rules File
Spawns an external editor that you have picked. If there is a currently loaded rule file, the name
of the rule file is passed to the editor as a command line parameter, so that you can edit that file.
When you quit the editor, you should be returned to LMUSe and the rule file is reloaded from
disk. If, while you are using the editor, you change files to edit one other than the one currently
loaded into LMUSe and you want to run that other file, you will have to load
the other file explicitly. LMUSe has no idea of what you are actually doing in the editor.

*Edit Memory Rules


Writes the rules from memory to a temporary file, then spawns an external editor to edit the
temporary file.

* Pick editor

89
LMUSe does not contain an editor of its own. To use the Edit function, you must specify an
external DOS editor, hopefully one that accepts filenames as a command line parameter. (And
don't specify a Windows editor, like `Write' or `WinWord', etc).

-------------------------------------
Mutate Menu
-------------------------------------
* Mutate CTRL-m
Makes a random change/mutation to the currently loaded rules. These mutations include things
like appending one replacement string to another, changing directions in a rule, etc. Hitting
`Mutate' once may have no effect on the production or it may have a devastating effect. It is, after
all, random. It is common, after mutating to try and make a production string only to have
LMUSe tell you it ran out of string space. Also, on occasion interpreting mutated rules leads to
some arithmetic exception which I have not succeeded in tracking down. "Mutate" just mutates;
it doesn't make a new production string. To go ahead and make a new production string and
interpret it, use "Mutate, Remake/Interpret".
There is only one set of rules in memory at any one time. To retrieve the original (before
mutations) rules, use "Production/Make and Interpret" to reload the original rule file.

* Mutate & Remake/Interpret


Does a mutation just like Mutate, but then makes a production string using the mutated rules,
then interprets the new string. If you want to make, say, 5 mutations at once, hit "Mutate" 4 times
(equivalently hit CTRL-m 4 times), then the last time use "Mutate & Remake/Interpret"

* Save Mutated Rules


Saves the mutated version of the transformation rules as a rule file.
The default extension for these `mutated rule files' is `.lm' to help keep track of which is the
original rule file and which is the mutated version.

-------------------------------------
Options Menu
-------------------------------------

* Sound
Turn off/on sound output.

* Draw
Turn off/on drawing the graphical L-system. The drawing mostly just shows how the MIDI
interpretation is progressing. Turning off drawing has a noticeable effect speeding up the
interpretation step.

* Autoplay
Turn off/on automatically playing the interpretation when it is done. (after "Load, Make, and
Interpret", "Interpret", "Remake", and "Remap")

*View
Choose the viewing plane for the drawing, and the size of the drawing. These have no effect on
the musical interpretation.

* Maximum Production String Size

90
Allows you to change the amount of memory allocated for the production strings. On occasion, a
production can run out of space. In this case, LMUSe aborts the production and tells you that it
ran out of production string space. The 'Maximum Production String Size' is how many
megabytes are allocated for the production string. The default is 2 Megabytes, but can be
anything from 1 to 99 Megabytes.

=================================================
Map Files
---------------
A 'map' file is a file that contains the map parameters (basically, the parameters you choose in the
map dialog).
The format of these files is a list of "parameter=value" statements. The hash ('#') is used as a
comment starter (everything on a line after a hash symbol is ignored).
An example file is LMUSe.INI:
# LMUSe v0.7a map file LMUSE.INI
# Fri Oct 16 01:12:27 1998
# Current rulefile: (none)
# Everything to the right of '#' on a line is ignored.
# Each map line is of the form 'parameter=value'.
# Including any of these parameter fields is optional.
# Letter cases in map files are ignored.

# tempo in beats per minute


tempo=120

# transposestack is a special stack for transposing the generated


# pitches. (L-system symbols T(x) ... T ).
# transposestack=1 enables this stack.
transposestack=0

# factorstacks are special stacks for holding duration and volume


# multipliers. (L-system symbols D(x) ... D , and V(x) ... V ).
# factorstacks=1 enables these stacks.
factorstacks=0

# randomseed is an (unsigned) integer


# To actually use this seed you need to
# uncheck 'Random Seed' in the dialog presented
# when doing a 'Make' or 'Remake'
randomseed=220

# mapnumber tells which map (0 thru 9) the following


# (up to the next mapnumber statement) are supposed to go
# into when the file is loaded. mapnumber statements are
# necessary to include several maps in a single map file
mapnumber=0

# pitch, duration, and volume of notes are each determined by


# any one of the following L-system variables:
#x - the x coordinate of the turtle's position

91
#y - the y coordinate of the turtle's position
#z - the z coordinate of the turtle's position
# forwardx - (or 'fx') the x component of the turtle's forward direction
# forwardy - (or 'fy') the y component of the turtle's forward direction
# forwardz - (or 'fz') the z component of the turtle's forward direction
# leftx - (or 'lx') the x component of the turtle's 'left' orientation
# lefty - (or 'ly') the y component of the turtle's 'left' orientation
# leftz - (or 'lz') the z component of the turtle's 'left' orientation
# upx - the x component of the turtle's 'up' orientation
# upy - the y component of the turtle's 'up' orientation
# upz - the z component of the turtle's 'up' orientation
# length - (or 'statelength') the state length of the L-system
# drawlength - the 'draw length' (affected by temporary length modifiers)
# thickness - the Lparser line thickness
pitch=x
duration=drawlength
volume=forwardx

# pspread, dspread, and vspread are magnifiers for the influence


# of the pitch, duration and volume parameters on the notes generated.
# Recommended to stay in interval -4.0 to 4.0
pspread=1.000000
dspread=1.000000
vspread=1.000000

# 'scale=scalename' tells LMUSe what scale to use.


# The predefined scale choices are 'Major', 'minor', 'Blue1', 'Penta1',
# 'diminished', 'Twelvetone', or 'whole'.
# Alternatively, you can give a list of number halfsteps from
# starting with the number '1'. For example, a major scale
# could be given by: scale=1,3,5,6,8,10,12
scale=Major

# scalefn is the algorithm used to get the pitches to conform to the


# desired musical scale. (see LMUSe.txt)
# Choices are: slideto, steps, constant, ignore
scalefn=slideto

# transpose amount
transpose=0

# duration multiplier
dmultiplier=1.000000

mapnumber=1
pitch=x
duration=drawlength
volume=forwardx
pspread=1.000000
dspread=1.000000

92
vspread=1.000000
scale=Major
scalefn=slideto
transpose=0
dmultiplier=1.000000

# maps 2 thru 8 could go here. (order is not important)

mapnumber=9
pitch=x
duration=drawlength
volume=forwardx
pspread=1.000000
dspread=1.000000
vspread=1.000000
scale=Major
scalefn=slideto
transpose=0
dmultiplier=1.000000

=================================================
Using Musical Scales

You can choose a musical scale in the Map dialog box under "Scale".
The different scales are described below.

`User' choice is for defining your own scale. If you pick `User', you are given a box where you
type in some scale steps and the scale you type in will be used. The scale you type in should start
with '1' (lowest note of the scale) and thereafter each following number denotes the next higher
note in the scale, in 'half tones'. Put spaces or commas between different scale notes. For
example:

1 3 5 6 8 10 12

would make a major scale.

Scale Function
Below the button for choosing a scale is the `scale function button.
LMUSe gets note pitches from some L-system state variable, as chosen in the `connect' box in
the Map dialog. These variables are actually numbers. If you want to use a scale, those numbers
need to end up being notes in the scale. LMUSe lets you choose between two (three) ways to do
this.

The `slide to' setting finds the lowest note greater than or equal to the generated number. It finds
the next note by going 'up' the scale until reaches the number or greater. It uses semi-tones to step
up.

`steps' uses the generated number to count directly up the scale. That is, it uses the scale itself to
step.

93
`constant' is just a way to get a constant pitch rather than a scale.

=================================================
Rules Files Compatibility

Lparser *.LS files should all work in LMUSe (meaning only that they will be accepted and
interpreted by LMUSe). Be aware, though, that files that work in LMUSe won't necessarily work
with Lparser. The LMUSe parser was designed to interpret the large number of LParser files
available but LParser won't accept some of the LMUSe rules (context sensitive or stochastic
rules). On the other hand, while LParser can make beautiful graphics, LMUSE can't. The
drawing that LMUSe does while interpreting is intended mainly as a 'progress indicator'. LMUSE
is for generating music and it is just great that some of the LParser files do make nice music
when fed to LMUSE.

I have tried to keep the file extensions of the examples consistent. A file with just an 'L'
extension is an LMUSe rules file which does not contain a 'thickness' (the third non-comment in
Lparser files is the starting thickness of lines as a percent of their length), or if it contains
stochastic rules (a la A(.5)=ABB) or context sensitive rules (e.g. A<F=BF). If I believe a file is
compatible with Lparser (for example, contains a thickness), it has the 'ls' extension. A file that
has been mutated by LMUSe (saved after 'mutating') is given the 'lm' extension. 'lm' files which
were originally 'ls' files before mutation should be compatible with Lparser, but I haven't checked
all of them.

Certain of the symbols are interpreted differently in the two programs. For example 't(x)' in
LMUSe transposes the following notes by x semitones. In LParser, t(x) is interpreted as a
'tropism' or gravity influence. This interpretation of 't(x)' is completely ignored by LMUSe. In
LMUSe, '{' and '}' are mostly for creating parallel in time (polyphonic) musical lines. Their use
in LParser is for making polygons like leaves, flower petals, etc). LMUSe does not know
'polygons' at all and so the generated graphics often look different from what you might expect
from seeing the same file interpreted by LParser.

Another popular program for doing L-systems is Fractint. Fractint L-system files (*.l) are 2-
dimensional. To use them with LMUSe requires some easy adaptations to the Fractint file. First,
a Fractint 'L' file can contain many sets of L-system rules. The different L-system rule sets have
to be isolated in their own file to be used in LMUSe. Fractint L-system rules, parameters and
axioms are also enclosed in curly brackets. You have to erase those. Plus you have to get rid of
the labels like 'Angle' and Axiom'. and insert a recursion level on the first line. Also, the
comment character in LMUSe is '#' while in the Fractint .L files it is ';'. And the angle in the
Fractint files is a division of 360 degrees rather than the number of degrees itself. One other
major difference in symbols is that @nnn in Fractint systems is the command to multiply line
segment lengths by nnn, while the corresponding LMUSe command is "(nnn). (a double
quotation mark followed by the multiplier).

Also note that Fractint's interpretation of .L files is case insensitive (e.g. F'='f'). LMUSe is quite
sensitive to case. (e.g. 'F' and 'f' are interpreted differently).
There are a number of other differences which I guess I am not prepared to detail.

For example (grabbed from fractint.l):

Koch1 { ; Adrian Mariano

94
; from The Fractal Geometry of Nature by
; Mandelbrot
Angle 6
Axiom F--F--F F=F+F--F+F }

would become (koch1.l):

# Adrian Mariano
# from The Fractal Geometry of Nature
# by Mandelbrot
3 # recursion level
60 # 60 degrees = 360 degrees/ 6
F--F--F # Axiom
F=F+F--F+F

Most of the more symmetric L-systems make static/boring music. One thing that `helps' such
files is changing the basic angle. Naturally this will `screw up' the picture, but often gives the
music more life.

95
TEXTURE
http://usuarios.advance.com.ar/lrojas/texture3.htm

TEXTURE generates musical information, by stochastic means, in two differents ways. The first
one to be interpreted by a MIDI device and the other to be interpreted by TRender, a sofware
synthetizer included with the package.

Several probability control parameters are involved in the musical data generation process. By
default events will have the same probability to appear, in other words values follow a uniform
probability distribution, but this process could be controlled by user-defined distributions.

Events may be masked by speciying its lower and higher limit, time-variable functions perform
this task.

The most interisting thing in TEXTURE 3.0, is the posibility of saving every setting, including
functions and distributions drawings, in banks. This bank could also be linked, sequencially or
simultaneously by a simle script. Think TEXTURE 3.0 as having one or more musician with a
single or more sets of instructions.

TEXTURE has most of all sequencer capabilities: record, play and edit MIDI events.

You may record material from an external MIDI device or you may gather generated musical
information as MIDI data by TEXTURE built-in sequencer.

96
CONTROL PANEL

notes: random sequence of notes will be produced between the minimun (0) and

maximun (127) setting.


velocity: random sequence of velocities will be produced between the minimun (0) and maximun
(127) setting.
voices: set the minimun (0) and maximun (32) number of notes sent out at a time.
density: determines the minimun (0) and maximun (120) number of notes sent out in a Time
Control period.
length: mode 1 (overlap button checked) : the note length will be set taking account the Time
Control period.
mode 2 (overlap button unchecked) : set the length of the note taking account the density time
choice.
time control: is used to calculate Density and Length time. Time is counted in ticks.
functions rate: functions will be scaned at this value rate. Time is counted in ticks.In the special
case that Functions Rate is 0 the function will be scaned at the the current density value rate.
chan: determines the MIDI events transmit channel (1-16).
The mode 2 length avoid a set of voices ( 0 to 32 voices produced at a time ) be overlaped by
another.
Be aware of the time control and functions rate settings. The SEQUENCER timing Resolution
and Tempo may dramatically affect TEXTURE performance. The relations between Time
Control(Texture) , Functions Rate (Texture) , Resolution (Sequencer) , Tempo (Sequencer) are

97
extremely important so as to prevent sending more events (MIDI data) and/or messages
(FUNCTIONS data) than the system can attend.The next settings are good:
Tempo: 60
Resolution: 120
Time Control: 120
Functions rate: 10

DISTRIBUTIONS

You can draw Distributions curves so as to perform biased choices of MIDI events.

Suppose that you wish to bias the velocity choice so that velocities between 0 an 64 are twice as
likely to occur as those between 65 and 127. Giving ( drawing on the black area ) velocities
between 0 and 64 a value v, draw values of v / 2 for every velocity greater than 64.
You must put to 0 those kind of events you want to reject.
To draw, click the left mouse button and drag over the black area.

BOARDS

Use the Main Board ( the bigest one ) to edit Pitch Wheel, Mod Wheel, Breath, Main Volume,
Pan, and Key Aftertouch events in a graphical format.

Edition will take effect only if you first paste the big board drawing to any small one (pressing
the big button below) and then you select it (pressing the small button below).Specific MIDI
events will be sent out, equal spreaded into the Time Control period.

128 MIDI events are generated every Time Control period.


You can select only one Pitch Wheel edition at a time.

To copy the contents of any small board to the big one just Double-click the left button of the
mouse . To draw, click the left mouse button and drag over the black area.

98
FUNCTIONS

Drawing int the Main Board ( the bigest one ) you edit function values. This function could be
pasted to a small board (using the big button below it). The function could be linked with its
Control Panel parameter (pressing the small button below).

You can scroll the Main Board function view pressing the horizontal spin buttons.
Vertical spin buttons clip values so as to prevent from editing a value greater than the clipping
setting.

Use folder button to load functions (use CSound, CMusic, or any other program to generate
them).
WARNING: functions files must be stored in disk as 16-bits shorts integers in "binary" mode
(don 't use "text" mode) .

Use disk button to save the Main Board function edition (red colour) to disk.
Use settings button to bring up Functions Settings dialog in which you can specify the functions
length and view.
Double-clicking the left mouse button over any of the small boards you copy its function
contents to the Main Board.

BANKS
this provides 256 banks for TEXTURE data.
Receive: stores TEXTURE settings in memory.
Send: changes current TEXTURE settings by the focused bank ones.
Save bank: saves focused bank with TEXTURE file format (*.trs) to disk.
Load bank: loads TEXTURE format files and store it in a bank.
Delete: deletes the focused bank from memory.
Name: each bank has a name. You may use it for any purpose you wish.

99
UTILITIES

1-Midi Illustrator

Introducing MidiIllustrator…

Notate, print, practice and play free Midi sheet music. Rallentando Software's MidiIllustrator
brings your favorite songs and musical works to life, generating high quality, dynamic scores,
fake books and lead sheets from 1000s of Midi & Karaoke files freely available on the World
Wide Web.

You can boost your musical abilities with MidiIllustrator's user friendly learning tools. Learn
new music step by step, sight reading from the score OR without reading a note using lead sheets
with chord notation, guitar frets & the on-screen piano keyboard if you prefer.

MidiIllustrator takes the hard work out of generating easy to read scores from standard Midi
song files by allowing you to choose from a variety of score presentation options. These options
affect only the notation style of the score without in any way modifying the original Midi
performance. This means you can hear the performance of the piece as the artist intended, and at
the same time control the complexity of the notation in the score. Click here to learn more about
how MidiIllustrator converts Midi to Notation.

Choose from the following topics to help you get started using MidiIllustrator:

• Opening and Viewing Midi Files


• Printing the Score

100
• Configuring Sound and Playing Back Scores
• What can you do with MidiIllustrator?
• Finding Music Files on the Internet
• About the Trial Version of MidiIllustrator

What can you do with MidiIllustrator?

MidiIllustrator contains sophisticated Midi to Notation conversion technology which can quickly
and accurately generate attractive scores from music of all styles stored in Standard Midi Format
(SMF).

• Learn more about how MidiIllustrator converts Midi to Notation.

MidiIllustrator can create scores in your favourite format, from one or all of your Midi files, in a
single step. Once MidiIllustrator has created your scores you can:

• View the score


• Print all or part of the score
• Playback the score
• Present difficult notation in simplified form
• Arrange the score for piano automatically
• Reformat the score as a Fake Book or Song Lead Sheet
• Generate Chord Names and Guitar Frets automatically
• Practice particular passages with special practice tools
• Learn the music 'step by step' without reading any notation - watching the on screen piano keys
• Rapidly improve your sight reading with note names displayed next to every note on the
score
• Practice new Rhythms with the audio/visual metronome
• Sing along with accompaniment - the lyrics light up in time with the music
• Edit the notation
• Edit the Midi content
• Make the most of your Midi device capabilities
• Connect a Midi Instrument and interact with the music
• Format many scores at once using the Task Wizard
• Save and Manage your scores

How MidiIllustrator converts Midi to Notation

The principle feature of MidiIllustrator is its ability to generate attractive, accurate and flexible
scores from the raw musical information contained in Midi and Karaoke files. Although
tremendously popular with musicians for their ability to store rich detail about the 'sounds' in a
given piece of music, these files comprise mainly note pitches and durations, and typically
contain very little information about how the music should be notated. MidiIllustrator is
therefore tasked with filling all the gaps to complete the visual picture; for example, beaming and
tieing notes, creating clefs and key signatures, and placing accidentals next to notes on the score
as appropriate.

101
What you See vs What you Hear
In scores created with MidiIllustrator, the notation you see on the screen or printed page is
completely independent of the music you hear during playback. MidiIllustrator keeps these two
aspects of the music completely separate so that you may at all times hear the music performed
as it’s author intended, even when the score has been arranged to provide maximum clarity and
readability. Music performed with the most 'expression' or 'feeling' is often not the most readable
music (see Accuracy vs Readability below). For this reason, MidiIllustrator keeps the original
performance in a Midi file intact when notating. The underlying Midi note data is hardly ever
changed*. As a result, when the look of the notation is 'tidied up' for the sake of presentation, the
feel of the music is never lost.

*The exception to this rule is deletions. When you delete a note, measure or
track, the underlying Midi notes in the deleted range are also permanently
removed from the score.

Accuracy vs Readability
When notating, MidiIllustrator conducts an in-depth analysis of the musical data, at all times
balancing the need to:

• display notation which is both readable and playable; and at the same time
• produce the most 'honest' and accurate representation of the music as possible.

MidiIllustrator can, for instance, readily distinguish groups of short, barely asynchronous notes
played in quick succession which should correctly be notated 'arpeggiated', from groups of
concurrent notes played with approximate synchronicity, which should be correctly notated as a
chord. On another occasion, MidiIllustrator might decide to form a chord from a cluster of
notes which, on face value, could also be notated as an arpeggio or trill. In this last case, a
careful study of the music 'style', its rhythms, note pitches and changing hand positions will
contribute to the decision making process. The most feasible, readable form of the music should
prevail, offset against the need to display truly complex passages with accuracy. Of course,
100% accuracy in this endeavour is impossible, but in cases where a mistake is made,
corrections can be easily made to the final notation.

MidiIllustrator can generate attractive scores from even poorly 'sequenced' Midi files
Generally, the quality of a Midi file's 'sequencing' can affect the quality of the resulting score.
'Sequencing' here refers to the way in which each note's attack time and duration is recorded in
the Midi file. Music which is sequenced with 'feeling' and 'expression' to sound good when
played back often does not make for very readable notation. Midi files which have, on the other
hand, been 'quantized', or sequenced with greater accuracy, generally produce scores which are
easier to read. Sequencing notwithstanding, MidiIllustrator will generally make sensible
decisions about how to notate a complex or 'live performance' Midi recording. With
MidiIllustrator's transcription options, you may also control or limit the complexity of such
scores in order to make the notation more accessible.

Advanced notation features


The MidiIllustrator Midi to Notation engine can identify and represent even the most complex
musical ideas, such as tuplet note groupings and multiple voicings in a single staff. Furthermore,
you can instruct MidiIllustrator to notate your scores in a particular way, for example presenting
difficult notation in simplified form.

102
View the Score

MidiIllustrator formats the score to make the best use of the available screen space, putting as
much music onto the screen as possible whilst keeping the notation clear and easy to read. All
the objects in the score (notes, rests, lyrics etc) are reorganised dynamically as you increase or
decrease the window size. Choose the notation size to suit your needs. Show individual parts or
passages on the screen at any time. Use your own choice of colour and fonts to make the scores
easier to read.

Print All or Part of the Score

Print individual parts or passages within a score. Choose the notation/staff size on the page. Edit
margins, page numbers and score title.

Playback the Score

See the notes light up as they are played back. The pages turn automatically. Dynamically
change instruments, volume and tempo during playback. Highlight lyrics during playback for
sing-along performances. Advance highlighting and page turning options.

Present Difficult Notation in Simplified Form

MidiIllustrator can automatically make all the decisions necessary to convert your Midi and
Karaoke files into notation. Alternatively, you can use the Score Transcription Wizard to have
MidiIllustrator arrange the file's musical content in a particular way, by selecting from a list of
custom presentation modes (eg 'Easier to Read'). Depending on the style of the music, this can
have a dramatic effect on readability.
At all times, MidiIllustrator maintains the original audio performance of the score. However you
choose to format or present the notation, MidiIllustrator will remember how the underlying Midi
music was 'recorded' or 'sequenced', but notates it as necessary in a simpler, easier to read
manner.

Arrange the Score for Piano Automatically

MidiIllustrator can instantly make piano solo arrangements out of your scores. When parts are
merged on a single stave, or spread over more than two staves, MidiIllustrator can intelligently
merge and split the hands as necessary using an analysis of chord structures and hand positions,
as well as note pitches.

Reformat the Score as a Fake Book or Song Lead Sheet

MidiIllustrator can optimise the score layout for a particular purpose such as creating Fake Books
or Lead Sheets. You can generate scores which show a combination of the following core
features: melody, lyric, chord names and guitar frets.

Generate Chord Names and Guitar Frets Automatically

Midi files do not generally contain any information about chords or chord progressions.
However, MidiIllustrator can intelligently analyse the music to determine which chords are being
played in each beat or measure within the score. With this information MidiIllustrator can then
display a combination of chord names and guitar fret graphics above the top stave. You can edit

103
the chord names and fret fingerings using a library of over 900 chord/guitar frets included with
MidiIllustrator.

Practice Particular Passages with Special Practice Tools

Practice Sessions allow you to focus on part (or all) of a score whether you are studying,
rehearsing or simply listening to the music. You manage Practice Sessions using the Practice
Session Wizard. MidiIllustrator can accompany you during the session. You can choose to hear
a section repeated in a continuous loop, or a specific number of times if you are rehearsing.

Learn the Music 'Step by Step' without reading any Notation - watching the On Screen Piano Keys

Learn entire pieces without reading any notation! The flexible On Screen Piano Keyboard will
highlight notes and chords from the current score one at a time, or 'step by step'. Read 'ahead'
using advance keyboard highlighting options. The keyboard can be used as an aid to reading and
playing the score (especially solo piano scores) allowing you to quickly and easily visualise
chord shapes and fingering.

Rapidly improve your Sight Reading with Note Names displayed next to every Note on the Score

Immediately identify each note by its name, and familiarise yourself with the staff line names.
Remote leger line notes are immediately identifiable.

Practice new Rhythms with the Audio/Visual Metronome

MidiIllustrator's flexible metronome can be fully customised to suit your needs. Resize, move
and specify the style of the visual flashing 'beat' indicator. Configure your own metronome
sounds to mark the accent (up beat) and normal beat (down beat) of each measure. Use 'intro'
measures to prepare when rehearsing passages. MidiIllustrator optionally places beat marks in
the score as a further rhythmic cue.

Sing along with Accompaniment - the Lyrics Light up in Time with the Music

Lyric highlighting shows you which words to sing as MidiIllustrator plays the backing to your
vocal. 'Advance' lyric highlighting helps you read ahead.

Edit the Notation

MidiIllustrator is not ‘sequencing’ or ‘composing’ software but does allows you to move and
change notes, clefs, key signatures, lyrics, chord names, guitar frets and other notation objects in
the score. Transpose all or parts of pieces to a favourite key, or simpler key.

Edit the Midi Content

Manage advanced Midi options for each track. Edit Midi Device, Channel, Pan, Volume, Patch,
and Bank Select Method. Transpose individual tracks to concert pitch or the track instrument's
native pitch. Reorder, merge, split, add and delete tracks

Make the most of your Midi Device Capabilities

MidiIllustrator can fully exploit the Midi features of your PC, and any external Midi devices you
may have.

104
MidiIllustrator shares Midi ports and devices with other Windows(tm) applications so you can
truly multitask your music projects.

MidiIllustrator supports the use of multiple Midi devices for playback, meaning that you can use
your PC's General Midi functionality to provide broad instrument ranges for your scores, but
redirect a particular instrument (such as a piano track) to an external Midi device (such as a piano
module).

Furthermore, you may connect a Midi Instrument and interact with the music.

Connect a Midi Instrument and Interact with the Music

Interact with the music, and have MidiIllustrator accompany you as you perform using a Midi
Piano, Guitar or other instrument. MidiIllustrator can redirect Midi Input to any instrument of
any Midi device using the Midi Echo feature. Instantly redirect Midi Input to a particular
instrument/device on a Midi track (this is useful for quickly performing a certain part in a certain
piece).

In 'Step by Step' Mode, MidiIllustrator will listen for input from your Midi instrument and 'step'
the cursor music as you play the notes on the screen, turning pages as you go.

Accompany music in a different key. MidiIllustrator optionally transposes Midi input ‘on the fly’
as it is redirected to the device of your choice. Play in one key, whilst accompanying a Midi file
playback sequenced in another key.

Format many Scores at once using the Task Wizard

MidiIllustrator 'Tasks' allow you to make a number of changes to one or more of your songs in
one quick step. For instance, you can use a Task to open a Midi file and apply a series of special
commands to the resulting score, such as converting the piece into a simplified two hand piano
piece and highlighting all the accidentals in the score in a bright colour. Alternatively you may
wish to convert a large number of your Karaoke files into Fake Books with chord names and
guitar frets. Tasks are managed using the Task Wizard.

Save and Manage your Scores

As well as offering the standard Windows functionality for managing your files, MidiIllustrator
includes some further options for navigating to your favourite file locations. As Midi file
collections grow it can become harder to track down particular files quickly. MidiIllustrator
allows you to store a list of favourite music folders, and jump quickly to those folders with the
click of a button.

105
Track Manager Dialogue

The Track Manager displays information about all the tracks in the score and allows you to:

1. change the underlying Midi properties of each track in the score,


2. alter the track display and playback features,
3. edit the track namings, and
4. reorder, add and remove tracks.

The Track Manager dialogue is made up of three tabs (Midi Configuration, Display and Playback
and Track Namings) and a Track Display Window. The window lists each of the tracks
contained within the Midi file and displays their details.

Apply/Apply The Apply button applies all of the changes made to the track(s) without the
Now need to close the dialogue box. E.g. If you hide a selected track and rearrange
the order of the remaining tracks these changes will not be reflected on the score
until you press the Apply button.

If you would like your changes to be made immediately use The Apply Now
button. When this button is used any changes made to the tracks will be
reflected on the score straightaway, without the need to click the Apply button.

The buttons on the lefthand side of the window can be used to edit selected tracks, either
individually or in groups (simply hold down the shift key as you select the tracks for your group).

106
Opens the Track Options menu and enables you to do the following:

• Mute – all tracks, none of the tracks and selected tracks


• Visibility – show all tracks, hide all tracks and hide selected tracks
• Select – all tracks and none of the tracks
• Columns – autosize column widths

Allows you to move selected tracks to a higher position on the


score.

Allows you to move selected tracks to a lower position on the score.

Adds a new track.

Deletes the selected track.

In addition, within the Track Display Window, the following buttons may be used to hide or to
mute selected tracks.

Using the check box columns marked overhead with a cross (x)
and a speaker, selected tracks can be hidden/shown and
muted/unmuted. The first column is the hide/show function and
the second the mute function.

Split Tracks Dialogue

The Split Tracks dialogue allows you to divide a single track into two separate tracks. One of the
reasons you may wish to split a track is because the left and right hands on piano scores are often
recorded on a single Midi track and need to be split before being played.

Tracks can be split automatically (recommended) or manually using the Range method. Using
the automatic method, MidiIllustrator conducts an extensive analysis of the score and splits the
track based on chord structures and hand positions, as well as the pitch. The Range method
allows you to select only the pitch criteria upon which the track will be split, and is generally not
recommended.

Automatic If you want MidiIllustrator to analyse the score and to determine the best split for

107
the track, simply select the track from the Track Display Window, then select the
‘Automatic’ option and press ‘OK’.

The main benefit of this method is that MidiIllustrator analyses the music, and
when deciding how to split a given track it takes account of chord shapes and
patterns, as well as determining the hand positions required to play these structures
most easily.

Range To split a track using the Range method, simply select the track from the Track
Display Window and choose the Range option. You then have a choice of which
note to use as the reference point for the split and you need to decide whether the
split should be based on all notes above or below that note. E.g. You may decide
that all notes above C3 should be placed on a separate track.

The main benefit of this method is that you can determine the exact basis for the
split yourself. No account is given to the musical structure of the score when using
this method.

Merge Tracks Dialogue

The Merge Tracks dialogue allows you to merge two or more tracks into a single track.

The dialogue consists of a Track Display Window, which displays the tracks available for
merging, and a drop down box from which you can select the track into which the other track(s)
are to be merged.

For example, if you wanted to merge Track 1 into Track 2, you would select Track 1 from the
Track Display Window and Track 2 from the drop down box at the bottom of the dialogue and
press ‘Merge’. If you wanted to merge more than one track into Track 2, say Track 1 and Track
3, you would simply hold down the ‘Ctrl’ key as you select Tracks 1 and 3.

108
It is important to remember when deciding which tracks should be merged, that if the
instruments on the tracks are different, only the track into which the other track(s) are to
be merged will retain it’s Midi configuration (e.g. instrument, device etc).

Key Dialogue

The Key dialogue allows you to change the key signature:

• in all the measures on the score;


• from the current measure to the next key change; and
• between specific measures.

It is important to remember that only the notation is changed and that the underlying note sounds
are not. If you want to change note pitches you should use the Transpose dialogue.

Guess Key Allows MidiIllustrator to analyse the piece and then determine the most
appropriate key signature for the score, or you can choose the key
yourself. There are two ways of choosing the key, either by using the
left and right arrows on the right of the Key Signature Graphical Display
and clicking through until you find your desired key, or by selecting a
major or minor key from the drop down boxes located below the Key
Signature Graphical Display.

Apply new key to all Enables you to change the key on all tracks in the piece rather than just
tracks the selected track.

Transposing notes

There are four ways to transpose notes:

1. by using the left and right arrows on the right of the Key Signature Graphical Display and by
clicking through until you find your desired key;
2. by selecting a major or minor key from the drop down boxes located below the Key
Signature Graphical Display;

109
3. by shifting notes by a selected number of half steps either up or down towards the bottom of
the dialogue box; or
4. by checking the ‘Transpose entire piece to key closest to C Major (minimize accidentals)’
box.

Apply new key to ALL tracks Enables you to change the key on all tracks in the
piece rather than just the selected track.

Do not transpose Drum notes: Midi Channel 10 is generally used to play a


particular group of drum instruments. These drums
use Midi information in a different way to other
instruments. Transposing these drums may have
undesirable effects, so you can opt to leave drum
notes as they are when transposing the rest of the
score. If a given track is using Channel 10 then
MidiIllustrator will assume it contains drum notes.

For more information see the Midi Channels and


Drum Instruments section.

Select Current Key Analyses the piece to determine the key it is


currently in.

Transpose entire piece to key closest to Transposes the piece to the key closest to C Major,
C Major (minimize accidentals) thereby simplifying the notation as much as
possible and making the piece as easy to play as
possible.

Task Wizard

About Tasks

Tasks allow you to make a number of changes to your songs in one quick step.

For instance, you can use a Task to open a Midi file and apply a series of special commands to
the resulting score, such as converting the piece into a simplified two hand piano piece and
highlighting all the accidentals in the score in a bright colour.

The Task will then automatically save the file with a new name of your choice.

You can apply these instructions to any number of files with a single Task, or you can modify
only the current score, or just the scores you have open at the time.

Note: It is up to you to save any Task changes to files you already have open.

Using the Task Wizard

110
Follow the instructions on each page of the Wizard, clicking the ‘Next’ button to move to the
next step. You can hit the Back button at any time to make changes to the Task instructions.

Available Tasks

TASK NAME DESCRIPTION

Convert This Task performs exactly the same function as the Song Lead Sheet
Karaoke/Midi+Lyric dialogue. Unlike the Song Lead Sheet dialogue however, this Task will
Scores to Song sheets not prompt you with any questions about how to arrange the song
sheet (i.e. which track holds the melody and which track holds the
harmony).

The Task:
• analyses the score to find the principal Lyric track and the principal
Melody track,
• merges the Lyric and Melody tracks into one as necessary, and
• hides (does not delete) all other tracks.

Convert Scores to Two Whatever the current score layout may be, MidiIllustrator will
Hand Piano try to arrange the score into the most suitable form for solo
piano.

The Task:
• merges all of the tracks in the score into a single track,
• splits the track ‘automatically’ into left and right hand tracks,
• sets the Midi device on each track to the default Midi playback
device, and
• sets the Midi Instrument Patch on each track to General Midi
Instrument ‘Acoustic Grand Piano’ (#1).

Convert to MidiIllustrator This Task provides a quick and easy way to convert any
Format (.mil) using the number of your Midi or Karaoke files into MidiIllustrator format.
*current* Score Options
This can be useful if you like to present or arrange your scores
in a particular way. Formatting preferences can range from
the choice of colour in the score to more sophisticated
arrangement preferences such as Transcription Options.

The default Score Options are applied to each file as it is opened.

General Task Behaviour

All Tasks apply the default Score Options to a score as the file is opened. If you wish the Task to
apply a particular configuration to the new score, for example, a particular font size or colour to
the score title then you must ensure this configuration is set as the default (Score Options, Set As
Default). See Score Options for more information on setting defaults.

111
Applying Tasks to the Current Score, all Open Scores and Files stored on your Hard Disk

WHAT IS CHANGED HOW IT IS CHANGED

Current Score The chosen Task is only applied to the visible score. The score is not
closed or saved automatically when the Task completes.

Reversing the Task


Since you are applying the Task to a score which is already open, then
you can subsequently reverse any changes made by the Task by simply
selecting the Undo command in the Edit Menu.

All Open Scores The chosen Task is applied to all the scores that you currently have open.
The score is not closed or saved automatically when the Task completes.

Reversing the Task


Since you are applying the Task to scores which are already open, then
you can subsequently reverse any changes made by the Task by simply
selecting the Undo command in the Edit Menu.

Files stored on your Hard MidiIllustrator opens each file in turn, converts it to a score and applies
Disk the Task. The score is given a new name using the chosen suffix. The
score is saved and closed.

Suffixes
Files will be given the suffix you specify e.g. ‘_2HP’ and the extension of
‘.mil’. For instance file ‘bach.mid’ might be saved as ‘bach_2HP.mil’. It
is recommended that you use a suffix for your new files to protect
existing files and make your new files easier to identify.

Warning: New files will be created


This Task command will create new files, but will overwite any existing
files with the same names in the folder you choose.

Open files
If you are applying a Task to a list of files stored on your hard disk, and
one or more of those files is already open in MidiIllustrator, Task
behaviour is slightly different. The Task will be applied to the open file
as if it had just been opened. A copy of the modified score will be saved
to disk with a new name based on the chosen suffix. The original, open
file will not be renamed, saved or closed.

Reversing the Task


Since a new score is created, saved and closed by the Task, this command
cannot be undone.

112
Score Transcription Wizard

MidiIllustrator can automatically make all the decisions necessary to convert your Midi and
Karaoke files into notation.

Alternatively, you can use the Score Transcription Wizard (‘Wizard’) to have MidiIllustrator
arrange the file's musical content in a particular way, by selecting from a list of custom
presentation modes. Depending on the style of the music, this can have a dramatic effect on
readability.

The options offered in the Wizard are exactly the same as the Transcription Options tab of Score
Options. Please see the help for Transcription Options to learn more about the custom
presentation modes. The Wizard essentially allows you to apply a particular set of transcription
options to each Midi or Karaoke file as you open it for the first time.

By default, the Wizard starts each time you open a Midi or Karaoke file. You can skip the
Wizard at any time and have MidiIllustrator apply the default transcription options to the file.
You can also prevent the Wizard from starting automatically when you open a file. See below
for more information on the Wizard settings.

Wizard Check Boxes and Buttons:

Skip this If this box is checked, you will be taken directly to the Score Transcription
Introduction in Wizard dialogue and you won’t be shown the introductory page of the
Future Wizard when you open files.

Back This button takes you back to the last page you were on. If you are on the
first page of the Score Transcription Wizard the button will be ‘greyed’ out.

Next Takes you to the next page of the Score Transcription Wizard.

Skip Wizard Bypasses the Wizard screens, and MidiIllustrator creates the score using
your default Score Options.

Help Takes you to the Score Transcription Wizard Help page.

Hiding this You can prevent the Wizard from starting each time you open a Midi or
Wizard Karaoke file, and instead have MidiIllustrator create new scores
automatically using your default Score Options.

You can switch the Wizard on or off using the ‘Open Score Transcription
Wizard for Midi/Karaoke files’ setting in Programme Options, General
Preferences.

If you wish to turn the Wizard off immediately, simply check the ‘Do not
show this wizard in future, just use the default settings instead’ check box.

113
Viewing a Range of Measures

The Measure Range dialogue allows you to select a specific range of measures for printing or
display on the screen.

The current measure total is shown. When you choose a new range, measures outside that range
are temporarily hidden (not deleted).

You may, for example, want to focus on a particular part of the selected piece, say from the
beginning of measure 3 to the end of measure 11, and by entering the starting point of your
selected range in the ‘First’ box and the ending point in the ‘Last’ box, which in this case would
be 3 and 11 respectively, this range of measures will be displayed on the screen. If you only
wish to display one measure, say measure 4, you would simply enter ‘4’ in both in the ‘First’ and
‘Last’ boxes, and only that measure will be displayed.

If you subsequently decide to focus on a different section of the piece you would simply change
the range of measures that you had entered into the ‘First’ and ‘Last’ boxes. To revert to the
original score, simply click on the ‘Show All’ button which will show all of the measures in the
score.

Transcription Options

When converting Midi into notation MidiIllustrator can automatically make all the decisions
necessary to present the musical content in the most honest and readable way.

Depending on how you want to use a particular kind of score you may wish to present the
notation in a particular way. In order to facilitate this, MidiIllustrator provides a list of custom
presentation modes. Depending on the style of the music this can have a dramatic effect on
readability and playability.

Note: Changing the presentation style of the score does not impact the playback of the score in
any way. When you play the score you will always hear it as it was originally sequenced. Note
timings and durations may appear differently in the score but the actual time and duration of the
note sounds never changes.

Presentation Modes

Using the slide control you can choose from the following settings:

• Much Easier to Read


• Easier to Read
• Normal
• Strict
• User Defined

114
A description of each mode is given in the table below. Each presentation mode consists of a
particular configuration of the Conversion Rules.

PRESENTATION MODE DESCRIPTION

Normal The default setting. Best compromise between accuracy and


readability.

Much Easier to Read Significant simplification. Useful for presenting more complex
pieces or 'live performance recordings' in a more readable
format.

Easier to Read Some simplification of the notation to improve readability.

Strict Adhere closely to standard notation rules. A very accurate


representation of the midi content.

User Defined You choose your own combination of presentation rules.

Conversion Rules

As the Transcription settings are selected using the slide control the Conversion Rules that apply
to that particular setting will be checked automatically by MidiIllustrator.

However, if you choose the User Defined option, you can decide which (if any) of the conversion
rules should be applied to your score.

CONVERSION RULES DESCRIPTION

Minimise Rests MidiIllustrator can generally improve the readability of a score


by minimising the number of small rests on the staff. Where
possible, notes of moderate length which are followed by
small rests (such as 64th rests) will be extended to fill the gap,
thereby reducing clutter on the page. This will apply only to
notes which can be extended to a ‘clean’ duration without the
need to create tie notes. Notes will not be extended outside
their original beat or measure.

Prevent Overlapping Notes Preventing notes of the same voice from overlapping can
(within each Voice) improve the readability of the score in instances where more
than one musical idea exists in a single staff. For example,
notes or groups of notes in a staff may be held as they are
arpeggiated. This can result in rather blurred notation when
transcribed accurately.

As an alternative MidiIllustrator can insist that notes in a given


voice do not overlap, rendering a clearer score in certain cases.

115
Note: With or without this option enabled, MidiIllustrator will
only ever allow notes in the score to overlap when not doing
so would be a misrepresentation of the music.

Contain Notes in Measure With this option MidiIllustrator can ensure that notes which
begin in a given measure conclude in that same measure.
Preventing notes from tieing into subsequent measures can
improve the readability of certain styles of music.

Voicing is Low Priority By default, MidiIllustrator will use different voices when
notating, in order to clearly illustrate multiple musical ideas on
a single staff. Where more than one musical idea is notated on
a single staff, it is common for the notes in each idea to be
rhythmically independent and to overlap one another as a
result. As a result these notes may have difficult fingerings.

Using this command you can discourage MidiIllustrator from


using multiple voices in the score. This will result in less
accurate notation but will often have the benefit of presenting
music which is easier to read and play.

Force Single Voice This option has exactly the same effect as the ‘Voicing is Low
Priority’ option. In this case, however, the entire score will be
notated using a single voice.

Force Chords MidiIllustrator automatically tries to identify chords i.e.


groups of notes which begin and end together. In some Midi
files, groups of notes which are intended to be represented as
chords may not have been sequenced with very similar
durations. This is especially common in Midi recordings of
live performances. This can result in complex looking note
groups.

You can improve the readability of such note groups in the


score by encouraging MidiIllustrator to make accurate chords
out of notes which begin together but which may vary in
duration.

Prevent Tie Notes Altogether Enabling this option prevents the use of any tie notes in the
score. This can make the score less ‘honest’ but has the
benefit of rendering certain styles of music substantially easier
to read. If you are especially interested in the note pitches of a
piece rather than the note durations this can make live or
unquantised Midi recordings much more accessible.

116
Score Layout

The Score Layout tab allows you to configure the score in the following ways:

Compress Empty In order to make the best use of space on the screen or printed page,
Measures you can choose to Compress Empty Measures.

MidiIllustrator will compress contiguous empty measures as long as


the measures are:

• completely empty i.e. none of the visible staves in the measure


contain any notes; and
• identical i.e. they share the same time signature, key signature,
clef and bar ending.

This option is turned on by default.

Highlight Notes/Lyrics This option can make it easier for you to follow a piece during
During Playback playback as it highlights the notes and lyrics on the score as the music
is played.

As an aid to sight-singing, you can optionally advance the lyric


highlighting by the amount of your choice. See the Playback section
of Score Options.

The Highlight Notes/Lyrics.. option is turned on by default.

Show Bookmarks If you have inserted Bookmarks this check box allows you to
show/hide them as desired.

This option is turned on by default.

Show Chord Names If you have inserted Chord Names this check box allows you to
show/hide them as desired.

Show Guitar Frets If you have inserted Guitar Frets this check box allows you to
show/hide them as desired.

Use Distinctive Voice Applies distinctive colours to the different Voices on the score.
Colours Colours can be selected using the Colour section of Score Options.

Distinguish Muted If a track has been muted (see the Sound section of Display and Play
Notes Back) this option allows you to show the muted notes on the score in
a different colour to the standard notes. The colour of the muted
notes can be changed using the Colour tab.

The Distinguish Muted Notes option is turned on by default.

117
Assign More Space To You can choose to have MidiIllustrator allocate more space on a score
Longer Notes to the longer notes than to the shorter notes as an aid to sight reading.

Show Note Names As an aid to the quick recognition of notes, the Show Note Names
option allows you to show/hide the name of each note on the score.
When this option has been selected the name will be displayed on the
left of the note.

You may find that it helps to zoom in on the piece in order to see the
note names clearly. You may also change the colour of the ‘note
names’ font in the Fonts tab.

Hide Empty Tracks You have the option of setting MidiIllustrator to automatically Hide
When Notating Empty Tracks on the score when you import or edit the notation of a
file.

This allows MidiIllustrator to make the best use of space on the


screen and printed page, showing you only those tracks that are
populated.

This is on by default.

Hide Empty Staves On You have the option of setting MidiIllustrator to automatically Hide
All Tracks When Empty Staves on All Tracks within the score when you import or edit
Notating the notation of a file.

This allows MidiIllustrator to make the best use of space on the


screen and printed page, showing you only the populated staves of
each track in the file. This is on by default.

See also Hide Empty Staves in the Show/Hide section.

Measure Numbers You may customise if, and how, Measure Numbers (#) are displayed
on the score.

The default setting is a Curved Box (which encloses the Measure


Number) on Every Measure starting at Bar 1, but this can be changed
using the three drop down boxes.

The measure numbers can be set as follows:

• None - no measures numbers will be displayed


• Normal - measure numbers will not be enclosed
• Boxed - measure numbers will be surrounded by a box
• Curved Box - measure numbers will be surrounded by a curved
box

If None has been selected above, the 2 remaining drop down boxes

118
will be greyed out, but they can be edited if Normal, Boxed or Curved
Box has been selected.

The options available are as follows:

• Every Measure
• Every System
• Every Page
• Every 5th Bar
• Every 10th Bar

The third drop down box allows you to set a start point as follows:

• From Bar 1
• From Bar 2 etc (depending on the number of bars in the piece)

Beat Marks As an aid to understanding the beat pattern of a score, MidiIllustrator


can place small marks ‘on the beat’ above the top staff. If, for
example, the time signature is 4:4, then four beat marks will span the
top of each measure. Displaying beat marks works well when the
cursor is set to follow ‘the nearest beat during playback’.

You may customise the beat mark colour to best highlight the location
of the beats in the music.

The Beat Marks can be customised using the three drop down boxes.

The first drop down box provides the following options:

• Hidden - The Beat Marks will not appear on the score.


• Normal - The Beat Marks will be permanently displayed on the
score (except during Playback if the ‘Countdown’ option has been
selected. See the ‘Note’ below).
• Playback Only - The Beat Marks will only appear on the score
during Playback.

If Hidden has been selected above, the two remaining drop down
boxes will be greyed out, but they can be selected if Normal or
Playback Only has been selected.

The second drop down box allows you to display the Beat Marks on
the:

• Top Stave
• All Staves

The third drop down box offers two options:

119
• Static – whereby the Beat Marks stay in place as the music is
played.
• Countdown – whereby the Beat Marks disappear as they are
passed in the score.

The default setting is ‘Playback Only’ on the ‘Top Stave’ with


‘Countdown’.

Note: You may wish to view the Beat Marks all the time, in which
case you would select ‘Normal’ from the first drop down box, and
they will be displayed on the score. However, if you then selected
‘Countdown’ from the third drop down box, the Beat Marks would
disappear when they were passed in the score during Playback.
Therefore, if you truly want the Beat Marks to be on display at all
times, even during Playback, make sure you have selected ‘Static’ in
the third drop down box as well as ‘Normal’ in the first.

Bookmarks Allows you to customise any Bookmarks which have been placed on
the score.

The default setting is a Curved Box (which encloses the Bookmark),


but this can be changed using the Bookmark drop down box.

The options available are:

• Normal – no surround
• Boxed
• Curve Boxed

Apply The Apply button applies all the changes made to the score without
the need to close the dialogue box.

Track Tools and Namings

The Track Tools and Namings tab allows you to make changes to the Track Name and the
Instrument Name on the current score, and to show/hide Track Tools.

Show Tools Allows you to show/hide the Track Tools buttons on the left-hand side of
the first system on the page. This option is only available in Window
View.

Ensure Tools are This option is used in conjunction with the following two commands:
Always Visible (i.e.
even when hiding • Track Tools
empty staves) • Hide Empty Staves

You can choose to show or hide the ‘Track Tools’ on the left of the first

120
system on each page of the score. A set of Track Tools is shown for
each track or staff in the score. If, however, you have chosen to hide
staves which are empty (see ‘Hide Empty Staves’ below) then a given
staff may be hidden in which case the Track Tools cannot be shown for
that particular staff.

In order to ensure that you can always access the Track Tools for all
staves when you have opted to ‘Hide Empty Staves’ you should enable
the item ‘Ensure Track Tools are Always Visible’. This will ensure that
all the staves in the first system of each page will be visible whether
empty or not and their corresponding Track Tools will also be shown.

Show Namings You can choose to display or to hide the names of the tracks and the
associated instruments on the screen and printed page using the Show
Namings check box.

The box is checked by default, as many users like to see this detail on the
score, but there are times when you may wish to hide the names, e.g. if
you wanted to fit more of the score onto the screen/printed page.

This option overrides all of the other Name settings in the Track
Dialogue tab.

The Window View and the ‘Printer and Page View’ dialogues allow you to customise the
Window View and the Printer/Page Views respectively. Each dialogue allows changes to be
made to a) the First System on the Page and b) the Remaining Systems, as detailed below.

Track & Instrument Allows you to show/hide both the track and instrument names e.g. Track 1
Names Acoustic Grand Piano.

Track Name Allows you to show/hide the name of the track e.g. Track 1.

Instrument Name Allows you to show/hide the name of the instrument e.g. Acoustic Grand
Piano.

Use Short Names This option determines whether the full or abbreviated track/instrument
name is displayed when namings are shown on the score. To edit the
actual namings see Track Namings.

Full names might be ‘Left Hand’ and ‘Acoustic Grand Piano’ whereas
shortened names might be ‘Lft Hnd’ and ‘Aco Gra Pia’.

For this option to work, however, the Track Name and/or Instrument
Name options must also have been selected. E.g. if you have chosen to
hide the Track Name and to show the Instrument Name, and you then
select Use Short Names, only the Instrument Short Name will be
displayed. To show the Short Track Name as well, check the Track Name

121
box.

Apply The Apply button applies all the changes made to the score without the
need to close the dialogue box.

Keyboard Shortcuts

The File menu offers the following commands:

Ctrl+O Opens an existing document.


Ctrl+S Saves an opened document using the same file name.
Ctrl+P Prints the current document.
Ctrl+V Toggles between Page View (Print Preview) and Window View.

The Edit menu offers the following commands:

Ctrl+Z Undo.
Ctrl+Y Redo.

The View menu offers the following commands:

Ctrl+V Toggles between Page View (Print Preview) and Window View.
Ctrl+V Toggles between Window View and Page View (Print Preview).
Ctrl+K Shows/hides the On Screen Piano Keyboard.
Ctrl+L Shows/hides the Metronome Light.

Zooming
Z+Up Zooms in on the current view.
Z+Down Zooms out of the current view.
Z+Enter Sets the preferred zoom setting.

Moving the
Cursor
Left Moves to the previous note or rest.
Right Moves to the next note or rest.
Up Moves to the next stave or system.
Down Moves to the next stave or system.
Ctrl+Right Moves to the next measure.
Ctrl+Left Moves to the previous measure.
Ctrl+End Moves the cursor to the end of the score.
Ctrl+Home Moves the cursor to the start of the score.
Ctrl+Page Up Moves the cursor to the previous page.
Ctrl+Page Moves the cursor to the next page.
Down

Changing
Pages
Ctrl+G Opens the Goto.. (Page/Measure/Bookmark) dialogue box.
Page Down Moves to the next page in the score without moving the cursor.
Page Up Moves to the previous page in the score without moving the cursor.

122
End Moves to the end of the score without moving the cursor.
Home Moves to the start of the score without moving the cursor.

The Score menu offers the following commands:

Alt+O Opens the Page Setup dialogue.


Ctrl+T Shows/hides the Track Tools.
Ctrl+N Shows/hides the Track Namings.

The Tracks menu offers the following commands:

Alt+T Opens the Track Manager dialogue.


Alt+I Opens the Instrument dialogue for the selected track.

The Insert menu offers the following commands:

I+L Inserts a new Lyric at the insertion point (or a new verse if a Lyric already
exists).
I+B Inserts a new Bookmark at the insertion point (or edit existing Bookmark if
one already exists).
I+C Inserts a new Chord Name at the insertion point (or edit existing Chord Name
is one already exists).
I+G Inserts a new Guitar Box Chord at the insertion point (or edit existing Guitar
Box Chord is one already exists).

The Notes menu offers the following commands:

D+Up Increases the duration of all selected notes (by a reasonable amount).
D+Down Decreases the duration of all selected notes (by a reasonable amount).

D+W Sets the duration of all selected notes to a Whole note.


D+H Sets the duration of all selected notes to a Half note.
D+Q Sets the duration of all selected notes to a Quarter note.
D+E Sets the duration of all selected notes to an 8th note.
D+S Sets the duration of all selected notes to a 16th note.
D+3 Sets the duration of all selected notes to a 32nd note.
D+6 Sets the duration of all selected notes to a 64th note.

Dotted
Durations
D+0 Removes any dotted duration from all selected notes.
D+1 Dots the duration of all selected notes.
D+2 Doubles dot the duration of all selected notes.

Tuplets
T+0 Removes any Tuplet duration from all selected notes.
T+3 Makes all selected notes Triplets.
T+5 Makes all selected notes Quintuplets.

123
Moving Notes
Shift+Up Moves selected notes one track up.
Shift+Down Moves selected notes one track down.
Shift+Left Moves selected notes backwards (by a reasonable amount).
Shift+Right Moves selected notes forwards (by a reasonable amount).

A+Left Moves Attack Time only of selected notes backwards (by a reasonable
amount).
A+Right Moves Attack Time only of selected notes forwards (by a reasonable amount).

Synchronisin
g Notes
S+A Synchronises Attack Time only of selected notes.
S+D Synchronises Duration only of selected notes.
S+Enter Synchronises Attack Time and Duration of selected notes.

Stems
S+Up Sets the stems of all selected notes to point up.
S+Down Sets the stems of all selected notes to point down.

Voices
V+U Sets all selected notes to Upper Voice.
V+L Sets all selected notes to Lower Voice.
V+S Sets all selected notes to Single Voice.

Enharmonic
Spelling
E+Up Raises the Enharmonic Spelling of all selected notes.
E+Down Lowers the Enharmonic Spelling of all selected notes.

Delete Deletes the Current Note.


Backspace Resets the Original attributes of the note.

The Lyrics menu offers the following commands:

Ctrl+Enter Inserts a new verse into the currently selected Lyric (only when editing Lyric).
Delete Deletes the currently selected Lyric.

The Bookmarks menu offers the following commands:

Delete Deletes the currently selected Bookmark.

The Chord Names menu offers the following commands:

Delete Deletes the currently selected Chord Name.

The Guitar Frets menu offers the following commands:

G+F When there is more than one chord fingering for a selected chord this shortcut
will move to the next chord fingering.

124
Delete Deletes the currently selected Guitar Fret.

The Perform menu offers the following commands:

Space Starts Playback.


Ctrl+R Rewinds.
Ctrl+B Starts/stops Step by Step mode.
Escape Stops current Practice Session.

Tempo
T+Up Increases playback tempo of the piece.
T+Down Decreases playback tempo of the piece.
T+Enter Resets playback tempo of the piece to it’s original value.

Volume
V+Up Increases playback volume of the piece (or just the selected tracks).
V+Down Decreases playback volume of the piece (or just the selected tracks).
V+Enter Resets playback volume of the piece to it’s original value.

Metronome
Ctrl+M Activates/deactivates the Metronome.

The Setup menu offers the following commands:

Midi
Instruments
Ctrl+E Opens the Instrument dialogue for the Midi Echo device.

125
2-GN Midi

FEATURES:

1. simple MIDI player (Windows compatible soundcard or soundddriver must be installed)


2. show some MIDI informations
3. MIDI format 1 to format 0
4. MIDI format 0 to format 1
5. repair errors in MIDI file structure
6. RMI to MID conversion
7. fade velocity
8. generate MIDI medley
9. play with favorite MIDI player
10. change volume (choose between volume controls or note velocities)
11. copy (cut) part of MIDI file (between start and end second) into a new file
12. generate controls in rhythmic or random way
13. show short or verbose track information
14. convert karaoke (.kar) to MIDI with lyrics for some specific applications
15. convert MIDI with lyrics to Karaoke (.kar)
16. trim mute song ending if longer than a second
17. show maximum notepolyphony (and its location)
18. Reset GM, GS, XG (optional userdefined midi files)
19. Convert all MIDI files from directory and subdirectories into format 0
20. Sort MIDI tracks in format 1
21. Select MIDI Output Device for internal MIDI player
22. Compress MIDI (result will be a MIDI with same content but if possible smaller)
23. Initialize MIDI device (optional userdefined midi file)
24. Humanize MIDI
25. MIDI note shift

126
26. MIDI to ASCII Text
27. ASCII Text to MIDI
28. Edit (starts your editor to modify documents)
29. Drag & Drop one or more MIDI files from Windows Explorer into GNMIDI
30. Map channel numbers
31. Note Shift
32. Split Drums
33. Split Programs
34. Replace Notes
35. Count-In 1,2,3,4
36. Change Resolution
37. Set copyright information
38. Edit track titles
39. Calculate tempo (BPM)
40. Karaoke lyrics display
41. Stretch notes duration
42. Mute channels/tracks
43. Generate setup measure
44. Show or add secret copyright
45. Set Tempo (bpm and percentually)
46. Check all midi files (in a directroy tree)
47. Create new midi file
48. Browse midi folder
49. Reverse midi (mirror)
50. Check midi natural instrument note ranges
51. Remove hanging notes (notes that do not stop)
52. Delete midi tracks
53. Guess song key and optionally set midi song key
54. Show original midi song keys
55. MIDI time calculator (calculate position, time, tact, tempo within a song)
56. Player status information
57. Find text in midi files
58. Set programs and banks (with sound check)
59. Prepare midi file for PianoDisc
60. Cripple notes (encode it to make it difficult for editing or printing)
61. Edit or display additional information (title, author, rating) to song
62. Show syllables optional to MIDI Karaoke words
63. Adjust volume to common level before playing midi song (optional)
64. Set all midi to common volume level
65. Entertainment midi player
66. Follow karaoke lyrics while song plays (optional)
67. Choose Text font and size (option)
68. Set Melody Channel (information field)
69. Set Music Style (information field)
70. Delete duplicate notes
71. All karaoke to midi (lyric conversion for more files at once)
72. Print Lyrics
73. Pause, Continue, Forward, Backward MIDI player commands
74. Mute Melody
75. MIDI Recorder

127
76. Set MIDI Tempo without changing midi timing (adjust notes)
77. Split notes into lower and upper half at splitpoint (into left and right hand)
78. Edit Text commands
79. Tip of the day
80. Transpose song with muted melody according to sheet music (part of mute melody)
81. MIDI melody to mobile phone ring tones (RTTTL)
82. RTTTL to MIDI song
83. karaoke font chooser separately from text font chooser
84. MIDI settings landscape view
85. insert empty measure
86. Add GM initialization
87. Add GM initialization to all midi files
88. Optional MIDI compression during save operation
89. Batch operations for favorite operations
90. Keystrokes for Nokia 3310/3330 mobile phone tone editor
91. MIDI command filter
92. Find large pauses
93. Show tempo changes
94. Show text positions
95. Quantize pedal controllers to on/off
96. Quantize controllers by expressions
97. Generate tempo slide
98. Sysex Transfer
99. Karaoke Editor
100. Synchronization Editor

128

You might also like