System Width Reference

The semantics of the standard names inchan and outchan
and the width specifier tokens inchannels and
outchannels have been changed.

In instrument code, and in opcodes called from instruments,
inchan and inchannels code the audio input port width,
and outchan and outchannels code the audio output port width.

In the global block, and in opcodes called from the
global block, inchan and inchannels code the
input_bus width, and outchan and
outchannels code the output_bus width.

In the startup instrument, inchan,
inchannels, outchan and outchannels take on
instrument semantics, not global block semantics.

Explicit Bus Width Syntax

The send statement syntax has been enhanced.
The new syntax option permits the explicit specification of bus
width. This option may be used to fix problems caused by
under-determined send/route meshes and unresolved instrument
output widths.

Arbitrary Width Instruments

SAOL programmers may now write instruments that may take on an
arbitrary output width, by using arrays of width outchannels
in all output statements. Loops over these arrays should
use the outchan standard name to control the loop.

The widths of these instruments are resolved in the
global block, by routing the instruments to buses whose
widths are declared using the new send statement syntax.

Specialops

The syntax and semantics of specialop core opcodes have been clarified.

Calls to specialops are legal in instrs and aopcodes,
but are illegal in kopcodes and polymorphic opcodes.

Calls to specialops in a-rate statements are legal, and have
the same return semantics as
k-rate opcode calls in a-rate statements.

Non-Effects Instr Width

Miscellaneous

Semantic clarifications for the extend statement:
the statement may not run at the a-rate, and the statement may not be
used in an effects instrument instance created by a send
statement that references the output_bus.