
Core Audio in Mac OS X provides world-class support for adding audio
features to your application. Whether your needs are as simple as
playing user interface alerts or as complex as creating immersive,
interactive sound environments for games—Core Audio scales with you.
Core MIDI gives you the power of a state-of-the-art MIDI studio and live
performance setup—in software.
OpenAL support lets you add immersive audio to games. Mac OS X
extensions give you additional control and flexibility.
QuickTime audio provides the Mac OS X solution for working with
audio in the context of video.
The Audio Hardware Abstraction Layer (or Audio HAL) and the I/O Kit
provide rock solid support for interfacing with consumer and
professional audio gear.
Together, these services shorten your hardware or software development
cycle and let you do things that are simply not possible on other
platforms.
Core Audio
Core Audio provides Mac OS X with an industry-leading set of audio services and capabilities:
- Very low latency I/O
- Native multichannel audio for surround sound and OpenAL support
- A systemwide plug-in architecture for effects and virtual instruments, called audio units
- A wide range of built-in codecs as well as support for writing your own codecs
- Streamlined interfaces for playing, recording, and synchronizing audio, as well as for parsing streamed audio
- Simultaneous access by multiple applications to all of the audio devices attached to a computer
The Core Audio stack is implemented on top of the Mac OS X kernel and
the I/O Kit, up through the Audio HAL and a wide range of
application-level services. Throughout Core Audio, programming
interfaces are format agnostic, enabling your application to work with
virtually any audio format out of the box.
Using Core Audio and QuickTime, Mac OS X natively supports many file
formats including AAC, AC-3, AIFC, AIFF, MP3, SD2, and WAV.
Core Audio also supports CAF, Apple's universal audio wrapper file
format that works with practically any compressed or uncompressed audio
data and supports virtually unlimited resolution, channel count, and
file size.
While Core Audio offers incredible power and flexibility, a consistent
API philosophy—based on a layered, task-focused approach—eases your
development effort as you add features to your application.
Core MIDI
Using Core Audio together with Core MIDI, you can deliver real-time MIDI
editing controls including cut, copy, paste, loop, and repeat loop. You
have full control over inspecting and manipulating MIDI events.
Core MIDI supports the multiport MIDI interface, including stream and
configuration management. You can define virtual sources and
destinations to route MIDI data among multiple applications. Core MIDI
abstracts the complexities of MIDI devices, yet gives you precise
control and low-latency I/O.
OpenAL
OpenAL (Open Audio Library) provides a high-level, cross-platform API
for 3D audio production and playback. Although tailored to the needs of
game developers, any Mac OS X application can take advantage of the
OpenAL interfaces.
The Mac OS X implementation of OpenAL corresponds to version 1.1 of the
specification, with extensions for reverb, occlusion, and obstruction.
There are also extensions for controlling audio units.
With Mac OS X Developer Tools, you get the AU Lab audio unit hosting
application. Using a virtual mixing console metaphor—and with built-in
audio units for SoundField, HRTF, spherical head, and vector panning—AU
Lab fully supports surround sound and OpenAL development.
QuickTime Audio
QuickTime audio provides the Mac OS X solution for working with audio in the context of video.
With QuickTime you can play and capture audio, compress audio data in a
variety of formats, and synchronize audio with video. For more about
QuickTime audio, see Getting Started with QuickTime.
The Audio HAL and the I/O Kit
If you are an application developer, the Audio HAL gives you complete
control over external hardware devices while insulating you from driver
details.
If you develop drivers, the C++ based I/O Kit supports your work. It
helps you forget about connections to higher levels of the audio stack
and focus on your hardware device. You just make your device a child
object of an IOAudioDevice object, initialize it, and set up your audio
data engine. You report your object's activity to the Audio HAL and Core
Audio handles the rest. You can also define a custom Audio HAL plug-in
to gain deeper access to the unique capabilities of your hardware.
If you are ready to begin learning about the APIs and tools available
on Mac OS X for Audio, go to Getting Started with
Audio, for a guided introduction and
learning path.
For news, updates and links to other ADC content related to Audio on Mac OS X, return to the Audio topic page.
Updated: 2008-03-20
|