A Programmer's Guide to Sound (Paperback)

Tim Kientzle

  • 出版商: Addison Wesley
  • 出版日期: 1997-10-27
  • 售價: $1,970
  • 貴賓價: 9.5$1,872
  • 語言: 英文
  • 頁數: 464
  • 裝訂: Paperback
  • ISBN: 0201419726
  • ISBN-13: 9780201419726
  • 已絕版

買這商品的人也買了...

商品描述

 

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. 0201419726T04062001


Back to Top