A Programmer's Guide to Sound
Addison Wesley
978-0-201-41972-6 (ISBN)
- Titel ist leider vergriffen;
keine Neuauflage - Artikel merken
Author appearance "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 A Programmer's Guide To Sound provides detailed technical information about audio storage, processing, and compression, and includes tested C++ source code. Developers who want to add sound technology to their applications will find all the details they need to: *access low-level sound services on Win32, Mac OS, and UNIX *decompress MPEG, IMA ADPCM, and A A -Law data *read from WAVE, VOC, AIFF, and AU file formats *play MIDI and MOD music files. This book also includes accessible introductions to related topics, such as instrument synthesis, musical tuning, human sound perception, digital filtering, and Fourier Transforms.Developers will especially appreciate the emphasis placed on practical details.
For every topic, the author provides complete source code to demonstrate the principles involved. The source code from the book compiles into a sample program that reads and plays a wide variety of different sound files on Win32, Mac OS, and UNIX. The CD-ROM includes all 40,000 lines of source code from the book, in addition to project files for popular compilers, sample sound files, and contributed software and related information. Whether you are an audio professional who wants to learn more about programming or a computer programmer who wants to know more about implementing audio, this comprehensive resource will be an invaluable reference for years to come. 0201419726B04062001
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
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. 0201419726T04062001
Erscheint lt. Verlag | 2.1.1998 |
---|---|
Verlagsort | Boston |
Sprache | englisch |
Maße | 232 x 187 mm |
Gewicht | 762 g |
Themenwelt | Mathematik / Informatik ► Informatik ► Grafik / Design |
ISBN-10 | 0-201-41972-6 / 0201419726 |
ISBN-13 | 978-0-201-41972-6 / 9780201419726 |
Zustand | Neuware |
Haben Sie eine Frage zum Produkt? |