ダウンロード可能な Audio Unit 関連のサンプルコード11個

Audio Unit は、iOS の Core Audio においてもっとも低レベル（ハードウェアより）に位置するフレームワークです。そのため低レイテンシを要求されるオーディオ処理機能を提供するアプリに向いています。

「ユニットをつなげて複雑なオーディオ処理を実現する」というしくみ（AUGraph）を持っており、まるでギターのエフェクターをつないで音をつくるようにユニット同士を結合できて、実装していて楽しいフレームワークでもあります。

ただ API は全部 C ベースだし、音を再生するだけでも（AVAudioPlayer 等と比較すると）複雑だったりするので、参考になるサンプルをいろいろと集めてみました。

- どの Audio Unit を使用しているか（kAudioUnitSubType_xxxx で判断）
- どういうサンプルか
- 最終更新はいつか

の観点からまとめています。

使用ユニットの項目で、そのユニットを使用しているサンプルが他にない場合は、貴重なサンプルである、という意味をこめて**太字**にしています。




##[iPhoneMultichannelMixerTest](https://developer.apple.com/library/ios/#samplecode/iPhoneMultichannelMixerTest/)

【使用ユニット】

- Remote IO (kAudioUnitSubType_RemoteIO)
- Multi Channel Mixer (kAudioUnitSubType_MultiChannelMixer)

【サンプル概要】

on/offとボリュームをチャンネル毎に変えられる、2チャンネルのミキサー。

![ss](http://f.cl.ly/items/232y0c1e0a1c0L2w0G2y/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2013-02-20_16.02.06_.png)

オーディオファイルの再生と、複数チャンネルを扱いたい場合に参考になります。

【最終更新日】

2010-07-07

##[Audio Mixer (MixerHost)](https://developer.apple.com/library/ios/#samplecode/MixerHost/)

【使用ユニット】

- Remote IO (kAudioUnitSubType_RemoteIO)
- Multi Channel Mixer (kAudioUnitSubType_MultiChannelMixer)

【サンプル概要】

on/offとボリュームをチャンネル毎に変えられる、2チャンネルのミキサー。

![ss](http://f.cl.ly/items/3w3q0Q0I3e0m260L3q3X/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2013-02-20_16.10.41_.png)

サンプルの機能としては、上の "iPhoneMultichannelMixerTest" とまったく同じに見えるけど、なぜこの２つが存在するのでしょうか。。

こっちは、そのままビルドするとエラーになるので、xibをちょっといじる必要があります。

【最終更新日】

2010-07-27




【最終更新日】

2011-10-12

##[AVCaptureAudioDataOutput To AudioUnit iOS](http://developer.apple.com/library/ios/#samplecode/AVCaptureToAudioUnit/)


【使用ユニット】

- **Delay (kAudioUnitSubType_Delay)**
- Converter (kAudioUnitSubType_AUConverter)

【サンプル概要】

AVFoundation の AVCapture で録音した音声に、Audio Unit でディレイエフェクトをかけ、ExtAudioFile でファイル出力するサンプル。

![ss](http://f.cl.ly/items/3w293V3f1X001Y1l1G1z/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2013-02-20_17.15.24_.png)

Audio Unit の Delay Unit を取り扱っているのは今回紹介する中では唯一、という点だけでも貴重なサンプルですが、AVCaptureSession の `captureOutput:didOutputSampleBuffer:fromConnection:` で取得した波形データを Audio Unit に渡してエフェクトをかける方法、Audio Unit から `ExtAudioFileWriteAsync` でファイル出力する方法、どっちも重要なので、**見た目は地味ですがコードはとても参考になる**サンプルとなっています。

【最終更新日】

2012-10-08

##[DrumMachine](https://github.com/7gano/augraph_demo/tree/master/02-DrumMachine)

【使用ユニット】

- Sampler (kAudioUnitSubType_Sampler)
- Remote IO (kAudioUnitSubType_RemoteIO)


【サンプル概要】

Sampler Unit を使用した TR909（ドラムマシン）的なサンプルアプリ。4つの音をタイムライン上でon/offすることでリズムを作る。

![ss](http://f.cl.ly/items/3C1x40321G3v3A3f0Y0y/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2013-02-23_9.03.34_.png)

ちなみに作者は Core Audio本の著者である永野さん。


【最終更新日】

2013-02-23


##[Sampler Unit Presets (LoadPresetDemo)](https://developer.apple.com/library/ios/#samplecode/LoadPresetDemo/)

【使用ユニット】

- Sampler (kAudioUnitSubType_Sampler)
- Remote IO (kAudioUnitSubType_RemoteIO)

【サンプル概要】

楽器を切り替えるボタンと、Low, Mid, High の音を鳴らすボタンをもつサンプラー。

![ss](http://f.cl.ly/items/3c0f140y3t09130F2A3W/IMG_3332_.png)

Sampler Unit を使用するものは他にもありますが、AUPreset ファイル（拡張子.aupreset）なるものを使用する点では唯一のサンプルです。（中身見たけどどういう調整をするものなのかよくわかりませんでした。DJとかやる人はピンとくるのかも。）


##Reverb

※ [iOS5プログラミングブック](http://www.amazon.co.jp/exec/obidos/ASIN/4844332228/22301-22/ref=nosim/)のサンプル。ダウンロードURLは書籍をご参照ください。

【使用ユニット】

- Remote IO (kAudioUnitSubType_RemoteIO)
- Converter (kAudioUnitSubType_AUConverter)
- **Reverb2 (kAudioUnitSubType_Reverb2)**
- Multi Channel Mixer (kAudioUnitSubType_MultiChannelMixer)

【サンプル概要】

マイクから入力された音声にリバーブをかけるサンプル。

![ss](http://f.cl.ly/items/203j112e0J3Y1Y3z3y1K/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2013-02-20_16.40.29_.png)

唯一の Reverb2 のサンプル。マイク入力、エフェクト、マルチチャネルミキサーと、Audio Unit の基本が学べて、リバーブのパラメータをいろいろいじれて楽しい好サンプルです。

書籍の方も、AUGraph や AUNode の概念から、ひとつひとつのユニットの解説まで、わかりやすい図入りで説明されているので激しくおすすめです。


##[audioGraph](https://github.com/tkzic/audiograph)

【使用ユニット】

- Remote IO (kAudioUnitSubType_RemoteIO)
- Multi Channel Mixer (kAudioUnitSubType_MultiChannelMixer)
- **Low Pass Filter (kAudioUnitSubType_LowPassFilter)**
- **High Pass Filter (kAudioUnitSubType_HighPassFilter)**
- **Audio File Player (kAudioUnitSubType_AudioFilePlayer)**
- Sampler (kAudioUnitSubType_Sampler)

【サンプル概要】

マイク入力とかシンセ音とかファイルからの音とかをマルチチャネル再生しつつ、エフェクトをかけられる。ステレオレベルメータつき。

![ss](http://f.cl.ly/items/1m100R0v1o2C2j0x043j/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2013-02-20_21.09.35_.png)

Audio Unit のもろもろ詰め合わせといった感じです。エフェクトは<span class="deco" style="font-weight:bold;">リングモジュレータやピッチシフター</span>も実装されています。




##[iPhoneMixerEQGraphTest](https://developer.apple.com/library/ios/#samplecode/iPhoneMixerEQGraphTest/)

【使用ユニット】

- Remote IO (kAudioUnitSubType_RemoteIO)
- **iPod EQ (kAudioUnitSubType_AUiPodEQ)**
- Multi Channel Mixer (kAudioUnitSubType_MultiChannelMixer)

【サンプル概要】

iPod のイコライザー効果をかけるサンプル。（グラフィックイコライザーではなく、プリセットから選択する）

![ss](http://f.cl.ly/items/2p0t3g0X253i0Y092V3Q/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2013-02-20_16.30.48_.png)

【最終更新日】

2010-06-25




##[aurioTouch2](https://developer.apple.com/library/ios/#samplecode/aurioTouch2/)


【使用ユニット】

- Remote IO (kAudioUnitSubType_RemoteIO)

【サンプル概要】

マイク入力の波形を描画するサンプル。通常の時系列での波形表示の他、周波数ドメイン（FFTを使用）表示、ソノグラム表示もあり。

![ss](http://f.cl.ly/items/2W242C2522030z3R0t3c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2013-02-20_16.47.31_.png)

Audio Unit の使用は Remote IO による入出力のみ。FFT には Accelerate フレームワークの **vDSP** を、波形やソノグラムの描画には OpenGL を使用している。



【最終更新日】

2011-12-06


##[iPhone Core Audioプログラミング](http://www.amazon.co.jp/exec/obidos/ASIN/4797355158/22301-22/ref=nosim/)

※ Audio Unit のサンプルが多数あるので、これだけ例外的に書籍名をタイトルにしました。サンプルコードのダウンロードURLは書籍をご参照ください。

【サンプル概要】

各項目毎にサンプルが用意されているので、目次を載せておきます。

- Audio Unitの概要
- Audio Component とAudio Unit
- Audio Unit 正準形
- サイン波を再生する
- 周波数を変更する
- Examole -加速度センサーテルミンー
- Audio Unit Processina Graoh Services
- MultiChannel Mixer Unit
- 3D Mixer Unit
- Converter Unit
- iPod Equalizer Unit
- マイクのモニタリング
- Remote IOを使って録音する
- レコーデイングレベルを調整する
- Voice Processing IO Unit

【使用ユニット】

たくさんあるので全ては確認できていませんが、iOS3.x時代にあったユニットは全部入っていると思われます。（多くのユニットがiOS5で追加されましたが、iOS5登場以前の本なのでそれらについては載っていません）



##[RemoteIO](http://www.amazon.co.jp/exec/obidos/ASIN/4873114179/22301-22/ref=nosim/)

※[iPhone SDK アプリケーション開発ガイド](http://www.amazon.co.jp/exec/obidos/ASIN/4873114179/22301-22/ref=nosim/)のサンプル。サンプルコードのダウンロードURLは書籍をご参照ください。

【サンプル概要】

Remote IOでサイン波を鳴らすサンプル。書籍の Audio Unit の章は Core Audio 本の著者永野さんが書いているので、Core Audio本のChapter09のサンプルと同様と思われます。

Core Audio本は絶版になっていて中古で高値がついてしまってますが、こっちはまだ普通に買えるようです。

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114179/22301-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41G2k1xpssL._SL160_.jpg" alt="iPhone SDK アプリケーション開発ガイド" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114179/22301-22/ref=nosim/" name="amazletlink" target="_blank">iPhone SDK アプリケーション開発ガイド</a></div><div class="amazlet-detail">Jonathan Zdziarski <br />オライリージャパン <br />売り上げランキング: 28500<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114179/22301-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>


##Audio Unitの参考資料

- [Core Audio Overview](https://developer.apple.com/library/ios/#documentation/MusicAudio/Conceptual/CoreAudioOverview/)
- [Audio Unit Programming Guide](https://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/AudioUnitProgrammingGuide/Introduction/Introduction.html)
  - ※Mac版。2013/2/20現在、iOS版はありません。