Because Knetbooks knows college students. Our rental program is designed to save you time and money. Whether you need a textbook for a semester, quarter or even a summer session, we have an option for you. Simply select a rental period, enter your information and your book will be on its way!
| About the Authors | p. xiii |
| Foreword | p. xv |
| Introduction | p. 1 |
| Audience for This Book | p. 2 |
| What You Need to Know | p. 3 |
| Looking Up Documentation | p. 3 |
| How This Book Is Organized | p. 5 |
| About the Sample Code | p. 9 |
| Understanding Core Audio | |
| Overview of Core Audio | p. 13 |
| The Core Audio Frameworks | ... MOREp. 14 |
| Core Audio Conventions | p. 15 |
| Your First Core Audio Application | p. 16 |
| Running the Example | p. 19 |
| Core Audio Properties | p. 22 |
| Summary | p. 23 |
| The Story of Sound | p. 25 |
| Making Waves | p. 25 |
| Digital Audio | p. 27 |
| DIY Samples | p. 32 |
| Buffers | p. 40 |
| Audio Formats | p. 40 |
| Summary | p. 41 |
| Audio Processing with Core Audio | p. 43 |
| Audio Data Formats | p. 43 |
| Example: Figuring Out Formats | p. 46 |
| Canonical Formats | p. 51 |
| Processing Audio with Audio Units | p. 53 |
| The Pull Model | p. 55 |
| Summary | p. 55 |
| Basic Audio | |
| Recording | p. 59 |
| All About Audio Queues | p. 59 |
| Building a Recorder | p. 60 |
| A CheckError() Function | p. 63 |
| Creating and Using the Audio Queue | p. 64 |
| Utility Functions for the Audio Queue | p. 71 |
| The Recording Audio Queue Callback | p. 75 |
| Summary | p. 78 |
| Playback | p. 81 |
| Defining the Playback Application | p. 81 |
| Setting Up a File-Playing Audio Queue | p. 83 |
| Setting Up the Playback Buffers | p. 85 |
| Starting the Playback Queue | p. 88 |
| Playback Utility Functions | p. 89 |
| Handling the Magic Cookie | p. 89 |
| Calculating Buffer Size and Expected Packet Count | p. 90 |
| The Playback Audio Queue Callback | p. 91 |
| Features and Limits of Queue-Based Playback | p. 94 |
| Summary | p. 95 |
| Conversion | p. 97 |
| The afconvert Utility | p. 97 |
| Using Audio Converter Services | p. 100 |
| Setting Up Files for Conversion | p. 102 |
| Calling Audio Converter Services | p. 105 |
| Implementing the Converter Callback | p. 109 |
| Converting with Extended Audio File Services | p. 112 |
| Reading and Converting with Extended Audio Files | p. 116 |
| Summary | p. 118 |
| Advanced Audio | |
| Audio Units: Generators, Effects, and Rendering | p. 123 |
| Where the Magic Happens | p. 123 |
| How Audio Units Work | p. 124 |
| Sizing Up the Audio Units | p. 126 |
| Your First Audio Units | p. 129 |
| Building the main() Function | p. 131 |
| Creating an Audio Unit Graph | p. 133 |
| Setting Up the File Player Audio Unit | p. 137 |
| Speech and Effects with Audio Units | p. 141 |
| Building Blocks of the Speech Synthesis Graph | p. 142 |
| Creating a Speech Synthesis AUGraph | p. 144 |
| Setting Up a Speech Synthesizer | p. 146 |
| Adding Effects | p. 147 |
| Adding Your Code to the Audio Rendering Process | p. 150 |
| The Audio Unit Render Cycle | p. 150 |
| A Custom Rendering Example | p. 151 |
| Creating and Connecting Audio Units | p. 154 |
| The Render Callback Function | p. 155 |
| Summary | p. 160 |
| Audio Units: Input and Mixing | p. 161 |
| Working with I/O Input | p. 161 |
| Connecting Input and Output Units | p. 164 |
| Creating an AUHAL Unit for Input | p. 168 |
| Writing the Input Callback | p. 176 |
| Building an AUGraph to Play Samples from a CARingBuffer | p. 178 |
| Writing the Play-Through App's Render Callback | p. 181 |
| Running the Play-Through Example | p. 182 |
| Mixing | p. 183 |
| Summary | p. 189 |
| Positional Sound | p. 191 |
| Sound in Space | p. 191 |
| The OpenAL API | p. 193 |
| Putting a Sound in Space | p. 196 |
| Setting Up the Example | p. 197 |
| Using OpenAL Objects | p. 200 |
| Animating the Source's Position | p. 205 |
| Loading Samples for an OpenAL Buffer | p. 206 |
| Streaming Audio in OpenAL | p. 210 |
| Setting Up the OpenAL Streaming Example | p. 210 |
| Setting Up an ExtAudioFile for Streaming | p. 215 |
| Refilling the OpenAL Buffers | p. 217 |
| Summary | p. 220 |
| Additional Topics | |
| Core Audio on iOS | p. 223 |
| Is That Core Audio in Your Pocket? | p. 223 |
| Playing Nicely with Others: Audio Session Services | p. 224 |
| An Audio Session Example | p. 227 |
| Setting Up the App | p. 227 |
| Initializing the Audio Session and Audio Queue | p. 231 |
| The Tone Generator Method | p. 234 |
| Handling iOS Interruptions | p. 236 |
| Audio Units on iOS | p. 238 |
| Building an Audio Pass-Through App with the iOS RemoteIO Unit | p. 239 |
| Setting Up the Pass-Through Example | p. 241 |
| Setting Up the RemoteIO Audio Unit for Capture and Play-Out | p. 244 |
| The RemoteIO Render Callback | p. 249 |
| Other iOS Audio Tricks | p. 253 |
| Remote Control on iOS | p. 253 |
| iOS Hardware Hazards | p. 254 |
| Summary | p. 254 |
| Core MIDI | p. 257 |
| MIDI Concepts | p. 257 |
| Core MIDI | p. 258 |
| Core MIDI Architecture | p. 258 |
| Core MIDI Terminology | p. 258 |
| Core MIDI Properties | p. 260 |
| MIDI Messages | p. 260 |
| Instrument Units | p. 261 |
| Building a Simple MIDI Synthesizer | p. 262 |
| Connecting to MIDI | p. 265 |
| Handling MIDI Notifications and Events | p. 267 |
| Playing Your AUGraph | p. 269 |
| Creating MIDI Events | p. 269 |
| Setting Up the MIDIWifiSource Example | p. 269 |
| Setting Up MIDI over Wi-Fi | p. 271 |
| Sending MIDI Messages | p. 273 |
| Setting Up Your Mac to Receive Wi-Fi MIDI Data | p. 275 |
| Summary: MIDI Mastery … but Mobility? | p. 277 |
| Coda | p. 279 |
| Still More Core Audio | p. 279 |
| Next Steps | p. 280 |
| Digital Signal Processing | p. 280 |
| Lion and iOS 5 | p. 281 |
| AUSampler | p. 281 |
| Core Audio on iOS 5 | p. 285 |
| The Core Audio Community | p. 286 |
| Summary: Sounds Good | p. 287 |
| Index | p. 289 |
| Table of Contents provided by Ingram. All Rights Reserved. |