Table of Contents
Introduction.
Source Code.
About This Book.
Acknowledgements.
I. BASICS.
1. From Hollow Logs to Cyberspace.
What is Sound?Natural Sounds.Electronic Sounds.Sounds We
Hear.Digital Sounds.Other Resources.
2. Human Sound
Perception.
Frequency and Pitch.Musical Pitch.Pitch and Frequency Aren’t the
Same.Noise.Loudness, Amplitude, and Power.Overall Quality.
3.
Storing Sound Digitally.
Sampled Sound Formats.Pulse Amplitude Modulation (PAM).Pulse Width
Modulation (PWM).Pulse Code Modulation (PCM).Side Effects of
Sampling.Aliasing.Output Aliasing.Resampling.Quantization
Error.Dithering.Clipping.Floating-Point Samples.
4. A C++ Sound
Framework.
The AudioAbstract Class.Stereo.Negotiation.Reading and Writing
Integers.A SineWave Class.
II. SYSTEM SPECIFICS.
5. Player Objects.
Player Basics.Implementing the Queue.Opening an Unknown Sound
File.
6. Playing Audio on Windows.
Play.The Callback.Selecting an Audio Device.A Sample Windows
Application.
7. Playing Audio on Mac OS.
Callback.Double Buffered Sound Under Mac OS.A Sample Mac OS
Program.Playing a Mac File.
8. UNIX and the Network Audio
System.
Servers and Flows.Callbacks and Events.Configuring a Flow and
Attaching to the Server.A Sample UNIX Application.
III. COMPRESSION.
9. Audio Compression.
Lossless Compression.Non-Linear PCM.Differential PCM.Adaptive
Differential PCM.Predictor-Based Compression.Subband Coding.Human
Speech Compression.Checkpointing.Progressive Compression.
10.
Decompression Classes.
8-Bit PCM.Signed 8-Bit PCM.Unsigned 8-Bit PCM.16-Bit PCM.MSB 16-Bit
PCM.LSB 16-Bit PCM.
11. Nonlinear Sound Formats.
Logarithmic Compression.mu-Law Compression.A-Law.Properties of
Logarithmic Encodings.
12. Differential PCM.
Two DPCM Encodings.
13. IMA ADPCM Compression.
General Operation.Decompression.Compression.Practical IMA ADPCM
Decompression.Microsoft’s IMA ADPCM Variant.Apple’s IMA ADPCM
Variant.Comparing Microsoft’s and Apple’s IMA ADPCM Codecs Notes on
IMA ADPCM.Unraveling ADPCM Formats.Credits.
14. MPEG
Audio.
A Survey of the MPEG Standards.MPEG-1.MPEG-2.MPEG-3.MPEG-4.MPEG
Audio.General Structure.Managing the Byte Stream.MPE’s Frame
Header.Slots and Frames.Layer 1/Layer 2 Subband
Synthesis.Matrixing.Slow Matrixing.Fast Matrixing.Synthesis Window
Coefficients.MPEG Stereo Encoding.Layer 1.Layer 1 Allocation
Storage.Layer 1 Scale Factors.Layer 1 Sample Storage.Layer 1
Requantization and Scaling.Layer 2.Layer 2 Allocation Storage.Layer
2 Scale Factors.Reading Layer 2 Samples.Layer 2
Requantization.Layer 3.A Reader for MPEG Files.More Information.
IV. GENERAL FILE FORMATS.
15. AU File Format.
Identifying AU Files.Reading AU Files.Writing AU Files.A Simple AU
Filter.
16. VOC File Format.
Identifying VOC Files.VOC Header.Data Blocks.Terminator Block (Type
0).Sound Data Block (Type 1).Sound Continuation Block (Type
2).Silence Block (Type 3).Marker Block (Type 4).Text Block (Type
5).Repeat Loops (Types 6 and 7).Extension Block (Type 8).Extension
Block (Type 9).Other Blocks.Reading VOC Files.
17. WAVE File
Format.
Identifying WAVE Files.About RIFF and other IFF Files.An Overview
of WAVE.The WaveRead Class.Reading WAVE Files.Containers.The RIFF
WAVE Container.The fmt Chunk.Creating a Decompression Object.PCM
Data.IMA ADPCM Data.mu-Law and A-Law.Other Compression Methods.The
data Chunk.Text chunks.
18. AIFF and AIFF-C File Formats.
Identifying AIFF Files.The AiffRead Class.Reading AIFF
Files.Containers.The FORM AIFF Container.The FVER Chunk.The COMM
Chunk.PCM Data.mu-Law Data.IMA ADPCM Data.The SSND Chunk.
19.
IFF/8SVX File Format.
Identifying IFF/8SVX Files.An Overview of IFF/8SVX.Reading IFF/8SVX
Files.Overview.Containers.The FORM 8SVX Container.The VHDR
Chunk.PCM Data.Fibonacci DPCM Encoding.Exponential DPCM
Encoding.The BODY Chunk.IFF/8SVX Errata.Text Chunks.
V. MUSIC FILE FORMATS.
20. Programming Music.
Instruments.Notes.
21. Synthesizing Instruments.
Sampled Instruments.A Sine Wave Generator.Amplitude
Control.Envelope Control with Sampled Instruments.Other Types of
Envelope Control.FM and Wavetable Synthesis.Plucked
Strings.Implementing the Plucked-String Algorithm.Testing
Notes.
22. MIDI.
Standard MIDI Files.Identifying MIDI Files.MIDI Header Chunk.MIDI
Tracks.Variable-Length Integers.Delta Times.Reading MIDI
Tracks.MIDI Events.Numbering Conventions.Running Status.Managing
MIDI Events.Reading MIDI Events.Sysex Events.Meta Events.Track
Sequence Number Meta Event (Type 0).Text Meta Events (Types 1
through 15).End of Track Meta Event (Type 47).Tempo Meta Event
(Type 81).Time Signature (Type 88).Key Signature Meta Event (Type
89).Sequencer-Specific Meta Events (Type 127).MIDI
Timing.SMPTE-Based Timing.Tempo-Based Timing.General
MIDI.Downloadable Samples.A MIDI Player.Post-Processing the MIDI
Event Stream.Base and Extended MIDI.Playing a MIDI Event
Stream.MIDI Channels.Aftertouch and Pitch Wheel.Controllers and
Modes.7-Bit Controllers.14-Bit Controllers.Parameters.Channel
Modes.Implementation.MIDI Tuning.MIDI Instruments.Caveats.MIDI Wire
Protocol.Real-Time Commands.Other MIDI File Formats.
23.
MOD.
Identifying MOD Files.Amiga Sound Hardware.MOD Format
Overview.Instruments.Timing.Notes.Beats.Patterns.Play list.Format
Details.Instruments.Notes.Song Storage.Overall File
Structure.Playing MOD Files.The PlayBeat Method.Playing Notes with
Effects.Effect 0: Arpeggio.Effect 1: Slide Up.Effect 2: Slide
Down.Effect 3: Pitch Slide.Effect 4: Vibrato.Effect 5: Pitch Slide
plus Volume Slide.Effect 6: Vibrato plus Volume Slide.Effect 7:
Tremolo.Effect 8: Unused.Effect 9: Set Sample Offset.Effect 10:
Volume Slide.Effect 11: Far Jump.Effect 12: Set Volume.Effect 13:
Pattern Break (Small Jump).Effect 14/0: Set Filter.Effect 14/1:
Fine Slide Up.Effect 14/2: Fine Slide Down.Effect 14/3: Set
Glissando.Effect 14/4: Set Vibrato Waveform.Effect 14/5: Set
Finetune.Effect 14/6: Pattern Loop.Effect 14/7: Set Tremolo
Waveform.Effect 14/8: Unused.Effect 14/9: Retrigger.Effect 14/10:
Volume Up.Effect 14/11: Volume Down.Effect 14/12: Cut Note.Effect
14/13: Delay Note.Effect 14/14: Delay Pattern.Effect 14/15: Invert
Loop.Effect 15: Set Speed.
VI. AUDIO PROCESSING.
24. Fourier Transforms.
Fourier Transform Basics.Sine Waves.Measuring One Frequency at a
Time.Accounting for Phase.Implementing the DFT.Scaling.Measuring
the Entire Spectrum at Once.Small FFTs.Decomposing Long
FFTs.2-Point FFT.Four-Point FFTs.Formal Derivation of the
FFT.Programming the FFT.Speed.Playing with FFTs.Using
FFTs.Windowing.Observations.
25. Filtering.
Adding Sine Waves.FIR Filters.Designing Simple FIR
Filters.Implementing FIR Filters.Phase Shift.IIR Filters.Music
Synthesis with Filters.
II. APPENDICES.
A. About the CD-ROM.
Source Code.Project Files.Windows.Mac OS.UNIX.Others.Sample
Files.Contributed Materials.Sound Forge.Cool Edit 96.Articles on
Music Production by Donald Griffin.SoundApp.WHAM.XAudio.
B. A
Brief Introduction to C++.
Improving C: A Better struct.Toward Object-Oriented
Programming.Real OOP: Classes and Inheritance.Inheritance.Virtual
Functions.Real-World Considerations.Constructor
Initializations.Double-Colon Notation.Defining Methods in Separate
Files.C++ I/O.Operator Overloading.I/O.Miscellany.C++
Casts.References.this.Friends.
C. Coding Style.
D. Systems Used.
E. Reusing My Source Code.
Index. 0201419726T04062001About the Author
Tim Kientzle has a PhD in mathematics from the University of
California at Berkeley and has developed software for PDAs,
embedded systems, and desktop systems. In addition he has taught
mathematics, and has written numerous books and magazine articles
on software development. Currently he works as a senior technical
editor for Dr. Dobb's Journal.
0201419726AB04062001
Reviews
"I just wish this book had been available years ago." -Bobby
Prince, composer and sound designer for computer games including
Doom and Duke Nukem 3D "This is the kind of book that will stand as
one of the defining works in the specialization of audio
programming." -Gene Turnbow, senior programmer and game designer
for Sound Source Interactive, Inc. "I'm amazed at the breadth and
depth of Tim's coverage." -George Wright Information Systems,
Loyola College, Maryland