Spaghetti v.0.96 - a graphic Csound orchestra builder
© 1999 Riccardo Bianchini

Spaghetti is a shareware tool to build Csound orchestra by assembling and connecting objects.
Why "Spaghetti"?
Building an orchestra
Compiling an orchestra
Executing an orchestra
Blocks
Special UGs
Designing your own Ugs
Registration

MENU
 
File
Open File (spa)
Save File (spa)
New File
Insert File
Save selected Block
Load Block
Exit
Edit
Select
Delete UG
Add vertical offset
Scale vertical
Instruments
Add Instrument Division
Remove Instrument Division
Compile Orc
Edit Score
View
Texts
MIDI Control
Options
Autogenerate Variables
Autoredraw Connections
Straight Line Connections
Compile/Save orc at each change
Name Block
Settings
Show UG Properties
Show Variables
Debug
Help
Help
Quick Hints
About
Register


The Author:
Riccardo Bianchini
Professor, School of Electronic Music
Conservatorio «S.Cecilia», Rome, Italy

rb@fabaris.it
http://www.fabaris.it/bianchini
http://www.geocities.com/Heartland/Acres/4768



Why "Spaghetti"?
1) Because a complex patch looks very much like a dish of spaghetti with tomato sauce, with all its intertwining red lines;
2) Because with this name it should be clear enough where this program comes from!

Building an Orchestra
Building an orchestra consists of three steps:
1. Choosing an UG;
2. Assigning variables to its inputs and to its outputs;
3. Connecting UGs outputs to UGs inputs.
UG appearence: input pads are red, while ouput pads are blue.
Choosing an UG: simply choose an UG in the list box on the left double-clicking on it, or selecting it with the mouse or arrow keys and hitting <Enter>. Its icon will appear in the working area (upper left). To move it, click once to select it, then drag it in its new position. Alternately, once selected an UG, instead of dragging, click on one of the four spin buttons over the writing Move selected UG.
Assigning variables: Shift-click on one of the input or output pad of the UG. A yellow text box will appear, in which you can write the name of a variable or an expression. To close the text box, hit <Enter>.
Connecting two Ugs: Control-click on an output pad; the mouse pointer will change to a vertical arrow, allowing you to click (NOT Control-click) on an input pad, completing the connection.
To disconnect  two UGs, simply Control-click with the right button on the input pad you want to disconnect.


Compiling an orchestra
To compile an orchestra, choose Compile to Window from menu Compile Orc . This will display your orchestra in a window, so that you can view, edit and save it.


Executing an Orchestra
If you are sure that your orchestra does not contain errors. you can click on Execute button, to open the Perf window. In this window you can choose the Csound executable, the orchestra, the score, the name of resultimg audio file, and the flags to Csound command line. These parameters will be saved in a configuration file, so that you will find them unchanged in your next session with Spaghetti.

File Menu
Open File
Open an existing file (extension SPA)

Save File
Save current setting in a SPA file

New File
Clear workspace so that you can build a new orchestra from scratch

Insert File
Insert an existing SPA file in your current workspace, without deleting anything. You will be prompted to click in workspace to determine the vertical position at which the file will be inserted.

Save selected block
Once loaded and edited a block, you can save it (as a file with extension .BLK).

Load Block
Load a BLK file from disk. You will be prompted to click in workspace to determine the position at which the block will be inserted.

Exit
Exit Spaghetti


Edit Menu
Select
Allow selecting multiple UGs by clicking and dragging

Delete UG
Delete selected UG

Add Vertical Offset
You will be prompted to enter a vertical offset by which ALL Ugs will be moved (positive to move down, negative to move up).

Scale Vertical
You will be prompted to enter a multiplication factor, by which all vertical positions will be multiplied. It is useful to vertical compress/enlarge your orchestra.


Instrument Menu
Add Instrument Division
Add a vertical line to separate different instruments in the same orchestra

Remove Instrument Division
Remove selected vertical instrument division


Compile Menu
Compile to Window
Compile and display your orchestra in a window, so that you can view and edit it. You can also save this orchestra to a file, or directly to the default file «csgraph.orc», for fast executing.

Edit Score Menu
Edit Score
Open a simple text editor to edit an orchestra. You can also open and save a score with default name «csgraph.sco» for fast executing.

View Menu
Texts
Display variable names in workspaces, close to each pad

Options Menu
Autogenerate Variables
When this option is checked, each time you insert an UG, output variables will be automatically generated and assigned.

Autoredraw Connections
When this option is checked, each time you ask to redraw the orchestra, connections too will be redrawn. This could be a lengthy process, depending on orchestra complexity and on your computer speed.

Straight Line Connections
By default, Spaghetti connects UGs by horizontal/vertical lines; if this option is selected, Spaghetti simply connects UGs by straight lines.

Save orc at each change
If this option is activated, your orchestra will be compiled and saved as «csgraph.orc» at each change.

Autodisplay Texts
When this option is checked, each time you ask to redraw the orchestra, texts too will be displayed. This could be a lengthy process, depending on orchestra complexity and on your computer speed.

Name block
You can assign a name to a block, which will be displayed on the UG.

Show UG properties
In a separate window you can see:
UG Name
Generated code
Number of inputs

Settings
The required settings are:
Csound executable path and name;
Csound flags;
Real time flag;
Orchestra path;
Score path;
Wave file path;
Default Browser (to display this help)

Show Variables
List all used variables



Redraw Button
Redraw entire orchestra. If Autocompile/Save check box is selected, your orchestra will be immediately compiled and saves as «csgraph.orc», allowing you to run Csound by clicking button GO.


Execute Button
Open the Perf Window, that allows you to set orchestra, score and Wave file, to run Csound and to listen to generated Wave file.


GO Button
If your orchestra has been saved (the ‘LED’ is green), this button is enabled, and clicking it will immediately run Csound with «csgraph.orc» and «csgraph.sco».


Blocks
«Blocks» can consist of more than one UG, and can generate more than one line of orchestra. You can think of a block as a macro. For example, a block can consist of:

a1 oscil p4, p5, 1
a2 tone a1, p5*6

Such a block will have two inputs (p4, p5) and one output (a2).
When you ALT-click a block to edit it, a multiline text-box will appear, allowing you to enter more than one line. To insert a new line, type <CTRL-ENTER>. You are not allowed to insert TABs in a block text.



Special UGs
There are some special Ugs, that do not have a corresponding opcode in Csound:
dummy and dummyx are connections with one input and one output. The output simply repeats the input. These UGs do not generate any code. Their use is to simplify connections. dummyx is identical to dummy, but its input is on its lower side, while output is on its upper side.


Designing your own UGs
You can design your own UGs following these simple instructions:
1. Draw your UG and save it as a Windows bitmap (for example, with Paint)
2. Run CSGDETECT.EXE program, and:
a. click on input pads
b. select ‘Output’ radio button and click in turn on output pads
c. specify the type of output variable(s) (i, k, or a)
d. add to file UGS.TXT the definition generated by CSGDETECT.EXE
3. If you want to put multiline code in it, separate each line with <|>. Example:
a1 oscil iamp,ifreq,ifno|a2 reson a1,icf,ibw


Shareware

Mantaining and correcting Spaghetti bugs is becoming more and more difficult, so I decided to put it in SHAREWARE.
Spaghetti is a shareware program. You can register by sending US$ 30 or 50,000 Italian Lire or 26 Euro  to the following address:

 Riccardo Bianchini
 via Ternana, 108
 02034 MONTOPOLI S. (RI)
 (ITALY)

or sending the same amount on my bank account:
cc 18005, Agenzia 5 di Roma, Banca Nazionale del Lavoro (1005-03205-18005)

and (optionally) sending a E-Mail to

 rb@fabaris.it

putting as a subject «Spaghetti registration».

As soon as you have registered, you will receive (with the fastest method) your registration code and information on upgrades. Unregistered version has the same features than the registered one, but you can use a maximum of 16 UGs.

Shareware License Agreement

A limited license at no charge is granted to all users to test, evaluate, and duplicate the shareware version of Spaghetti (identified by the "UNREGISTERED" message on the program title bar) for a period of 30 calendar days.
Thereafter, if you did not register the software, by sending Riccardo Bianchini the appropriate fee, you must either pay the registration fee to continue to use the software or cease all use of the software.

Registered License Agreement

If you have registered Spaghetti, by sending Riccardo Bianchini the appropriate fee, and you are in possession of a registration number, you are granted a non-exclusive license to use the software by one person at any one time.
If used on a network, provisions must be made to restrict its simultaneous use to the number of licenses purchased.
Licensed copies of the software may only be kept on computers owned by the license owner.
Reasonably backup copies are permitted.  The transfer of the license may be made at any time by notifying Riccardo Bianchini.

Limited Warranty

This software and manual are distributed and licensed on an "as is" basis. Defective diskettes will be replaced for a period of ninety (90) days from the date that you received the registered version of the software.
Should you encounter problems with the software,  Riccardo Bianchini´s entire liability shall be, at the sole option of Riccardo Bianchini, either (a) to terminate the license and return any license fees that you paid Riccardo Bianchini for the software, or (b) repair or replace the software. Riccardo Bianchini makes no claims as to the suitability of this software for any specific use.
In no event shall Riccardo Bianchini be liable for any damages whatsoever arising out of the use of this software.