Description: An online book about writing applications using SAOL, the programming language of MPEG-4 Structured Audio. Includes information on the score language SASL, and on using legacy formats like MIDI Files, WAV, and AIFF with SAOL. Appendices detail SAOL language syntax, core opcodes and wavetables, standard names, and binary formats.
Keywords: John Lazzaro, John Lazaro, Jon Lazzaro, Jon Lazaro, John Lazarro, Jon Lazarro, John Lazzarro, Jon Lazzarro, John Lazzarow, John Wawrzynek, MPEG, MPEG 4, MPEG-4, MP4, MPEG-4 Structured Audio, MP4, SA, MP4-SA, MP4/SA, computational audio, structured audio, MIDI files, audio compression, music synthesis, computer music, DSP, digital signal processing, audio scripting, audio signal processing, sound signal processing, digital audio workstation, digital audio, physical models, WAV, AIFF, audio signal processing, digital signal processing, reverb, chorus, flange, sampling, hip-hop, tracker, mod tracker, content creation

# 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 Numbers and Variables Expressions and Statements Simple Core Opcodes Wavetables Buses and Execution Order #### Part III. Instrument Control The SASL Score Language MIDI Instrument Control SAOL Instrument Control #### Part IV. Advanced Opcodes Sound Synthesis Core Opcodes Filter Core Opcodes Signal Processing Core Opcodes User-Defined Opcodes #### Part V. Special Topics Debugging SAOL Programs Templates The Slib Library AudioUnit Plug-Ins #### Appendices (click for full list) Core Opcode Sorted Alphabetically Core Opcode Sorted by Opcode Type Core Wavetable Generators Standard Names Language Elements Language Rules Acknowledgements and Bibliography

Copyright 1999 John Lazzaro and John Wawrzynek.