Core Audio For Mac



Home > Store

Share|

Audio software stack on Apple devices has a considerable complexity and a rich feature set in the way that audio is routed through the system and integrates various hardware pieces. The position will involve developing and improving the software components that are responsible for both running the audio hardware and exposing audio features.

Register your product to gain access to bonus material or receive a coupon.

  • By Chris Adamson, Kevin Avila
  • Published Mar 30, 2012 by Addison-Wesley Professional. Part of the Learning series.

Best Value Purchase

  1. Create Rich, Powerful Audio Apps with Core Audio on OS X and iOS. Audio can affect the human brain in the most powerful and profound ways. Using Apple’s Core Audio, you can leverage all that power in your own Mac and iOS software, implementing features ranging from audio capture to real-time effects, MP3 playback to virtual instruments, and web radio to VoIP support.
  2. The principal framework for audio development in Mac OS X is Core Audio; it's the basis for all audio I/O. There are layers on top of it like Audio Toolbox, Audio Queue Services, QuickTime, and QTKit that you can use if you want a simplified API for common tasks.
  3. Reset Core Audio. If your audio problems continue, there may be an issue with one of your Mac’s audio interfaces which can result in various bugs including missing or distorted sound. Resetting the low-level Mac audio API, Core Audio, often resolves these problems. Click on the Spotlight search icon and search for “Terminal.”.

Book + eBook Bundle

  • Your Price: $48.59
  • List Price: $80.98
  • Includes EPUB, MOBI, and PDF
  • This eBook includes the following formats, accessible from your Account page after purchase:

    EPUBThe open industry format known for its reflowable content and usability on supported mobile devices.

    MOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

    PDFThe popular standard, used most often with the free Adobe® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.

More Purchase Options

Book

  • Your Price: $35.99
  • List Price: $44.99
  • Usually ships in 24 hours.

eBook (Watermarked)

  • Your Price: $28.79
  • List Price: $35.99
  • Includes EPUB, MOBI, and PDF
  • This eBook includes the following formats, accessible from your Account page after purchase:

    EPUBThe open industry format known for its reflowable content and usability on supported mobile devices.

    MOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

    PDFThe popular standard, used most often with the free Adobe® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.

Description

  • Copyright 2012
  • Dimensions: 7' x 9'
  • Pages: 336
  • Edition: 1st
  • Book
  • ISBN-10: 0-321-63684-8
  • ISBN-13: 978-0-321-63684-3

Audio can affect the human brain in the most powerful and profound ways. Using Apple’s Core Audio, you can leverage all that power in your own Mac and iOS software, implementing features ranging from audio capture to real-time effects, MP3 playback to virtual instruments, web radio to VoIP support. The most sophisticated audio programming system ever created, Core Audio is not simple. In Learning Core Audio, top Mac programming author Chris Adamson and legendary Core Audio expert Kevin Avila fully explain this challenging framework, enabling experienced Mac or iOS programmers to make the most of it. In plain language, Adamson and Avila explain what Core Audio can do, how it works, and how it builds on the natural phenomena of sound and the human language of audio. Next, using crystal-clear code examples, they guide you through recording, playback, format conversion, Audio Units, 3D audio MIDI connectivity, and overcoming unique challenges of Core Audio programming for iOS. Coverage includes: mastering Core Audio’s surprising style and conventions; recording and playback with Audio Queue; synthesizing audio; perform effects on audio streams; capturing from the mic; mixing multiple streams; managing file streams; converting formats; creating 3D positional audio; using Core MIDI on the Mac; leveraging your Cocoa and Objective-C expertise in Core Audio’s C-based environment, and much more. When you’ve mastered the “black arts” of Core Audio, you can do some serious magic. This book will transform you from an acolyte into a true Core Audio wizard.

Downloads

Downloads

Download the source code for the projects in each chapter of the book.

CHANGES for 'Learning Core Audio: A Hands-On Guide to Audio Programming for Mac and iOS' sample code

March 13, 2014
-------------
All projects:
With the release of Xcode 5.1 and iOS 7.1, we are updating all projects to use 'Latest OS X' or 'Latest iOS' as their target SDK, rather than risk breakage as newer versions of Xcode drop older versions of the OS X and iOS SDKs. We are also modernizing the project files to use LLVM and LLDB, the supported compiler and debugger as of Xcode 5.1.

Because it has been a source of confusion for some readers, we are also moving all Foundation-based examples to use Automatic Reference Counting (ARC). This means the downloadable code no longer matches the book, in that all uses of retain/release, autorelease pools, and explicit calls to dealloc been removed, and that toll-free bridging casts now take the appropriate __bridge modifier. But we've found that ARC is now sufficiently entrenched that some people don't recognize the pre-ARC memory management techniques.

There are no code changes other than those required to handle ARC or resolve new compiler warnings (most of which are just explicit casts). The code zip includes all errata fixes from the earlier updates posted in 2012 and 2013.

Each project now has its own README.txt file describing the project. These files include the individual changes made as part of this update.

Individual examples:

We've re-colored the piano keyboard buttons in the CH11_MIDIWifiSource .xib, since iOS 7 made them not look like buttons.

CH12_MIDIToAUSampler now includes the .aupreset file and source sound used when writing the book, though we still recommend building your own preset with AU Lab. This same preset has always been included with the CH12_MIDIToAUSamplerIOS example, since the iOS version needs to find the preset within its own app bundle, unlike OS X, which searches known filesystem paths.

Extras

Related Article

Sample Content

Online Sample Chapter

Sample Pages

Download the sample pages (includes Chapter 1 and Index)

Table of Contents

About the Authors xiii

Foreword by Mike Lee xv

Introduction 1

Audience for This Book 2

What You Need to Know 3

Looking Up Documentation 3

How This Book Is Organized 5

About the Sample Code 9

PART I: UNDERSTANDING CORE AUDIO

Chapter 1 Overview of Core Audio 13

The Core Audio Frameworks 14

Core Audio Conventions 15

Your First Core Audio Application 16

Running the Example 19

Core Audio Properties 22

Core audio driver

Summary 23

Chapter 2 The Story of Sound 25

Making Waves 25

Digital Audio 27

DIY Samples 32

Buffers 40

Audio Formats 40

Summary 41

Chapter 3 Audio Processing with Core Audio 43

Audio Data Formats 43

Example: Figuring Out Formats 46

Canonical Formats 51

Processing Audio with Audio Units 53

The Pull Model 55

Summary 55

PART II: BASIC AUDIO

Chapter 4 Recording 59

All About Audio Queues 59

Building a Recorder 60

A CheckError() Function 63

Creating and Using the Audio Queue 64

Utility Functions for the Audio Queue 71

The Recording Audio Queue Callback 75

Summary 78

Chapter 5 Playback 81

Defining the Playback Application 81

Setting Up a File-Playing Audio Queue 83

Setting Up the Playback Buffers 85

Starting the Playback Queue 88

Playback Utility Functions 89

Handling the Magic Cookie 89

Calculating Buffer Size and Expected Packet Count 90

The Playback Audio Queue Callback 91

Features and Limits of Queue-Based Playback 94

Summary 95

Chapter 6 Conversion 97

The afconvert Utility 97

Using Audio Converter Services 100

Setting Up Files for Conversion 102

Calling Audio Converter Services 105

Implementing the Converter Callback 109

Converting with Extended Audio File Services 112

Reading and Converting with Extended Audio Files 116

Core

Summary 118

PART III: ADVANCED AUDIO

Chapter 7 Audio Units: Generators, Effects, and Rendering 123

Where the Magic Happens 123

How Audio Units Work 124

Sizing Up the Audio Units 126

Your First Audio Units 129

Building the main() Function 131

Creating an Audio Unit Graph 133

Setting Up the File Player Audio Unit 137

Speech and Effects with Audio Units 141

Building Blocks of the Speech Synthesis Graph 142

Creating a Speech Synthesis AUGraph 144

Setting Up a Speech Synthesizer 146

Adding Effects 147

Adding Your Code to the Audio Rendering Process 150

The Audio Unit Render Cycle 150

A Custom Rendering Example 151

Creating and Connecting Audio Units 154

The Render Callback Function 155

Summary 160

Chapter 8 Audio Units: Input and Mixing 161

Working with I/O Input 161

Connecting Input and Output Units 164

Creating an AUHAL Unit for Input 168

Writing the Input Callback 176

Building an AUGraph to Play Samples from a CARingBuffer 178

Writing the Play-Through App’s Render Callback 181

Core Audio Driver For Mac

Running the Play-Through Example 182

Mixing 183

Summary 189

Chapter 9 Positional Sound 191

Sound in Space 191

The OpenAL API 193

Putting a Sound in Space 196

Setting Up the Example 197

Using OpenAL Objects 200

Animating the Source’s Position 205

Loading Samples for an OpenAL Buffer 206

Streaming Audio in OpenAL 210

Setting Up the OpenAL Streaming Example 210

Setting Up an ExtAudioFile for Streaming 215

Refilling the OpenAL Buffers 217

Summary 220

PART IV: ADDITIONAL TOPICS

Chapter 10 Core Audio on iOS 223

Is That Core Audio in Your Pocket? 223

Playing Nicely with Others: Audio Session Services 224

An Audio Session Example 227

Setting Up the App 227

Initializing the Audio Session and Audio Queue 231

The Tone Generator Method 234

Handling iOS Interruptions 236

Audio Units on iOS 238

Building an Audio Pass-Through App with the iOS RemoteIO Unit 239

Setting Up the Pass-Through Example 241

Setting Up the RemoteIO Audio Unit for Capture and Play-Out 244

The RemoteIO Render Callback 249

Other iOS Audio Tricks 253

Remote Control on iOS 253

IOS Hardware Hazards 254

Summary 254

Chapter 11 Core MIDI 257

MIDI Concepts 257

Core MIDI 258

Core MIDI Architecture 258

Core MIDI Terminology 258

Core MIDI Properties 260

MIDI Messages 260

Instrument Units 261

Building a Simple MIDI Synthesizer 262

Connecting to MIDI 265

Handling MIDI Notifications and Events 267

Playing Your AUGraph 269

Creating MIDI Events 269

Setting Up the MIDIWifiSource Example 269

Setting Up MIDI over Wi-Fi 271

Sending MIDI Messages 273

Setting Up Your Mac to Receive Wi-Fi MIDI Data 275

Summary: MIDI Mastery … but Mobility? 277

Chapter 12 Coda 279

Still More Core Audio 279

Next Steps 280

Digital Signal Processing 280

Lion and iOS 5 281

AUSampler 281

Core Audio on iOS 5 285

The Core Audio Community 286

Summary: Sounds Good 287

Index 289


Updates

Mac Core Audio Driver Update

Errata

Submit Errata

More Information

  • Request an Instructor or Media review copy.

Other Things You Might Like

  • eBook (Watermarked) $28.79

Core Audio Mac Download High Sierra

  • Book $35.99

Core Audio For Mac

  • Book $39.99