From The MPEG-4 Structured Audio Book by John Lazzaro and John Wawrzynek.

Appendix K: COR2 Corrigenda Changes to MP4-SA

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.


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.

User-Defined Opcodes

The semantics of user-defined opcodes have been clarified in several ways.

Variables in user-defined opcodes may not have a rate faster than the rate of the opcode, and standard names faster than the opcode rate are not defined inside the opcode.

Opcode variables declared imports ksig may not serve as the target of SASL labelled control statements.

Non-Effects Instr Width

The input width of non-effects instruments is defined to be one. References to inchan and inchannels yield this value.


Error-checking clarifications for the rms and downsamp core opcodes.

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.


Return to: Appendix Cover Page

Copyright 1999 John Lazzaro and John Wawrzynek.