# Reference

## Dimension

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

* 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. A scale must containt at least two notes. Just add the desired notes or delete the scale if you want to quit. * Plays the notes in the scale, starting from the tonica. * Rename the selected scale. * Delete the selected scale. No warning is issued. #\$Editing Colors A Musical Generator gives a detailed control over the colors of a complex map fractal and of a 3D dynamic fractal (e.g. the Lorenz fractal). This is done with the color control (see below). {bml color_1.shg} The color control works according to the following principle: the values of the Z-dimension of a vector are used to determine the color. These values vary between the minimum and the maximum of the Z-dimension. These values are divided into two sections, the low and the high section. A separator divides these sections. Suppose the minimum value of a vector is 100 and the maximum is 200. If the separator is 0.50 then the low section is in the range [100..150] and the high section is in the range <150..200]. The two buttons below, left determine how the color changes from the color of the first button to the color of the second button. The buttons below, right apply to the high section. Be careful what happens if you try to change the number of colors. #The start color of the low section. #The end color of the low section. #The start color of the high section. #The end color of the high section. #The separator between the low and the high section. You can move the bar to change the low and high section. Click preview to see the effects. If you don’t want any high section, just move the separator totally to the right. #The coloring box has three options: Normal, Rainbow and Four. Default is Normal and its workings have already been discussed. The two other values have the following effect: Rainbow: All colors of the rainbow will be shown in the low section. {bml color_2.bmp} Four: all four colors are shown alternately. No distinction is made between the low and the High section. This can give surprising results in especially complex maps. {bml color_3.bmp} #The number of colors which will be used for the fractal. The higher the number, the finer the fractal will be drawn. However, the fractal should supply the values to support the number of colors. For example: a complex map by default has a maximum of 255 iterations and can thus show a maximum of 255 colors. Increasing the number of colors has no use, unless you increase the maximum number of iterations as well. When you change the number of colors, this takes only effect when you press enter. #\$The Preview/Prehear bar {bml edit_preview_panel.bmp} #\$Fractal Editors Fractal editors allow you to change your fractals and data in many ways. Because there are several types of fractals, there are also several fractal editors. The following editors are in use: 1D Editor Dynamic System Editor User Defined Editor Complex Map Editor Data Editor Lindenmayer Editor IFS Editor #\$Editing a 1D Fractal The 1D editor shows the parameters of the fractal and if you press the preview button ({bmc edit_preview.bmp}) it also shows the fractal itself. You can change the parameters and plot and hear the results.

{bml edit_1D.shg}

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 ({bmc vcr_play.bmp}), 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 ({bmc edit_preview.bmp}) it also shows the fractal itself. You can change the parameters and plot and hear the results.

{bml edit_dns.shg}

#The size of the fractal. #The parameters of the fractal. #\$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. {bml edit_usr.shg} 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 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. #The initial values for the iteration. #You can use A, B, C, D and E in your equations. Here you give their values. #Determines the start and finish values for each dimension. When a vector plays it starts at the start position for that dimension and runs until the finish value. #The preview window shows the preview plot when the preview button ({bmc edit_preview.bmp}) is clicked. In complex maps you can zoom in on the fractal by selecting the area you want to zoom with the mouse. #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 ({bmc vcr_play.bmp}), 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. {bml edit_prv.shg} #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. #The play button will try to play the button. In some cases this yields an error. The music will not be played. #Pause the current playback. #Play one note and wait until step is pressed again. #Stop playback. #Change the aspects that will be applied to the playback. You will not be able to change the vector. That will be the vector that you are currently editing. #Copy the aspects to the MIDI channel of your choice when you quit the editor. #\$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 ({bmc edit_preview.bmp}) to see the effects of the changes. To hear the changes, press the play button ({bmc vcr_play.bmp}). 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.

{bml edit_cmp.shg}

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 ({bmc note_notes.bmp}). If you like your current aspects you can copy them to a MIDI channel by clicking the copy button ({bmc edit_copy.bmp}). Colors can be precisely controlled with the color control.

Minima and Maxima Cross Steps Parameters Maximum iterations Estimation methods Initialization Method Dimension Colors #The ranges between which the complex map is computed. When zooming in on a fractal, the minima and maxima are adjusted. #Fraction between [0..1] of the X and Y direction of the cross. Click at the button and the cross appears at its current position on the plot preview. Move the mouse and the cross moves as well. Click again and the new mouse position will be retained at the screen. #When a complex map is plotted, it is computed for each pixel between minimum and maximum. When music is generated there is no such grid (pixels of a screen) so an artificial grid must be generated. The number of steps indicates the number of computation steps between minimum and maximum. The greater the amount of steps, the more precise one hears the fractal and the computing time is needed. #Parameters needed for the fractal. #A complex map is computed for each grid element. The number of iterations counts as the result of the computation. The higher this number is, the more precise results are yielded, and the more computing time is needed. #There are three methods of computing the results of a fractal. Choose one of them. #When making the computations for a grid element, the computations are initialized in a certain way. The Mandelbrot method initializes each computations with the value of its grid position. The Julia method uses the parameters while the Random method chooses a random value between both parameters. #The dimension parameter determines how a fractal sounds on prehearing it. X for X-direction, Y for Y-direction and Z for above to below, from left to right. Which dimension you will actually hear is not determined by this parameter, but by the dimension parameter from the notes aspect. # Changes the colors with which the complex map is drawn. #\$Editing Data A data vector can be edited by editing its values. You can cut, copy and paste values from and into the editor. It is possible to load and save values from file (txt and prn-files). There are no facilities fro previewing and prehearing. {bml edit_dat.shg}

#\$Editing a Lindenmayer Fractal Edits a Lindenmayer fractal. {bml edit_lin.shg} #Changes the depth of the recursion. Either move the slider or change the number. #Changes the angle. The effect of this parameter will not be overly visible because the fractal is always plotted to fit the view, thus distorting the angle. #The rules of the equation. Each rule should be on a new line. #The axiom determines which rule will start the evaluation. #\$Editing an Iterated Function System (IFS) Allows you to edit an IFS fractal. Three fractals are preprogrammed: Fern, Sierpinski and Chaos. {bml edit_ifs.bmp} #\$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.

{bml ena.shg} #\$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. #\$Choose the dimension of the vector. The number of dimensions can differ for each vector. #\$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. #\$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). #\$Each MIDI channel can be played in a certain style, from legato to staccato. By changing the style in the main window, the style is set for each MIDI channel to the same style. #\$Each channel has its own scale. When changing the scale in the aspects window, only the scale of this window will be changed. #\$Usually a sound card has several sources for sound, so-called ports. Your computer may have several soundcards, which results in the same thing. For each channel you can select a separate port. #\$Change the style for this MIDI channel. The style varies from very legato via normal to very staccato. #\$KPlay controls {bmc vcr_play.bmp}When you press the play button, 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. {bml play.shg} #{bmc vcr_rewind.bmp}Rewinds the music. When music was playing, it starts to play from the beginning. #{bmc vcr_play.bmp}Play the music. #{bmc vcr_pause.bmp}Pause the music. #{bmc vcr_stop.bmp}Stop the music and quit the play controls. #{bmc vcr_step_forward.bmp}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. #\$K 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.

{bml plotter.shg} #\$KCopies the plotter area to the clipboard so that it can be pasted in other applications. #\$KRemoves selected vectors from the plot. #\$Remove all vectors from plot. #\$Sometimes when resizing during a plot some vectors are not fully plotted. Select replot to force all vectors to be plotted. #\$Saves current plot to file. #\$Allows you to save the current plot as a wallpaper. When you click the button the following happens: A dialog pops up to save the plot as a bitmap file When you enter the name and press ok, windows maximizes, to the maximum of the screen. The vectors are plotted. The current window is saved to the designated file. And is set as the current wallpaper. #\$MIDI Channel Editor You can change the instrument and the playability of each MIDI channel with the MIDI channel editor.

{bml emc.shg} #\$Change the instrument by clicking the right arrow down and selecting the desired patch. When a Musical Generator is playing, the change takes effect immediately. #\$Click this button if you don't want to hear the channel during playback. #\$Set the name of the MIDI channel. #Click this button to mute all other MIDI channels #Click this button if you want to hear all MIDI channels #\${bml ins_func.shg} The insert function allows you to insert a data vector into the DATA section. #\$Drum Channel Editor The drum channel editor changes properties of the drum channel.

Name The name of the drum channel.

Patch The patch of this drum channel. #\$MIDI Event Editor The MIDI event editor inserts a new MIDI event or changes an existing MIDI event in the events tab.

Time The time at which the event should be inserted.

Event The type of event.

Channel The channel to which this event applies.

Data MIDI events need two bytes of information. The exception is program change which needs just one byte. The value of these data bytes may vary between [0..127]. The interpretation of this byte depends on the event.

View The data bytes can be viewed as hexadecimal or decimal. #\$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. #\$Instruments Editor Instruments are MIDI patches together with their MIDI properties. Currently only one property has been defined (panning), in the future other properties will be defined. When changing the patch of a MIDI channel, only the sound changes. However, the instrument has other properties, like panning. When changing the instrument of a channel, the panning changes to the value of that instrument. You can change the panning value of each instrument. Press test to hear the result.

{bmc edit_ie.bmp} #\$MIDI Base Editor When a PC has sound capabilities it usually has several sources of sound, so called ports. Users may have built in several sound cards, each providing one or more ports. Some ports have the capability to connect MIDI devices to, i.e. a keyboard, alternative sound sources, etc. The MIDI base editor shows all MIDI output ports. It also shows whether a Musical Generator was able to allocate that port. This is shown by a note symbol in front of the name of the port. During start up a Musical Generator tries to allocate all ports in your system. If no note symbol is shown before a port it is allocated by another program and it will produce no music. If no port is flagged with a note symbol, a Musical Generator will not be able to play music at all. This is usually indicated at startup. A Musical Generator can deallocate a port by clicking on its note symbol. When it disappears the port is available for other programs. This can be critical if you try to record music from a Musical Generator into other programs, i.e. Cakewalk. By clicking the port again the note symbol returns if a Musical Generator is able to reallocate the port. When clicking at a port it shows the capabilities of that port. Some ports are able to send MIDI messages to an external MIDI port. These ports are indicated to possess the technology ‘MIDI port’. Exactly one port can be selected for the MIDI out function. If a port has been such selected this is denoted by the symbol of a MIDI plug. You can click on this symbol to deselect the port for MIDI out. You can click on another port to select it for MIDI out. Usually a port possessing the MIDI port technology does not produce sound. If you don’t hear any music, this should be the first thing to investigate.

{bmc edit_mbe.bmp}

#\$Options The options dialogue changes parameters of a Musical Generator. The following parameters can be changed. Beats The number of beats in a measure.

Denominator The denominator of a measure. Beats and denominators are currently not used in a Musical Generator. However, they are saved in MIDI files and come in useful when reading a MIDI file in a sequencer.

Convert 14 bit controllers to 7 bit Most ports do not recognize 7 bit controllers. When this option is checked, only the Most Significant Byte (MSB) of a 14 bit controller is transmitted to the MIDI port.

Dichotomize 1 bit controllers 1 bit controllers are controllers which are ON or OFF. Usually the numbers between [0..63] are recognized as OFF and [64..127] as off. When this option is checked the numbers [0..63] are converted to 0 and the numbers of [64..127] to 127.

Check for new version If this option is checked, after startup a Musical Generator checks via Internet whether a new version is available. If so, you will be informed. It is assumed that you have an internet connection. If not, you will get an error message like ‘socket error’ or something like that. If there is any error you will be informed via an error message in the status line. No information from your PC is transmitted to MuSoftBuilders. #\$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 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.