The MP4-SA Book: Part IV: Advanced Opcodes
Description: Advanced Opcodes in SAOL. Covers the core opcodes not discussed in Part II of the book. Describes user-defined opcodes.
Keywords: MP4-SA, SAOL, language, MIDI, SASL, core opcodes, user-defined opcodes, polymorphic opcodes, return, return statement, specialop, oparray, kline, aline, kexpon, aexpon, kphasor, aphasor, pluck, buzz, grain, port, hipass, lopass, bandpass, bandstop, biquad, allpass, comb, fir, iir, firt, iirt, fft, ifft, rms, gain, balance, compressor, sblock, decimate, upsamp, downsamp, samphold, delay, delay1, fracdelay, reverb, chorus, flange

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