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