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

# Part IV: Advanced Opcodes

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

For an introduction to MP4-SA see the introductory tutorial presented in Part I of the book. For a complete description of the SAOL language, see Part II.

Part IV discusses advanced topics in SAOL opcodes. Opcodes provide access to an algorithm through a function call syntax.

Core opcodes are library functions that perform fixed algorithms. Part IV begins with pointers to earlier sections of the book that introduce core opcodes. Part II/3 describes core opcodes semantics and introduces 50 simple core opcodes, and Part II/4, describes an additional 16 core opcodes for wavetable playback, manipulation, and time-warping.

The first several chapters in Part IV finish the description of the core opcode library. Chapters are devoted to core opcodes that support sound synthesis algorithms, filtering operations, and signal processing operations like Fourier analysis.

The final chapter describes user-defined opcodes. We introduce the rate and width semantics for user-defined opcodes. We explain the syntax for fixed-rate and rate-polymorphic opcode call definitions, including techniques for passing variables by reference.

Part IV ends with pointers to several core opcode indices.

## Part IV: Table of Contents

#### Preamble: Links to Earlier Chapters

- Part II/3: Simple Core Opcodes
- Part II/4: Wavetables
  - Table Playback Opcodes
  - Table Manipulation Opcodes
  - Time-Warping Opcode

#### 1. Sound Synthesis Core Opcodes

- Envelope Generators. Linear and exponential waveforms.
- Subtractive Synthesis. Alias-free pulse waveforms.
- Plucked String Synthesis. Karplus-Strong synthesis.
- Granular Synthesis. Temporal wavetable method.

#### 2. Filter Core Opcodes

- FIR Filters. Table and parameter coefficients.
- IIR Filters. Biquad and arbitrary order.
- Parametric Filters. Classic filter shapes.
- Delays. Also covers oparrays.
- `allpass` and `comb`. Recirculating filters.
- `reverb`, `chorus` and `flange`. Effects opcodes.

#### 3. Signal Processing Core Opcodes

- Level Matching. Absolute and relative. Specialops.
- Window Wavetables. Generating window function tables.
- Sample Rate Conversion. Between a-rate and k-rate.
- Gain Control. Compressor/limiter/expander/noise-gate.
- Fourier Analysis. FFT and IFFT opcodes.
- Portamento. K-rate opcode for pitch changes.

#### 4. User-Defined Opcodes

- Example. Tutorial example with user-defined opcodes.
- Opcode Declarations. Parameters and variables.
- Opcode Statement Block. Return statements.
- Opcode Calls. Rate and width calling conventions.

#### Postscript: Links to Appendices

- Appendix B: Core Opcode Sorted Alphabetically
- Appendix C: Core Opcode Sorted by Opcode Type

Copyright 1999 John Lazzaro and John Wawrzynek.