WHAT IS A MUSICAL GENERATOR?

A Musical Generator 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.

After reading all this, you’ll of course want to try the program. Well that's easy: first run the Demo and after you have (probably) skipped the section of how to register you can start the tutorial.

NOTE! This program is shareware, which means that you may use it for 30 days to try it out. If you still use it after these 30 days, you are expected to pay $25. How to do so, look in the Registering section.

What is new in version 2.0?

Running the demo

Registering

Tutorial

Reference

How To

Troubleshooting


WHAT IS NEW IN VERSION 2.0?

A lot of new features have been added to version 2.0.

•	A bug in version 1.2 has been corrected: the Julia IIF fractal was not correctly saved and thus could not be reloaded. This has been corrected.

•	A wizard has been added to help beginning users to quickly generate music.

•	There is a new tab with 1D fractals. These include fractals like white and brown noise, fractal Brownian motion and so on.

•	Ten new complex maps (fractals) are added. Each newly added fractal can be computed with three different methods. Also each fractal can be initialized in three different ways: Mandelbrot, Julia and random. That means that each added fractal can be computed in 9, completely different ways, each yielding a completely different fractal. In fact you have almost 100 new different fractals available.

•	Most fractals do have a preview window in the editor, so you preview your edit results beforehand.

•	The control over the duration aspect has been improved. You can now select which exact note durations are allowed. I noticed that this yields much more "normal" rythmical music, especially combined with some 1D fractals like fractional Brownian motion for the duration aspect.

•	Lots of tone scales are added. You can now choose from 50+ tone scales.

•	A tone scale editor has been added, so you can create your own tone scales now. Also you can prelisten the resulting scale.

•	A new number generator can add numerical vectors.

•	Added examples and a quick and easy way to play examples from your disk or to download new examples from the net.


REGISTERING

Initially the program is unregistered. During startup it shows a screen in which you can register your copy of a Musical Generator. Registration costs $25. The easiest way to do register is as follows:

•	Click Help|About

•	Press the Register button

•	The register window appears. Click "Yes! Registrate a Musical Generator", This connects you to a website that allows you to registrate your copy of a Musical Generator electronically.

•	When succesfully registered, a registration code is sent to you by email.

•	Enter this code by again clicking Help|About and the Registerbutton.

•	Click "Enter registration number" and click OK. Now your version is registered and you can legally use a Musical Generator.


RUNNING THE DEMO

Run a Musical Generator. Click File than Examples. Double click Demo.tmg. Press the play button [image] and you'll hear the first music from a Musical Generator. If you don't hear anything, go to troubleshooting.


TUTORIAL

Explains how to create music in 1 lesson. You have mastered the full functionality of a Musical Generator in 9 lessons. You can also consult the How To section.

Lesson 1. Getting a feel for a Musical Generator

Lesson 2. Doing more...

Lesson 3. Changing the interpretation of a sinus

Lesson 4. Adding more vectors

Lesson 5. How to put variation into your music

Lesson 6. How to convert text, bitmaps and numbers into music

Lesson 7. Introducing fractals

Lesson 8. Exporting music

Lesson 9. Handling time


Lesson 1. Starting and quitting a Musical Generator
LESSON 1. GETTING A FEEL FOR A MUSICAL GENERATOR

When the installation was succesful there has been a new section added to your start menu called a Musical Generator. Click on the symbol for a Musical Generator and the application starts. A Musical Generator consists of a section labeled DATA and a section labeled MIDI. The DATA section contains the data of a Musical Generator and the MIDI section contains information on how the music should sound. We will discuss the following subjects:

Inserting data

Seeing the data

Hearing the data

Exiting a Musical Generator


INSERTING DATA

At the top right of a Musical Generator you see several tabs. Each tab is a group of fractals or function. Click the tab of the group you want to see, next click the fractal or function you want to insert in the DATA section. You see its icon appear. You have now loaded your first data, or as we call it from now on: vector into a Musical Generator.

Exercise

Click on the tab Data, and press the button labeled F(x). A dialog box appears, asking you what function you want to select. Just press OK, so the sinus will be selected. It appears in the DATA section. We will call it a vector in the future.


SEEING THE DATA

As you noticed, a small icon [image] represents the vector when it is inserted in the DATA section. You can have a bigger picture when you plot the vector. It is always a good idea to plot vectors before you listen to them.

Exercise

Right click with the mouse on the sinus and choose plot. The plotter comes up and the vector is plotted.


HEARING THE DATA

The next phase consists of making music out of the vector. If you look at the lower left side of the MIDI section you see four buttons, the so-called MIDI aspects. They are labeled Notes, Duration, Speed and Time. By dragging a vector to one of these button, it's MIDI aspect is controlled by that vector.

Exercise

Click at the sinus in the data section and drag it to the button labeled Notes. Drop it over there and the button assumes the name of the vector and the picture of the button changes to that of the sinus. You are ready now!

Press the play button [image] and you will hear the sinus. Before doing so, just wonder what kind of music you expect.


EXITING A MUSICAL GENERATOR

In the next lesson we will explain more about what you have done, but now: try to exit a Musical Generator. You have two way: click at the File menu and next on Exit. You can also use Alt-F4 and you can use the close button of the window (the most upper right button of a Musical Generator window, marked with an X).


Doing more with the sinus
LESSON 2. DOING MORE WITH THE SINUS

In this chapter you will learn how to use the other aspects of a note. We make an exception for the time aspect because it is more difficult. It will be treated in a separate lesson. You will learn the following topics:

What are aspects?

How to assign a vector to different aspects

How to unassign an aspect


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 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.

Excercise

If you haven't done already, insert a sinus (see chapter one: inserting data). Assign it to the notes button and to the duration button. Now play the music. Because pitch and duration are provided with the same vector they have exactly the same values. When the pitch increases, the duration increases also and vice versa.


HOW TO UNASSIGN A VECTOR FROM AN ASPECT?

This can be done too in several ways:

Drag. You drag the vector from the button to the middle of nowehere and drop it there. The vector will disappear.

Use the aspect editor. Click at the button, a dialog pops up and the first item contains the vector selected. Click at the arrow down and select <none>. Click OK and the vector disappears from 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 <none> ro remove the vector.

Excercise 1

We want to study the effect of the sinus on the speed. Drag the vector from the duration button for example somewhere in the MIDI section and drop it there. It disappears from the button. Now drag the sinus from the DATA section to the speed button and drop it there. Press play. When the pitch increases the music becomes louder.

Excercise 2

Drag the sinus from the DATA section to the duration button. Now the notes, duration and speed button should have been assigned the sinus. Press play. Nifty eh?


Changing the interpretation of a sinus
LESSON 3. CHANGING THE INTERPRETATION OF A SINUS

Maybe you have wondered why the sinus sounds as it does now? Why is the pitch as it is and not higher or lower. In this lesson you will learn how to change the attributes of an aspect, more specifically:

How to change the minimum and maximum between which vector are scaled

How to change the default of an aspect

To rescale or not to rescale

How to change the dimension of an aspect

Start a clean Musical Generator (restart it or press File|New). Load the sinus and drag it to the notes button. Press the notes button and the notes editor comes up, see the figure below


CHANGING THE MINIMUM AND MAXIMUM

Exercise

The values between which the notes are rescaled are listed below current. Below allowed are the allowable values listed for minimum and 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 you can change the parameters of an aspect so that 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.


DIMENSION

The dimension of vectors be treated in the lesson about fractals.


Adding more vectors
LESSON 4. ADDING MORE VECTORS

Until now you have used one voice for music and assigned notes to various aspects. In this lesson you will learn:

How to create more voices in your music

How to display your music

A Musical Generator is based upon the MIDI concept. That means that there are 16 MIDI channels that you can consider as tracks. Each channel has its own aspects for pitch, duration, speed and time. Untill now, we have only used channel 1. Now you will learn to use other channels as well.


HOW TO CREATE MORE VOICES IN YOUR MUSIC

Exercise

Start with a clean Musical Generator (restart it or use File|New). Now load two vectors: sinus.prn and cosinus.prn. Plot both of them so you can see how they differ. Assign the sinus to the notes button. Now click at channel 2. You will see that the notes button clears. There is no vector assigned to the notes aspect of channel 2. Assign the cosinus to the notes button. Press play. You will hear two pianos at the same moment.

Evaluation

In the previous lesson you have learned how to change the aspects of music. To be more exact, changing aspects applies to only one channel. This adds to the flexibility with which you generate music. Suppose you want to have to flutes in your music (how to choose a flute you will learn in the next chaper). You want to double these flutes, one flute an octave higher above the other. You can do this by changing the minimum and the maximum of the notes aspect of one flute to be an octave higher than the other.


HOW TO DISPLAY YOUR MUSIC

Press the Piano roll button [image] to have an overview of the music. A window pops up, showing all notes. Each channel has its own color. The longer the note, the longer the line representing it. We call this notation a piano roll because it looks like a roll of paper being put into a Pianola. Now press play again. A thin line on the Piano roll shows which notes are being played.

If you press the Piano roll button and you haven't pressed the play button before you will see an empty piano roll. You must first generate music before you see the piano roll filled.


How to put variation into your music
LESSON 5. HOW TO PUT VARIATION INTO YOUR MUSIC

In this lesson you will learn how to put more variation into your music. The folowing subjects are treated:

How to choose a synthesizer

How to change the sound of a channel

How to change the length of your music

How to change the tone scale

How tor change the tempo of the music

In this lesson you need the sinus and the cosinus. Assign the sinus to the notes of channel 1 and the cosinus to the notes of channel 2.


HOW TO CHOOSE A SYNTHESIZER?

The most right control in the control panel contains the names of all soundcards -or synthesizers- that a Musical Generator found in your computer during startup. Press the down arrow. If you have more than one synthesizer (as most soundblaster owners do) a list of synthesizers is presented. Choose the synthesizer you want to hear the playback from. All channels wil be played back via this synthesizer.

Note that when you press play, a Musical Generator grabs all synthesizers available and labels these with an asterisk (*). Not all synthesizers need be available, for example when you use a sequencer, this program may have selected one or more synthesizers. If you want to have more choice, close this program or deselect some synthesizers. When no synthesizer is available, a Musical Generator cannot play and will tell you so.

If you don't have any synthesizer, a Musical Generator will tell you so during startup. You can continue, but you cannot playback your music.


HOW TO CHANGE THE SOUND OF A CHANNEL?

Each channel can have a different instrument (in MIDI terms often called patch or program). The default is the Grand Piano for each channel.

Exercise

Double click on a channel and a dialog pops up.

You can change the patch of the specific channel. Also you can decide whether you want to silence this specific channel by checking silence channel.


HOW TO CHANGE THE LENGTH OF YOUR MUSIC?

The length of the music in measured in measures, each with a certain denominator and a number of beats. All these parameters you can change in the section labeled measures (right below in the application window).


HOW TO CHANGE THE TONE SCALE?

A musical scale indicates which notes should be included in the music and which not. There are a lot of scales included in a Musical Generator and you can add your own scales (explained in the reference section). By choosing a different scale the atmosphere of the music changes.


HOW TO CHANGE THE TEMPO OF THE MUSIC?

The standard tempo is measures in beats per minute (bpm). You can change the tempo with the tempo slider. A number indicates how many quarter notes should be included in a minute. A lower number slows down the music, a higher one speeds it up.


LESSON 6. HOW TO CONVERT TEXT, BITMAPS AND NUMBERS INTO VECTORS.

In this section you will learn how to convert Text, Bitmaps and Numbers into music. You will learn:

Converting text into a vector

Converting bitmaps into a vector

Converting numbers into a vector


CONVERTING TEXT INTO A VECTOR

Text can be typed into a vector, read from a 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.

Exercise

Select the Data tabe and press the T button.

Now enter "John Kennedy" and press OK. A vector named "Text" should have appeared. Right click on it, select Rename and call it "John". The next vector we'll read from file. Select the Data tab and click at the file open symbol. Go to the Examples directory and choose *.txt as file type and open the file Marilyn.txt. The text editor comes up with the contents of the file. Click OK again. Select channel 1, drag John to the notes button, select channel 2 and drag Marilyn to the notes button. Press play: a stormy affair, isn't it?

Is it? That depends a lot on your controls. Select for example for both channels a string patch and a tempo of 128 bpm. Press play and listen to the change of music. How did it all end? Select the Chromatic tone scale and you'll feel it.


CONVERTING BITMAPS INTO A VECTOR

Bitmaps can be read from 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 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 the file symbol from the Data tab. 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.

Exercise

Select the file symbol from the Data tab. Go to the Examples directory, choose *.bmp as file type and select the file Earth.bmp. Now three vectors are entered in the data section: Red, Green and Blue. Make a plot of these vectors.


CONVERTING NUMBERS INTO A VECTOR

Numbers can be typed into a vector (select the Data tab and click N) or read from file (select the Data tab, click the file symbol 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
LESSON 7. 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. But they are also well suited for creating music, as you will learn in this lesson. In this lesson you will learn:

Inserting a fractal as a vector

About the dimensions of a fractal

How to edit a fractal

Build your own fractals


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.

Exercise

Select the Dynamic systems tab and select Martin. 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 assign the Martin fractal to the notes button, do so. Click the notes button. You see that the below Dimension both the X and Y 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.

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 former X and Y values. So in the expression y = sin (x) - cos (y), the former 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.

How to create your own fractal? Select the Other tab and click the button Your own fractal [image] The user editor comes up, and you can supply the formulas, starting values of the fractal and the values for the parameters.


Exporting your music
LESSON 8. EXPORTING YOUR MUSIC

Once you have generated music you can export it to other programs (i.e. sequencers) in two ways:

Save it as a MIDI file

Record it in another program


SAVE MUSIC IN A MIDI FILE

Choose File|Save as. From the file type option box, choose MIDI file. All MIDI events will be saved as a MIDI file, format 1 type.


RECORD MUSIC IN ANOTHER PROGRAM

A Musical Generator has the capability of synchronizing other programs that allow their clock to be controlled by the MIDI time clock. By pressing the synchronize button [image] a start signal is sent. When music is played clock signals together with all MIDI messages are output to the MIDI output port. Which port that should be, is determined in the View|Preferences section. A Musical Generator defaults to a best guess.

In order that this should work however the MIDI output port must be connected to the MIDI input port. This can be done in hardware and maybe also in software, however I am not aware of such a solution.


LESSON 9. HANDLING TIME

Time is rather difficult in a Musical Generator, that is why we have delayed discussing the subject so far. There are three ways to handle time. You can set a different way with different parameters for each channel using the time aspect button.

What is time

The standard way

Using a time window

Using a vector


WHAT IS TIME

We don't know what time is, but we can say something on how a Musical Generator handles time. The shortest unit of time is the 32nd note. In a Musical Generator is has a value of 1. This means a 16th note has a duration value of 2, and a quarter note of 8. The length of a piece is determined by its number of measures times the number of 32nd's in each measure. A standard 4/4 measure contains 32/32nd's, so ten measures of 4/4 has a maximum length of 320 time units.


THE STANDARD WAY OF HANDLING TIME

This is very straightforward. The piece begins at time 0 and continues to the maximum time. A note begins when the former note has finished.


USING A TIME WINDOW

You can put a time window over the vector, meaning that it can begin at a later time  and ends earlier. When you click at the time button, look at the values for minimum and maximum. These are initially empty, meaning they are provided by default. Behind the maximum is the current maximum listed, but this can change as you change parameters. When you type in a number in the minimum box i.e. 32, the piece starts at time 32, in a 4/4 piece one measure later. Likewise, typing in a number for maximum will this vector cease to sound when that time has come.

Exercise

We will create a four channel piece, with the same vector starting one measure later.

Start with a clean Musical Generator. Insert the Chip vector. Assign it to the notes of channel 1 to 4. Our piece has a 4/4 measure, so we know that the duration of a measure is 32 time units. Click at the time button of channel two, type in 32 at the minimum and click Ok. Insert 64 as the minimum of channel 3 and 96 for channel four. Show the piano roll. Click play.


USING A VECTOR

The vector values are rescaled and each note of the notes vector will be played at the time which comes from the time vector. This means that the notes are not successively following each other but might be mixed in a complete different order.

I am not sure about the value of this feature. Maybe you can find a good use for it. In the examples section are some samples that use the time aspect.


REFERENCE

Terms

DATA section

Dimensionality

Duration button

Global button

Memory used by vectors

MIDI section

MIDI window

Notes button

Notes off button

Piano roll

Play button

Plot button

Soundcards

Synchronize button

Tempo

Time button

Vector

Volume button

Menus

DATA menu

Dialogs

Application window

Aspect editor

MIDI channel editor

Play controls

Plotter

Text editor

Tone scale editor

Your own fractal


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.


MEMORY OCCUPIED BY VECTORS

Data vectors occupy memory for each data element that they have (six bytes to be exact). Not so for fractals. They are just formulas from which elements are computed. That means that they occupy as much memory for 10 elements as for 1,000,000 elements. The drawback is that a one million-element fractal takes a long time to compute when it is being plotted. However, when generating music there is no difference between a fractal of 10 or 1,000,000 elements.


TEXT EDITOR

The text editor allows you to edit text before it is inserted as a vector. When you press OK, text is converted to a vector, which means that the text is converted to numbers. It cannot be converted back.

The text editor is called when you insert text from the Data tab, paste text from the clipboard or insert a text file.


Cut selected text to the clipboard.


Copy selected text to the clipboard.


Paste text from the clipboard into the editor.


Insert a text file into the editor.


Save the text into a text file.


TONE SCALE EDITOR

The tone scale editor allows you to create or change new or existing tone scales. Click Edit|Tone scales and you will see the tone scale editor.


A view of all available scales.


The checked notes belong to the selected scale. Check to include a note in the scale and uncheck to remove a note from the scale.


The tonica is the starting point from the scale. It should be an existing note.


The dominant is not used. Reserved for future use.


Save changes and quit the editor.


Do NOT save the changes and quit the editor.


Create a new, empty scale. Empty scales are not allowed. Just add the desired notes or delete the scale if you want to quit.


Plays the notes in the scale, starting from the tonica. A Musical Generator should not be playing a file.


Rename the selected scale.


Delete the selected scale. No warning is issued.


USER EDITOR

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.

The folowing functions are supported:

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 number of iterations for variable T. T iterates from 1 to the value you supply.


Determines how the values are plotted. If you check this box, the computed X and Y will be connected with lines. If you uncheck it, only dots are plotted. Experiment which situation best represents your formula.


Supply a formula for the dimensions. A formula for Y must be provided. Z is used for color and if X is omitted, the value of T will be assumed.


If you use the variables X, Y and Z they always represent the values of the former equation. The initial values are provided during the first iteration.


You can use A, B, C, D and E in your equations. Here you give their values.


The notes aspect editor
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.


Select vector
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
Select minimum and maximum of the aspect. Below allowed are the maximal maximum and the minimal minimum show.


Choose dimension
Choose the dimension of the vector. The number of dimensions can differ for each vector.


Rescale
If rescale is checked, then all vector values are rescaled between minimum and maximum. If you want to eliminate this, uncheck rescale. However, if a value is below maximum, it is replaced by maximum and when it is below minimum, it will be replaced by minimum.


Default
A suitable default when no vector is provided. This is not possible for the notes aspect (a vector must be provided) and for the time aspect (default time is the time of the former note plus its duration, starting at zero).


PLAY CONTROLS

When you press the play button, the play controls show. The program first checks whether at least one soundcard is present. If not, an error message is generated. Next the program checks whether there is music to be generated, that means that a vector must be assigned to the notes aspect for at least one channel. If not, the program informs you so. When it has performed these tests successfully the program starts to play.


Rewinds the music. When music was playing, it starts to play from the beginning.


Play the music.


Pause the music.


Stop the music and quit the play controls.


Plays one group of notes (all notes with the same time stamp) and than pauses.


Shows the current position of the song. You can change the position where the music is being played by changing the slider position.


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 vector panel.


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


Removes vector from plot.
Removes selected vectors from the plot.


Remove all vectors from plot
Renove all vectors from plot.


Replot vectors
Sometimes when resizing during a plot some vectors are not fully plotted. Select replot to force all vectors to be plotted.


MIDI CHANNEL EDITOR

You can change the patch and the playability of each MIDI channel with the MIDI channel editor.


Change patch
Change the patch (or instrument) by clicking the right arrow down and selecting the desired patch. When a Musical Generator is playing, the change takes effect immediately.


Silence channel
Check silence if you don't want to hear the channel during playback.


Set the name of the MIDI channel.


The insert function
The insert function allows you to insert a data vector into the DATA section.


Select the desired function.


Function size
Enter the size. As the resultant vector is a data vector you should realize that each element occupies memory (on the other hand: 100,000 elements occupy about 2/3 MB).


Insert file
Insert file allows you to insert a file into the DATA section. The extension determines what kind of file will be inserted. You can insert the following files:

Type	Description
*.txt	The contents of the file be be treated like text
*.bmp	The file is treated as a windows bitmap (see converting bitmap into a vector).
*.l	Instructions for creating a Lindenmayer vector
*.prn	An excel exported ASCII file. The numbers should be separated by spaces
*.*	The file will be treated as a *.prn file


Insert function
Inserts as a function as a vector into the DATA section. Choose the function and the number of points with which you want the function to be represented.


Insert numbers
Displays the number editor in which you can directly type numbers.


Insert text
Displays the text editor in which you can type directly text. How the text is interpreted into a vector you can read in Converting text into a vector.


Inserts a dynamic system
Inserts a dynamic system fractal into the DATA section.


Inserts a complex map
Inserts a complex map fractal into the DATA section.


Inserts other fractals
Inserts some other fractals into the DATA section. Currently these can be a Lindenmayer fractal or your own fractal.


The functions of the application window
APPLICATION WINDOW


Open a file
Open a file that has been saved with a Musical Generator (.tmg file).


Save a file
Save a file as a Musical Generator file (.tmg file) or as a MIDI type 1 file (.mid file).


The play button
Press the play button to hear the music you created. You nust have assigned at least one vector to the notes button, else there is no music to be played.

When have have played a piece of music and have changed some parameters (like tone scale or beats) you must explicitly press this button again, else you will hear your old music again.

When you press the play button, the play controls show, until you press the stop button.


Play wizard
Starts the play wizard to easily create a piece of music.


Play channel checkbox
If you uncheck the checkbox before a channel you will not hear sound from that channel. Check to hear sound again.


The progress indicator shows how much of your music has been played yet. Progress indicator
The progress indicator shows how much of your music has been played yet.


The global Button
When the global Button is not pressed each vector is rescaled to its own (local) minimum and maximum. When pressed, all vectors are rescaled to the smallest minimum and largest maximum of all vectors in the DATA section.


The plot button
The plot button lets the plot window appear.


The synchronize button
The synchronize button allows to record the music you create in an external sequencer. Most MIDI sequencers have an option that to have their clock controlled by another program, in this case a Musical Generator. When you press play, all MIDI codes are transmitted to the MIDI output port. Which port that is, can be entered in preferences.


The notes off button
The notes off button silences each MIDI channel form each synthesizer. Sometimes a note remains 'hanging', because a corresponding note off signal has not been received. This is quite normal when you change the synthesizer during playing music. By press the notes off button, you eliminate a source of irritation.


The MIDI form
The button for the MIDI window displays a window with all MIDI events when pressed. Press again to remove the window. This window could be useful for someone who knows MIDI. Be careful: converting the internal MIDI notation to the MIDI events window is a very time comsuming process, especially for long sequences. An example is shown below.


The piano roll
The piano roll shows the pitch of the notes and their length. Press again to remove the window. An example is shown below. Each channel has its own color.


Loop button
When the loop button is pressed, the music starts again when it is finished, else the music will stop at the end.


Tempo of the music
The tempo is expressed in quarter notes per minute, often called beats per minute (bpm).


Soundcards
Displays the synthesizers in your system. One soundcard can have several synthesizers; the Soundblaster AWE 32 for example has a wave table, a FM synthesizer and an external MIDI port. All three are listed and can be chosen. Default: when one of the synthesizers contains the word “Roland”, it will be automatically chosen.


Select the amount of beats
Select the amount of beats.


Selects the denominator
Selects the denominator or beat duration of the time signature.


Number of measures
The number of measures in your piece.


Tone scale
A tone scale determines which notes are available in an octave. The most simple tone scale is the chromatic scale, which allows all notes in an octave, probably the most used is the major scale. Each scale has a tonica and a dominant. The dominant is not used in the current version of a Musical Generator, however, the tonica is. The scale is defined in relative distances to the former note, starting from the tonica.

For example 2 2 1 2 2 2 with tonica C

Means: c, d, e, f, g, a, b; the major scale. The minor scale is defined as: 2 1 2 2 1 2 2, being c, d, es, f, g, a, bes. When the tonica is changed to lets say: a, the allowable notes become: a, b, c, d, e, f, g.

The tone scale greatly influences the mood of the generated music. Try the same piece of music using the chromatic, major and pentatonic scale.


Change the tonica
Changes the tonica of the tone scale.


Choose your fractal
Fractals, mathematical functions and data files are grouped into tabs. Choose the type of function you want to explore, click at the tab and move the cursor over the images. Hints will tel you what  function or fractal they denote. When you click on one of the images, its vector will be inserted into the DATA section.


The DATA section
The DATA section contains the vectors with data. By right clicking in the DATA section, a popup menu gives additional capabilities, as for example, pasting text and bitmaps from the keyboard. Select one or more vectors, and you can manipulate, plot or edit the vector(s).


The MIDI section
The MIDI section contains 16 MIDI channels and for each channel four buttons to change pitch, duration, volume and time aspects for music generated for that channel. You can change the aspect of a channel by dragging a vector to that button. When you click at a channel, the aspects of the clicked channel are displayed.

The number of measures and the number of beats and the denominator for each measure determine the length of the total piece. Choosing a different music scale changes the atmosphere of the music. For example: try the same piece of music with a cromatic scale (modern), major scale (standard) and pentatonic (chinese).


Notes button
The notes button is the button to assign the vector that uses the assigned vector for the pitch of the note. A vector is assigned to the button by dragging it from the DATA section to the button and dropping it onto the button. A button can be unassigned by dragging a vector to a place where it is not accepted and dropping it there. By clicking on the button you can change parameters of the button.

Not all notes are used, this depends on the minimum and maximum and by the musical scale you have chosen. A chromatic scale for example, allows all notes to be used between the minimum and maximum while the Major scale allows only those notes that form the major scale, begin with C.


Duration button
The duration button is the button to assign the vector that uses the assigned vector for the duration of the note. A vector is assigned to the button by dragging it from the DATA section to the button and dropping it onto the button. A button can be unassigned by dragging a vector to a place where it is not accepted and dropping it there. By clicking on the button you can change parameters of the button.


Volume button
The speed button is the button to assign the vector that uses the assigned vector for the speed, or volume of the note. A vector is assigned to the button by dragging it from the DATA section to the button and dropping it onto the button. A button can be unassigned by dragging a vector to a place where it is not accepted and dropping it there. By clicking on the button you can change parameters of the button.


Time button
The time button is the button to assign the vector that uses the assigned vector for the time that the note is played. A vector is assigned to the button by dragging it from the DATA section to the button and dropping it onto the button. A button can be unassigned by dragging a vector to a place where it is not accepted and dropping it there. By clicking on the button you can change parameters of the button.


VECTORS


Vector
A vector is the basic data unit and contains numbers. They are stored in the DATA section of a Musical Generator. Although you can insert text and bitmaps as vectors, they will be always converted to numbers. There are several types of vectors which are divided into subtypes.

Vectors can be inserted by selecting the tab with the desired type of vector. After having been selected with the mouse, they can be transformed, plotted, edited and so on.


The following vector types are recognized by a Musical Generator
The following vector types are recognized by a Musical Generator:

Data vectors

Lindenmayer vectors

Dynamic systems

Complex maps


Data vector
Data vectors just contain numbers. That means that each number is stored into memory. Text, functions and bitmaps are translated into their relevant numbers. That means that it is not possible to reconstruct a bitmap into the original shape, or reconstruct the original text. If you want to edit a data vector you have to edit the numbers. There are no subtypes.


Lindenmayer vector
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 the Data tab, clicking the file symbol 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.


Dynamic systems
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 interested 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, which almost uses 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 time to generate such a vector.

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


Complex maps
Complex maps are computed for each point in a certain area. The most famous are the Mnadelbrot and the Julia Fractal, currently the only one present in a Musical Generator.

Complex maps are in itself not very interesting but their zoomed details are. When you plot a complex map, you can zoom in to a detail of the plot. This zoom becomes the new fractals (zooming changes the parameters of the fractal).


The DATA menu
DATA MENU

The DATA menu is entered when you right click in the DATA section.


Convert a vector
Convert a vector (alt-c). One dimension of a vector is converted to a data vector. One vector must be selected.


Paste from the clipboard
Paste from the clipboard (ctrl-v). Converts text or bitmaps from the clipboard to a data vector.


Transform a vector
Transform a vector (ctrl-t). Transfroms one dimension from a selected vector to a data vector via a mathematical function (sinus, cosinus, exponent, and so on).


Rename a vector
Rename a vector (F2).


Delete vectors
Delete vectors (del). Delete one or more selected vectors. No warning is issued.


Plot vectors
Plot vectors (ctrl-p). Plot one or more selected vectors in the plot. Successive plot commands add to the plotter.


Edit a vector
Edit a vector (ctrl-e or double click). Calls the vector specific editor.


Large Icons
Display vectors as large icons (ctrl-a). Each vector makes a miniature plot of itself that is displayed in the . However, some vectors can be really computationally intensive, a reason why the list view is implemented.


List
Display vectors as a list (ctrl-l).


TROUBLESHOOTING

The program does not seem to work

I hear no music

It takes a long time to produce the music


THE PROGRAM DOES NOT SEEM TO WORK

This often happens when the size of fractal-based vectors is too big. Because fractals do not occupy memory, you can make them as big as you want, 1,000,000 points or more. However, each element must be computed when a change occurs, in order to compute the minimum and maximum of that vector and to plot the vectors in the DATA section and on the buttons. This can take a long time. So, if you are going to use large fractals (typically 10,000 or more, depending on the speed your computer), be prepared for long waiting times.


I HEAR NO MUSIC

There can be several reasons for this. You should check for the following:

HAS A MUSICAL GENERATOR MADE SOME REMARKS DURING STARTUP?

When during startup a Musical Generator has found no soundcards it cannot make music. It informs you of that situation however.

IS YOUR SOUNDCARD WORKING?

If another MIDI program produces music you may assume that the soundcard works.

CORRECT WINDOWS 95 SETUP?

When you hear music, be sure you use a "normal" program, not a game or a program specifically written for your soundcard. They may bypass the windows 95 setup. A Musical Generator only uses the windows 95 settings.

ARE THE SOUNDCARDS AVAILABLE?

When you use a sequencer occupying all your soundcards, a Musical Generator cannot find a MIDI output port to output music to. It generates a message to inform you and wil not play.

IS THERE MUSIC TO PLAY?

You must assign a vector to the notes button for at least one MIDI channel.

HAVE YOU SELECTED THE RIGHT SOUNDCARD?

Most soundcards have a MIDI output adapter which you can use to connect other electronic instruments to. If you have nothing connected to this port, you will hear no music when playing music. Select another output port.


IT TAKES A LONG TIME TO PRODUCE THE MUSIC

There can be several causes for this. The total time to generate your music is increased by the following factors:

•	Increasing the number of measures

•	Increasing the number of notes buttons with a vector

•	Showing the MIDI events window (This really slows down a lot)

•	Decreasing the # of Mhz of your processor


HOW TO...

Insert data into a Musical Generator

Plot a vector

Hear a vector

Understand aspects

Assign a vector to an aspect

Unassign an aspect

Change minimum and maximum of an aspect

Change the default of an aspect

Rescale an aspect

Change the dimension of an aspect

Create more voices

Display the music

Change the synthesizer

Change the sound of a MIDI channel

Change the length of the music

Change the tone scale

Change the tempo

Convert text to a vector

Convert bitmaps to a vector

Convert numbers to a vector

Insert a fractal as a vector

Edit a fractal

Create your own fractal

Export music to other programs