
EXPRESSIONS:

Expressions may be composed to any depth from the components shown above.

Each sub-expression (part of an expression) is evaluated at its own proper
rate.  For instance, if the terms within a sub-expression all change at the
control rate or slower, the sub-expression will be evaluated only at the
control rate; that result might then be used in an audio-rate evaluation.

Examples:
.nf

	k1 + abs(p5/2 + sqrt(k2))
	int(p5) + frac(p5) * 100/12

.fi
The above are legal expressions.  They may be placed in unit generator
argument positions or be part of an assignment statement (q.v.).



STATEMENT TYPES:

There are nine statement types, each of which provides a heading for the
descriptive sections that follow in this document:
.nf

	assignment statements
	orchestra header statements
	instrument block statements
	program control statements
	duration control statements
	signal generator statements
	signal modifier statements
	signal display statements
	soundfile access statements
.fi



INTERPRETIVE NOTE:

Throughout this document, opcodes are indicated in \fBboldface\fR and
their argument and result mnemonics, when mentioned in the text, are given in
\fIitalics\fR.  Argument names are generally mnemonic (\fIamp, phs\fR),
and the result is denoted the letter \fIr\fR.  Both are preceded by a
type qualifier \fIi, k, a\fR or \fIx\fR (e.g. \fIkamp, iphs, ar\fR).
The prefix \fIi\fR denotes scalar values valid at note Init time;
prefixes \fIk\fR or \fIa\fR denote control (scalar) and audio (vector)
values, modified and referenced continuously throughout performance
(i.e. at every control period while the instrument is active).
Arguments are \fIused\fR at the prefix-listed times; results are \fIcreated\fR
at their listed times, then remain available for use as inputs elsewhere.
The validity of inputs is defined by the following:
.br
.in 4
arguments with prefix \fIi\fR must be valid at Init time;
.br
arguments with prefix \fIk\fR can be either control or Init values
(which remain valid);
.br
arguments with prefix \fIa\fR must be vector inputs;
.br
arguments with prefix \fIx\fR may be either vector or scalar (the
compiler will distinguish).
.br
.in 0
All arguments, unless otherwise stated, can be expressions whose results
conform to the above.

Most opcodes (such as \fBlinen\fR and \fBoscil\fR) can be used in more than
one mode, which one being determined by the prefix of the result symbol.
.bp
