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

Appendix F: Language Rules

Atomic Elements

How to form correct numbers. How to form correct names for variables and other elements in SAOL, including user-defined opcodes.

Bus Rules

How to determine the width of the audio input port and the audio output port of an instrument. How to determine the execution order of the instruments in a SAOL program, and how to use this ordering to determine the width of user-defined buses.

Decoder Execution Order

Table introducing the execution cycle (i-pass, k-pass, and a-pass code synchronized to decoder k-cycles and a-cycles). How to determine the execution order of the instruments in a SAOL program. Introduction and detailed description of how this ordering impacts the execution of a SAOL program.

Opcode Call Semantics

The calling semantics for core opcodes are introduced early in the book, and summarized in a table. Near the end of the book, we explain the calling semantics for user-defined opcodes. Oparray calling are introduced as part of the fracdelay core opcode description. The special semantics of specialop opcodes are introduced during the discussion of the 5 core opcodes that are specialop.

Opcode Definitions

Rules for legal user-defined opcodes that result in useful computation are divided into rules for declaring useful parameters and variables and rules for statement blocks.

Parameter Lists

How to form correct parameter lists for instruments and user-defined opcodes.

Pitch Types

A conversion table shows the four ways to represent pitch in SAOL.


The precedence table for SAOL expressions. See also this explanation of the concept of precedence.

Statement Semantics

Rate semantics for assignment , if and if-else, and while statements, as well as a summary table for these three statements. Rate and width semantics for the bus and audio output, outbus, and spatialize statements. Rate and width semantics of control-oriented instr, extend, and turnoff statements. The user-defined opcode chapter explains the rate and width semantics of the return statement.

Appendix G: COR 1 SAOL changes

Copyright 1999 John Lazzaro and John Wawrzynek.