Audio Unitは、信号の生成、処理、受信、あるいは音声ストリームのその他の操作などの、様々な目的に使用されます。 Audio Unitはブロックを構成し、単独でも、相互に接続された音声信号グラフという形態でも使用することが可能です。
Audio Unitは、一般的に音声プラグインやソフトウェアシンセサイザと見なす事ができます。また一方では、Audio Unitのグラフと音声装置の接続や、処理グラフの結果をファイルに書き出す、といった役割を持たせることも出来ます。
Audio Unitはシステム上ではコンポーネントとして表され、全てのコンポーネントはそれぞれ4 byteのcharコードからなる、コンポーネントタイプ、コンポーネントサブタイプ、製造者識別番号で区別されます。
Components allow for any application to dynamically load code that will conform to a particular set of C functions that are defined, typically by Apple, to be the set of API that a component should support. This allows for applications to expect a particular set of behaviours from particular component types, and for developers of Components to expect that their code will be exercised in particular and well understood ways.
The contract that is expressed by the Audio Unit API will therefore embody a considerable degree of expected behaviours. As such, a collection of C++ base classes is used to implement the Audio Units that are provided with any particular release of Mac OS X. In order to facilitate the deployment of Audio Units from other developers, Apple also provides these base classes in the SDK. Developers are strongly encouraged to utilise these classes for their own audio units to ensure a consistency of behaviour across a broad spectrum of audio units. Furthermore, much of the management of the state of an audio unit is managed by these base classes, thus making the task of implementing an audio unit considerably easier. Separate documentation is provided for those classes in the SDK as well.
General State Property Management
which can be seen as managing specific states of an Audio Unit and establishing listeners to changes in those properties. This embodies a considerable degree of both the subtlety and general utility of an audio unit, so the documentation for this area is quite extensive.
Rendering process
connections to other units input callbacks providing control information, such as note on events
Real-time Parameter control
This document describes the API of Audio Units, with additional documentation to describe the C++ implementation available. The implementation document presumes an understanding of the basic operational parameters of an Audio Unit, which is described herein.
There are also a number of other API services that directly use and support Audio Units. There are some utility calls in the AudioToolbox.framework that allow external client establish listeners to receive notifications when parameter values change. There is also an AUMIDIController API that provides a simple interface to map incoming MIDI messages from a designated MIDI Source to an Audio Unit's parameters. Finally, there is also an AudioUnitCarbonView component (that is declared in the AudioUnit.framework that provides a component interface to allow Audio Units to provide a UI. Apple also ships a GenericAUView component, which is a version of this component, that can be used to display a generic view of an Audio Unit's parameters. These topics are discussed here as well.
Finally, the AudioToolbox.framework provides a number of API services that are use Audio Units or are used by Audio Units. The AUGraph provides services to construct a processing graph of Audio Units. The MusicSequence and MusicPlayer objects provide an ability to schedule events, and these events can be delivered to the nodes of an AUGraph (which are in turn Audio Units). The AudioConverter is used by both the AUConverter unit and the AudioDevice Output units, in order to allow these units to perform simple conversions of audio data such as int→float or sample rate conversions. The AudioConverter provides additional functionality that is not directly relevant to Audio Units (such as the use of Audio Codecs for encoding and decoding non-PCM based audio data).