# The MPEG-4 Structured Audio Book

### By John Lazzaro and John Wawrzynek, CS Division, UC Berkeley.

## Introduction

MPEG-4 Structured Audio (MP4-SA) is an ISO/IEC standard (edited by Eric Scheirer) that specifies sound not as audio data, but as a computer program that generates audio when run.

One implication of this design is that encoding content in MP4-SA is a creative act, not an automatic one. Or more specifically, two creative acts:

- Sound modeling. In MP4-SA, sound happens because a program written in the SAOL (pronounced "sail") computer language outputs audio samples. The algorithms coded in SAOL may model how musical instruments (like a piano or the human voice) create sound, or may process sounds (tasks like adding reverberation or mixing instrument sounds together).

- Sound sequencing. Performance is sound moving in time: notes play in sequence to make a melody, faders sweep across a mixing console to blend a performance, etc. In MP4-SA, the score language SASL (pronounced "sassil"), the MIDI standard, and the SAOL language itself are all available to support sound sequencing.

The goal of this book is to show how to use SAOL, SASL, and the other MP4-SA tools to create these two types of content. We assume some familiarity with computer programming and algorithms, audio signal processing, and music and sound.

Next:A Tutorial Introduction.

## Table of Contents

#### Part I. A Tutorial Introduction.

#### Part II. The SAOL Language

1. Numbers and Variables
2. Expressions and Statements
3. Simple Core Opcodes
4. Wavetables
5. Buses and Execution Order

#### Part III. Instrument Control

1. The SASL Score Language
2. MIDI Instrument Control
3. SAOL Instrument Control

#### Part IV. Advanced Opcodes

1. Sound Synthesis Core Opcodes
2. Filter Core Opcodes
3. Signal Processing Core Opcodes
4. User-Defined Opcodes

#### Part V. Special Topics

1. Debugging SAOL Programs
2. Templates
3. The Slib Library
4. AudioUnit Plug-Ins

#### Appendices (click for full list)

1. Core Opcode Sorted Alphabetically
2. Core Opcode Sorted by Opcode Type
3. Core Wavetable Generators
4. Standard Names
5. Language Elements
6. Language Rules

Acknowledgements and Bibliography

Copyright 1999 John Lazzaro and John Wawrzynek.