### 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. ## Precedence 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.