File Print command
Print command (File menu)

Use this command to print a document.   This command presents a Print dialog box, where you may specify the range of pages to be printed, the number of copies, the destination printer, and other printer setup options.

Shortcuts

Toolbar:

Keys:	CTRL+P


Print dialog box

The following options allow you to specify how the document should be printed:

Printer

This is the active printer and printer connection.  Choose the Setup option to change the printer and printer connection.

Setup

Displays a Print Setup dialog box, so  you can select a printer and printer connection.

Print Range

Specify the pages you want to print:

All	Prints the entire document.
Selection	Prints the currently selected text.
Pages	Prints the range of pages you specify in the From and To boxes.
Copies

Specify the number of copies you want to print for the above page range.

Collate Copies

Prints copies in page number order, instead of separated multiple copies of each page.

Print Quality

Select the quality of the printing.  Generally, lower quality printing takes less time to produce.


Print Progress Dialog

The Printing dialog box is shown during the time that <<YourApp>> is sending output to the printer.  The page number indicates the progress of the printing.

To abort printing, choose Cancel.


File Print Preview command
Print Preview command (File menu)

Use this command to display the active document as it would appear when printed.  When you choose this command, the main window will be replaced with a print preview window in which one or two pages will be displayed in their printed format.  The print preview toolbar offers you options to view either one or two pages at a time; move back and forth through the document; zoom in and out of pages; and initiate a print job.


Print Preview toolbar

The print preview toolbar offers you the following options:

Print

Bring up the print dialog box, to start a print job.

Next Page

Preview the next printed page.

Prev Page

Preview the previous printed page.

One Page / Two Page

Preview one or two printed pages at a time.

Zoom In

Take a closer look at the printed page.

Zoom Out

Take a larger look at the printed page.

Close

Return from print preview to the editing window.


File Print Setup command
Print Setup command (File menu)

Use this command to select a printer and a printer connection.  This command presents a Print Setup dialog box, where you specify the printer and its connection.


Print Setup dialog box

The following options allow you to select the destination printer and its connection.

Printer

Select the printer you want to use.  Choose the Default Printer; or choose the Specific Printer option and select one of the current installed printers shown in the box.  You install printers and configure ports using the Windows Control Panel.

Orientation

Choose Portrait or Landscape.

Paper Size

Select the size of paper that the document is to be printed on.

Paper Source

Some printers offer multiple trays for different paper sources.  Specify the tray here.

Options

Displays a dialog box where you can make additional choices about printing, specific to the type of printer you have selected.

Network...

Choose this button to connect to a network location, assigning it a new drive letter.


File Page Setup Command
Page Setup command (File menu)


theory
Gabor Synthesis of Recurrent Iterated Function Systems (and Acoustical Mandelbrot Sets)

Copyright (C) 1996 by Michael Gogins. All rights reserved.
55 Pineapple Street Apt. 5-F, Brooklyn NY 11201
Telephone (718) 522-0081

Abstract

The following presents a new formal system and algorithm for composing and synthesizing musical sounds globally, i.e. in one pass and without necessarily distinguishing “notes” from “timbres.” A recurrent iterated function system (RIFS) is set up, using the random iteration algorithm to accumulate the measure on its attractor, which is a fractal, in a time-frequency-phase array whose phase dimension has only two elements. After a sufficient number of iterations has smoothed out random variations in the measure, the phase values in the measure array are interpreted as the real and imaginary amplitudes of time-frequency samples in a Gabor transform. The transform is then rendered as a soundfile by taking each time column of Gabor frequency samples as the positive frequency samples in an inverse fast Fourier transform with a Gaussian window. Each time sample overlaps its leading and trailing neighbors by an interval derived from the aspect ratio of the Gabor samples. It follows from the collage theorem for measures of recurrent iterated function systems, and from the Gabor transform, that this algorithm is capable of generating any soundfile. Manipulations of RIFS codes provide novel methods of compositional manipulation and signal processing. For example, the energy in a sound may be focused more narrowly in frequency, at all frequencies simultaneously, by decreasing the frequency scaling coefficients in the sound’s RIFS code. Or given two codes, new sounds may be derived, intermediate in both form and timbre, by interpolating between the known codes. By mapping RIFS codes into a virtual parameter space, a Mandelbrot set for sounds can in theory be defined as the parametric map of connected sounds in that virtual space. The GRIFS algorithm has been embodied in a Windows program, and the paper presents the RIFS code of an illustrative composition.

Introduction

Ten years ago I saw Benoit Mandelbrot (1983) lecture on fractals. He showed maps of Julia sets, which are the chaotic boundaries of the region attracted to infinity by quadratic dynamical systems, and of the beautifully intricate Mandelbrot set, which is the set of parameters for all systems whose Julia sets are connected. I was struck by how any region in the Mandelbrot set resembles the Julia set generated from parameters in that region (Peitgen, Jürgens and Saupe 1992), and I couldn’t help but think there must be some way (I couldn’t imagine how!) to make music by exploring the Mandelbrot set.

This acoustical Mandelbrot set would be an atlas of the entire world of sound, that could be explored to any depth of scale, from the broadest continents and symmetries of musical form to the tiniest, most convoluted streams of timbre. Each point in the set would represent an entire composition in all its details: one among the infinite attractors of a single, universal, music-producing dynamical system.

Pursuit of this notion (Gogins 1991, 1992) has now yielded a new algorithm for synthesis and composition, the Gabor recurrent iterated function system (GRIFS) algorithm. The algorithm completely realizes, in sound, the dynamical system aspect of the dynamical system-Mandelbrot set duality. The algorithm also realizes, in theory, the Mandelbrot set aspect of the duality.

I have written a Windows program that uses GRIFS to display measures and render them as soundfiles. The program serves as an instrument of both composition and synthesis.

Theory

The basic problem in implementing GRIFS is to find a space that supports both the representation of sound and the generation of fractals. Sound is traditionally represented either by waveforms (amplitude by time), or by using Fourier analysis to transform coordinates and show waveforms as spectra (amplitude by frequency).

The Gabor Transform

	K-1	c0,K-1	c1,K-1	c2,K-1	cn,K-1	cN-1,K-1
	...	c0,k	c1,k	c2,k	cn,k	cN-1,k
Frequency	2	c0,2	c1,2	c2,2	cn,2	cN-1,2
(Df)	1	c0,1	c1,1	c2,1	cn,1	cN-1,1
	0	c0,0	c1,0	c2,0	cn,0	cN-1,0
		0	1	2	...	N-1
				Time
				(Dt)
Waveforms and Fourier transforms, however, are limiting, one-dimensional extremes of the more general, two-dimensional Gabor transform. It represents any sound as a sum of elementary signals that occur, with Gaussian envelopes and complex amplitudes c, at each cell of a regular time-frequency grid. These grains of sound are to the ear as pixels on a computer screen are to the eye. It is easier to see what a signal sounds like by looking at its Gabor transform, which resembles a sonogram, than its waveform or spectrum.

The rows in the grid represent discrete frequencies of size Df, and the columns represent discrete times of size Dt. If the cells are as large as possible without degrading the signal, their area is one logon, or unit of acoustical information, analogous to one quantum of action in particle physics. The time and frequency sizes of the logon are related reciprocally (Gabor 1946) by their aspect ratio, a:

Elementary signals can be taller than wide, the limit being the waveform (discrete signal in the time domain); or wider than tall, the limit being the spectrum (discrete signal in the frequency domain). The more precisely a signal’s frequency is known, the less precisely its time is known; the more precisely time is known, the less precisely frequency is known (Gabor 1946, 1947a, 1947b, Bastiaans 1980, Arfib 1991). This is like the Heisenberg uncertainty of an elementary particle’s position and momentum. The Gabor (1946a) transform is:

where y(t) is the complex amplitude of the signal at time t, n is the time column subscript, k is the frequency row subscript, and c is the complex peak amplitude of the n,kth elementary signal, whose Gaussian envelope is given by the exp term and complex sinusoidal component by the cis term.

Mapping Measures onto Transforms

Any function can be represented by the measure (i.e., density of points) of a set in a space with one dimension less than the function’s graph. Optical soundtracks use this principle to represent sound; the density of the silver is the (inverse) amplitude of the waveform.

The GRIFS algorithm uses the same principle to define a space in which measures represent Gabor transforms. The Gabor transform with complex amplitudes in a 2-dimensional space of time and frequency is represented by real amplitudes in a 3-dimensional space of time, frequency, and phase where phase has only 2 points, i.e. the real and imaginary components of the amplitudes. It seems easier to imagine how transforms sound in this 3-dimensional space than in a duplex, 2-dimensional version of the Gabor transform, which also represents sounds with real-valued amplitudes, but in bands alternating between cosine and sine phase (Gabor 1946a).

Every Gabor transform, then, is represented by a real-valued measure in 3-dimensional space. Complex, fractal measures can be generated therein by dynamical systems.

Dynamical Systems

A dynamical system is a function that is iterated, its value fed back into its argument:

Which is the same as the composition of a function with itself:

The attractor of a dynamical system is the set of points visited after infinite iterations by infinite iterations:

The system can go to a point attractor, arriving after a finite time at some local point or receding forever to the point at infinity. It can cycle around a finite set of points, or periodic attractor. Or it can orbit without ever landing twice on the same point, as a chaotic attractor, eventually filling some definite fraction of an area with points, thus creating a fractal.

For the complex quadratic dynamical system [image], if A is computed for every z and the initial z is colored by how fast it goes to infinity, the familiar map of a Julia set results, the set proper being the boundary of the colored region.

If every point in the attractor touches another point in the attractor, it is connected. Disconnected attractors may be “dusts” or consist of islands, connected within themselves, that do not touch. The Mandelbrot set for [image] is simply the set of all c for which the corresponding Julia sets are connected. The Mandelbrot set is itself connected. Although Mandelbrot discovered the set by investigating Julia sets, every parametric dynamical system has a characteristic Mandelbrot set (Barnsley 1993).

A Universal Dynamical System: Iterated Function Systems

Quadratic dynamical systems aren’t universal in the sense of generating any attractor; e.g. being quadratic, they can’t produce asymmetrical attractors. Iterated function systems, however, can. The basic concept is that of a metric space, [image]. It is simply a space, X, in which the distance between any two points can be measured by a function d. Euclidian lines, planes, and volumes are metric spaces. So is musical time and, in equal temperament, pitch.

An iterated function system (IFS) consists of a metric space together with a finite set of affine transformations acting, on the whole, to contract that space:

.

In time-frequency-phase space, for example, sounds can be manipulated by 3-dimensional transformations:

.

The Hutchinson operator W for any subset B of X is then:

.

Each transformation is applied to a set, and the result is the union of all transformations. This often multiplies the number of points in the set. Barnsley (1993) and others proved every W, if contractive, to have a unique attractor under iteration:

for any B in X. After an infinite number of contractions, [image] can get no smaller than [image], so B shrinks or otherwise moves no more. The attractor is thus the fixed point of the operator: .

The collage theorem (Barnsley 1993) proves that any compact set in a metric space can be approximated within any desired error bound by the attractor of an IFS. Intuitively, any set can be covered as precisely as desired by shrunken, just-touching affine transformations of itself. Applying those transformations to the set only leaves it in place. Any set, then, is as close as desired to the attractor of some IFS.

An iterated function system with probabilities gives to each transformation in W a probability or weight:

If the weights of the transformations differ, so will the measures of different parts of the attractor. Just as there is a collage theorem for IFS, so there is a collage theorem for measures for IFS with probabilities, proving that any measure defined on a metric space can be approximated within any desired error by the measure on an attractor of an IFS with probabilities.

Collage Theorem for Sounds. From the representation of every sound by some measure interpreted as a Gabor transform, and from the collage theorem for measures, it follows that any sound can be represented as accurately as desired by the measure on the attractor of some IFS with probabilities.

Non-self-similar attractors are more easily represented with recurrent iterated function systems (RIFS). Each transformation, instead of a single weight, has a vector of weights, one for each transformation, for the next iteration,

,

such that each vector sums to 1, and no matter what transformation is iterating, there is a finite probability of later iterating every other one. In other words, the matrix of weights is a recurrent Markov operator for the transformations in the Hutchinson operator. Again, there is a collage theorem, and a collage theorem for measures, for RIFS (Barnsley 1993).

RIFS being hierarchical, complex sounds may be built up from disjunct parts, as illustrated below.

The GRIFS Algorithm

The main methods for computing IFS are the escape time algorithm (Barnsley and Hurd 1994), the multiple copy reducing machine (MCRM) algorithm (Peitgen, Jürgens and Saupe 1992; Barnsley 1993; Barnsley and Hurd 1994), and the random iteration algorithm (Peitgen, Jürgens and Saupe 1992; Barnsley 1993).

Escape time is too slow. The MCRM suffers from rounding errors as continuous transformations of the measure array are mapped back onto that discrete array. Only random iteration is precise enough for music. But if the billions of iterations are written to external storage, the algorithm becomes impossibly slow. Hence the GRIFS algorithm is feasible only if the entire measure is kept in fast memory throughout computation.

The measure array can be rendered as a waveform directly via the parametric equation for the Gabor transform, but this also is prohibitively slow. Fortunately, if the number of frequency samples is a power of 2, the Gabor transform can efficiently be computed using the fast Fourier transform.

•	Store the number K of frequency samples in the Gabor transform, and the maximum value permitted in the measure.

•	Store the coefficients of the affine transformations in arrays indexed by transformation subscript.

•	Store the Markov weights in a matrix with as many rows as there are affine transformations, and as many columns as rows; normalize the rows to sum to 1; and store the cumulative weight for each column.

•	Create an empty soundfile of the desired duration, D, and sampling rate.

•	Find the aspect ratio of the logon:
LogonHz = (double(SAMPLING_RATE) / double(2)) / double(K);
Alpha = LogonHz * sqrt(TWO_PI);
Find the number of time samples in the Gabor transform:
LogonSeconds = sqrt(PI / double(2)) / Alpha;
MeasureTimeN = long(D / LogonSeconds);

•	Initialize an array of unsigned 16-bit integers to approximate the measure on the attractor, with as many rows as frequency samples, as many columns as time samples, and two phase samples per row.

•	Find the number of soundfile samples per Gabor time sample:
LogonSampleN = long(LogonSeconds * SAMPLING_RATE);

•	Initialize an array with 5 times that many samples for a Gaussian window that overlaps the 2 leading and trailing Gabor time samples, preventing clicks and allowing exact calculation of the Gabor transform:
Window[int(WindowSampleI)] = exp( - pow(Alpha, double(2)) * pow(WindowTimeSeconds, double(2)));

•	Initialize a point to be iterated at (0, 0), a beginning row of the Markov operator at 0, variables to store the size of the attractor at the biggest possible minima and the smallest possible maxima, and a variable to track the maximum amplitude in the measure array.

•	Iterate the system hundreds of times to draw the orbiting point into the attractor. For each iteration, generate a random number between 0 and 1. In the current row of the Markov operator, for each column, if its cumulative weight equals or exceeds the random number, apply the affine transformation corresponding to that column to the point, store the new value of the point, and take the Markov column subscript as the new row subscript.

•	Iterate the system tens of thousands of times. Whenever the orbiting point exceeds the size variables, store the new size, so that the variables converge to the size of the attractor.

•	Iterate the system. After each iteration, use the size variables to map the orbiting point onto the corresponding element of the measure array, and add 1 to the value of that element. When the amplitude of any element exceeds the maximum permitted amplitude, stop iterating.

•	For each time column in the measure array: For each frequency row in the column: Store the value of the first phase element into the real part of the corresponding Fourier coefficient, and the value of the second phase element into the imaginary part. Zero pad the other Fourier coefficients, representing negative frequencies. Compute the inverse Fourier transform. Seek in the soundfile to the time of the current Gabor time sample. Mix the waveform now stored in the real parts of the Fourier coefficients, modulated by the Gaussian window, into the soundfile. This involves cycling through the window 1 time and the Fourier coefficients 5 times, once for each overlapped Gabor time sample.

Applications

Signal Processing

Manipulating GRIFS codes affords new means of signal processing and compositional transformation. For example, decreasing all frequency scaling factors in a code increases the separation and distinctness in frequency of every feature of a sound at all frequencies simultaneously, and not in distinct bands only as with a comb filter. Or, by exchanging time factors with frequency factors, sounds may be rotated from time to frequency, clicks at different times becoming tones at different frequencies and vice versa, which is impossible with conventional time-frequency representations (Arfib and Delprat 1993).

Interpolating Sounds

GRIFS codes, despite their variable numbers of parameters, can be located in a virtual parameter space of fixed dimensionality (Gogins 1991). Such a code space is created by defining a sort order for codes and placing the lower of two codes at a low corner of the space and the higher code at a high corner. To fix dimensionality, the shorter code is zero padded so that both corners have the same number of parameters. Interpolating between the corners by sort order yields new sounds intermediate not only in timbre, but also in structure.

Acoustical Mandelbrot Sets

The Mandelbrot set aspect of the dynamical system-Mandelbrot set duality can now be defined. Set up a code space, divide it equally into many virtual parameter points, generate an attractor for each point, and color the points: Parameters whose attractors represent sounds with no gaps of silence are connected, and colored black. Parameters representing sounds that are broken with gaps of silence are colored gray or white. The more silence, the whiter the color. The black points belong to an acoustical Mandelbrot set.

The computation required to map such sets on personal computers is, unfortunately, currently impractical. The theory, however, provides a foundation for the future composition of music via the exploration of acoustical Mandelbrot sets and other parametric maps of acoustical dynamical systems.

Composing Codes for Musical Sounds

Music can now be composed by working directly with GRIFS codes. A sample measure is shown below. Its GRIFS code is made from two independent IFS sub-codes. Transitions between transformations with no Markov weight are forbidden.

The first sub-code creates a fractal triangle; null transitions open up holes in the measure, resulting in an arpeggiating tone. The second sub-code creates a fractal of sustained, shifting chords. The Markov operator excludes direct transitions between the two sub-codes, thus preserving their distinct forms. However, one identity transformation to and from both sub-codes serves to overlay them. To partially separate the sections in time, a small amount is added to each time translation of the second sub-code. Finally, some of the null transformations between the subcodes are reversed to create reduced images of each section at certain locations in the other section.

Subcode 1	a	b	c	d	e	f	g	h	i	j	k	l
Transformation	.5	0	0	0	0	.5	0	0	0	0	0	0
Transformation	.5	0	0	1	0	.5	0	0	0	0	0	0
Transformation	.5	0	0	0	0	.5	0	2	0	0	0	0
Transformation	.5	0	0	1	0	.5	0	1	0	0	0	0
Markov weight	4	4	6	Markov weight	6	4	8
Markov weight	4	5	9	Markov weight	6	5	10
Markov weight	4	7	3	Markov weight	6	6	4
Markov weight	4	1	6	Markov weight	6	7	2
Markov weight	5	4	5	Markov weight	7	4	7
Markov weight	5	5	4	Markov weight	7	6	4
Markov weight	5	7	3
Subcode 2	a	b	c	d	e	f	g	h	i	j	k	l
Transformation	.75	0	0	.25	0	.4	0	0	0	0	0	0
Transformation	.75	0	0	1.25	0	.3	0	0	0	0	0	0
Transformation	.75	0	0	.25	0	.2	0	3	0	0	0	0
Transformation	.75	0	0	1.25	0	.1	0	2	0	0	0	0
Markov weight	0	0	8	Markov weight	2	0	4
Markov weight	0	1	5	Markov weight	2	1	6
Markov weight	0	3	3	Markov weight	2	2	3
Markov weight	1	0	7	Markov weight	2	3	2
Markov weight	1	1	9	Markov weight	3	0	5
Markov weight	1	3	3	Markov weight	3	2	3
Markov weight	1	6	3	Markov weight	3	5	2
Overlay subcodes	a	b	c	d	e	f	g	h	i	j	k	l
Transformation	1	0	0	0	0	1	0	0	0	0	1	0
Markov weight	0	8	.01	Markov weight	5	8	.01
Markov weight	1	8	.01	Markov weight	6	8	.01
Markov weight	2	8	.01	Markov weight	7	8	.01
Markov weight	3	8	.01	Markov weight	8	0	1
Markov weight	4	8	.01	Markov weight	8	6	1
References

Arfib, D. 1991. “Analysis, Transformation, and Resynthesis of Musical Sounds with the Help of a Time-Frequency Representation,” in Giovanni De Poli, Aldo Piccialli, and Curtis Roads (editors), Representations of Musical Signals. Cambridge, Massachusetts: The MIT Press, pages 87-118.

Arfib, D., and N. Delprat. “Musical Transformations Using the Modification of Time-Frequency Images”, Computer Music Journal 17(2):66-72.

Barnsley, M. 1993 [1988]. Fractals Everywhere, Second Edition. Boston: Academic Press.

Barnsley, M., and L. Hurd. 1993. Fractal Image Compression. Wellesley, Massachusetts: AK Peters.

Bastiaans, M. 1980. “Gabor's Expansion of a Signal into Gaussian Elementary Signals,” Proceedings of the IEEE 68(4):538-539.

Gabor, D., 1946. “Theory of Communication,”" The Journal of the Institution of Electrical Engineers, Part III, 93:429-457.

Gabor, D. 1947a. “New Possibilities in Speech Transmission,” The Journal of the Institution of Electrical Engineers, Part III, 94(32):369-387.

Gabor, D. 1974b. “Acoustical Quanta and the Theory of Hearing,” Nature 159(1044):591-594.

Gogins, M. 1991. “Iterated Functions Systems Music,” Computer Music Journal 15(1):40-48.

Gogins, M. 1992. “How I Became Obsessed with Finding a Mandelbrot Set for Sounds”, News of Music 13:129-139.

Mandelbrot, B. 1983 [1977]. The Fractal Geometry of Nature (Updated and Augmented). New York: W. H. Freeman and Company.

Peitgen, H.-O, H. Jürgens, and D. Saupe, 1992. Chaos and Fractals: New Frontiers of Science. New York: Springer-Verlag.


menu_file
File menu commands

The File menu offers the following commands:

New	Creates a new document.
Open	Opens an existing document
Close	Closes an opened document
Save	Saves an opened document using the same file name.
Save As	Saves an opened document to a specified file name.
Print	Prints a document.
Print Preview	Displays the document on the screen as it would appear printed.
Print Setup	Selects a printer and printer connection.
Exit	Exits Gabor Recurrent Iterated Function Systems.


menu_parameters
Parameters menu commands

The Parameters menu offers the following commands:

Hutchinson Operator Dialog	Add, edit, or delete affine transformations. An affine transformation consists of a rotation and scaling matrix and a translation vector. A Hutchinson operator consists of a set of affine transformations that are applied in union to a set. As a group, the Hutchinson operator in an iterated function system should be contractive. This is generally ensured if some of the factors on the diagonal of the rotation and scaling matrices are less than 1.
Markov Operator Dialog	Assign transition probability weights to the affine transformations in the Hutchinson operator..
Soundfile Operator Dialog	Specify the duration of the soundfile in seconds, the sampling rate of the soundfile, and the number of channels. The GRIFS algorithm implemented here produces a monophonic signal, but it may be desired to create a stereophonic soundfile for subsequent editing or signal processing. Also specify the type of window used in for each frame of the overlapping inverse Fourier transforms, and the inertial radius used to compute the Gabor grain.


View menu commands

The View menu offers the following commands:

Toolbar	Shows or hides the toolbar.
Status Bar	Shows or hides the status bar.


Soundfile menu commands

The Soundfilemenu offers the following commands, which enable you to create, play, or open soundfiles:

Render	Iterate the RIFS and, when the measure on the attractor is adequately approximated, render it as a soundfile using the specified parameters.
Quit Iterating	Stop iterating and begin rendering. Used to sample the attractor at a lower resolution of sound before rendering at a higher, and slower, resolution.
Quit Rendering	Stop both iterating and rendering. Used to bail out of what appears to be a useless compuation.
Play	Use the Windows shell “play” command to run the registered player for WAV soundfiles (MPLAYER.EXE is a good choice).
Open	Use the Windows shell “open” command to run the registered editor or signal processor for WAV soundfiles.


Help menu commands

The Help menu offers the following commands, which provide you assistance with this application:

Help topics	Offers you an index to topics on which you can get help.
About	Displays the copyright and version number of this application.


File New command
New command (File menu)

Use this command to re-initialize GRIFS.

You can open an existing document with the Open command.

Shortcuts

Toolbar:
Keys:	CTRL+N


File Open command
Open command (File menu)

Use this command to open an existing file.

You can create new documents with the New command.

Shortcuts

Toolbar:
Keys:	CTRL+O


File Open dialog box

The following options allow you to specify which file to open:

File Name

Type or select the filename you want to open.  This box lists files with the extension you select in the List Files of Type box.

List Files of Type

Select the type of file you want to open:

GFS

Drives

Select the drive in which Gabor Recurrent Iterated Function Systems stores the file that you want to open.

Directories

Select the directory in which GRIFS stores the file that you want to open.

Network...

Choose this button to connect to a network location, assigning it a new drive letter.


File Save command
Save command (File menu)

Use this command to save the active document to its current name and directory.  When you save a document for the first time, GRIFS displays the Save As dialog boxso you can name your document.  If you want to change the name and directory of an existing document before you save it, choose the Save As command.

Shortcuts

Toolbar:
Keys:	CTRL+S


File Save As command
Save As command (File menu)

Use this command to save and name the active document.  GRIFS displays the Save As dialog box so you can name your document.

To save a document with its existing name and directory, use the Save command.


File Save As dialog box

The following options allow you to specify the name and location of the file you're about to save:

File Name

Type a new filename to save a document with a different name.  A filename can contain up to eight characters and an extension of up to three characters.  GRIFS adds the extension you specify in the Save File As Type box.

Drives

Select the drive in which you want to store the document.

Directories

Select the directory in which you want to store the document.

Network...

Choose this button to connect to a network location, assigning it a new drive letter.


File 1, 2, 3, 4 command
1, 2, 3, 4 command (File menu)

Use the numbers and filenames listed at the bottom of the File menu to open the last four documents you closed.  Choose the number that corresponds with the document you want to open.


File Exit command
Exit command (File menu)

Use this command to end your GRIFS session.  You can also use the Close command on the application Control menu.  GRIFS prompts you to save documents with unsaved changes.

Shortcuts

Mouse:	Double-click the application's Control menu button.
Keys:	ALT+F4


View Status Bar Command
Status Bar command (View menu)

Use this command to display and hide the Status Bar, which describes the action to be executed by the selected menu item or depressed toolbar button, and keyboard latch state. A check mark appears next to the menu item when the Status Bar is displayed.

See Status Bar for help on using the status bar.


Status Bar

The status bar is displayed at the bottom of the GRIFS window.  To display or hide the status bar, use the Status Bar command in the View menu.

The left area of the status bar describes actions of menu items as you use the arrow keys to navigate through menus.  This area similarly shows messages that describe the actions of toolbar buttons as you depress them, before releasing them.  If after viewing the description of the toolbar button command you wish not to execute the command, then release the mouse button while the pointer is off the toolbar button.

The right areas of the status bar indicate which of the following keys are latched down:

Indicator	Description
CAP	The Caps Lock key is latched down.
NUM	The Num Lock key is latched down.
SCRL	The Scroll Lock key is latched down.


Using Help command (Help menu)

Use this command for instructions about using Help.


About command (Help menu)

GRIFS: A program for computing musical soundfiles as measures on the attractors of recurrent iterated function systems. Copyright  1996 by Michael Gogins. All rights reserved.


Help Using Help Command
Context Help command

Use the Context Help command to obtain help on some portion of GRIFS.  When you choose the Toolbar's Context Help button, the mouse pointer will change to an arrow and question mark.  Then click somewhere in the GRIFS window, such as another Toolbar button.  The Help topic will be shown for the item you clicked.

Shortcut

Keys:	SHIFT+F1


Title Bar

The title bar is located along the top of a window.  It contains the name of the application and document.

To move the window, drag the title bar.  Note: You can also move dialog boxes by dragging their title bars.

A title bar may contain the following elements:

	Application Control-menu button
	Document Control-menu button
	Maximize button
	Minimize button
	Name of the application
	Name of the document
	Restore button


Size command (System menu)

Use this command to display a four-headed arrow so you can size the active window with the arrow keys.

After the pointer changes to the four-headed arrow:

1.	Press one of the DIRECTION keys (left, right, up, or down arrow key) to move the pointer to the border you want to move.
2.	Press a DIRECTION key to move the border.
3.	Press ENTER when the window is the size you want.
Note:  This command is unavailable if you maximize the window.

Shortcut

Mouse:	Drag the size bars at the corners or edges of the window.


Move command (Control menu)

Use this command to display a four-headed arrow so you can move the active window or dialog box with the arrow keys.

Note:  This command is unavailable if you maximize the window.

Shortcut

Keys:	CTRL+F7


System Minimize Command
Minimize command (application Control menu)

Use this command to reduce the GRIFS window to an icon.

Shortcut

Mouse:	Click the minimize icon [image] on the title bar.
Keys:	ALT+F9


Maximize command (System menu)

Use this command to enlarge the active window to fill the available space.

Shortcut

Mouse:	Click the maximize icon [image] on the title bar; or double-click the title bar.
Keys:	CTRL+F10 enlarges a document window.


Next Window command (document Control menu)

Use this command to switch to the next open document window.  GRIFS determines which window is next according to the order in which you opened the windows.

Shortcut

Keys:	CTRL+F6


Previous Window command (document Control menu)

Use this command to switch to the previous open document window.  GRIFS determines which window is previous according to the order in which you opened the windows.

Shortcut

Keys:	SHIFT+CTRL+F6


Close command (Control menus)

Use this command to close the active window or dialog box.

Double-clicking a Control-menu box is the same as choosing the Close command.

Note:  If you have multiple windows open for a single document, the Close command on the document Control menu closes only one window at a time.  You can close all windows at once with the Close command on the File menu.

Shortcuts

Keys:	CTRL+F4 closes a document window
	ALT+F4 closes the window or dialog box


Restore command (Control menu)

Use this command to return the active window to its size and position before you chose the Maximize or Minimize command.


Switch to command (application Control menu)

Use this command to display a list of all open applications.  Use this "Task List" to switch to or close an application on the list.

Shortcut

Keys:	CTRL+ESC
Dialog Box Options

When you choose the Switch To command, you will be presented with a dialog box with the following options:

Task List

Select the application you want to switch to or close.

Switch To

Makes the selected application active.

End Task

Closes the selected application.

Cancel

Closes the Task List box.

Cascade

Arranges open applications so they overlap and you can see each title bar.  This option does not affect applications reduced to icons.

Tile

Arranges open applications into windows that do not overlap.  This option does not affect applications reduced to icons.

Arrange Icons

Arranges the icons of all minimized applications across the bottom of the screen.