iPhone Core Audioプログラミング(書籍)
iPhoneのCore Audioのみを解説する本です。
総ページ数564ページと、iPhoneアプリ開発本の中でもおそらくトップクラスのページ数、そのすべてがiPhoneのCore Audioの解説という前代未聞(?)、世界初の本です。
iPhone Core Audioのすべてのフレームワーク、サービスを解説しています。
#読みやすさ、分かりやすさを考慮してiPhoneのCore Audioに絞って書きましたが、Mac OS XのCore Audioにも応用可能だと思います。
内容としては、Getting Started With Audio Unit、Introduction to Audio Unit Development、iPhone Core Audio Programming、3つの本Blogの連載を下地に、ともかくiPhone Core Audioのすべてを網羅しています。
各フレームワーク、サービスと章の関係は次のようになってます。
Audio Toolboxフレームワーク
・System Sound Services (第1章)
主に警告音の用途に使うサウンドファイルの再生
・Audio Queue Services (第5・6章)
サウンドファイルの再生と録音、オフラインレンダリング
・Audio File Services(第3章)
サウンドファイルのデータの読み書き(変換機能無し)
・Audio Session Services(第4・7章)
iPhoneのオーディオの挙動の管理
・Audio Converter Services(第10章)
オーディオデータの変換
・Audio Format Services(第10章)
オーディオデータフォーマットを扱う
・Extended Audio File Services(第11章)
サウンドファイルの読み書き(変換機能有り)
・Audio Unit Processing Graph Services(第12章)
Audio Unitを複数接続する
・Audio File Stream Services(第13章)
オーディオデータパケットの解析
Audio Unitフレームワーク
・Audio Component Services(第9章)
Audio Component(Audio Unitのプラグイン形式)の管理
・Output Audio Unit Services(第9章)
Audio Unitの処理を開始・停止する
AVFoudationフレームワーク
・AVAudioPlayer(第2章)
サウンドファイルの再生
・AVAudioRecorder(第8章)
サウンドファイルの録音
・AVAudioSession(第8章)
Audio Sessionの管理
Core Audioフレームワーク
Core Audio共通の構造体、定数の定義など
MediaPlayerフレームワーク
ムービー、サウンドファイルの再生。iPodライブラリアクセス(第14章)
OpenALフレームワーク
サウンドファイルの再生・録音、3次元定位(のための計算)
OpenALは オーディオ再生・録音が行えるクロスプラットフォームなAPIであり、iPhoneでも使用できる。iPhoneのOpenALは内蔵Audio Unitである「3D Mixer Unit」の上に実装されており、本書ではこのAudio Unitを直接使う例を解説するため、OpenALについては扱っていない。3D Mixer UnitはAudio Unit Processing Graph Servicesの章(第12章 )で扱う。
(以上、本から抜粋)
これらを(今数えたら)93個のサンプルコードとともに解説してあります。
サンプルコードは、実現したい処理を行うために必要なコードは何か、をつかんでいただくために極力シンプルな記述を心がけてあります。なのでサンプルコードは一つの処理のみを行うのものが大半です。グラフィック的な飾りもほとんどありません。
このような「粒度の小さい動くサンプルコード」を実際に試しながら、各APIの働きを理解していけるような作りを目指して書きました。
対象読者
本書はC言語、Objective-C、Cocoa Touchフレームワーク(UIKit)の基礎を習得しているオーディオアプリケーションを開発したいプログラマを対象としている。
C言語、Objective-C、Cocoa Touchフレームワークに関しては、分かりやすい入門書が既に多数刊行されているため先に参照いただきたい。本書ではCore Audioに紙面を割くために、Cocoa Touchフレームワークの使用は最小限のものにしてある。ただし、使用するAPIについては、詳しい解説を加えてある。
(本から抜粋)
となっています。
各章では、扱うフレームワーク、サービスに関連するオーディオ処理の基礎的な事項の解説も加えてあります。サウンドファイルのフォーマット、リニアPCMとはなんぞや、デシベル、パンニング、音階、サイン波、音の合成、FMシンセ、FFT、など。
数式満載のデジタル信号処理の高度なトピックは扱っていませんが、今後、その世界に飛び込んでばりばりやるための基礎は習得できると思います。
実践編、応用
実際のアプリケーション開発は複数の機能を組み合わせて使うことになるので、「実践編」を設け、それまでに使用したコードを組み合わせ、実際の開発に使えるサンプルを目指してあります。
具体的には、オトカメラのライト版「オトカメライト」、FMシンセを使ったシンセサイズできるドラムマシン「FMDrum」、環境音に反応して音を生成(合成)するアプリケーション「Whiteout」を作ります。
最終的にこれらぐらいのアプリケーションが作れるようになるはずです。
(ちなみに実践編以外の章にも、ちょいとこの機能を使って遊んでみよう、てなサンプルがあります)
また、iPhone Core Audioのシステム全体(オーディオの入出力、サウンドファイルの入出力、ハードウェアの制御)が分かるようになるので、いかようにでも応用できるようになると思います(全部読んでもらえればおそらく)。
よくある(であろう)質問と解答
Q. Core Audioってどうなってんの?いろいろありすぎでしょ
A. Core Audioの世界を散策できるように全部解説してあります。じっくり読んでください。
Q. Core Audioって難しいですか?
A. Objective-Cを使うUIKitに比べて、基本的にC言語の関数を使うので、どちらかと言えばとっつきにくいかもしれません。あと、Core Audio特有の作法に慣れるまで少し分かりづらいかもしれません。しかし、この辺のことについては筆者も当初、随分苦労したので、それを考慮した解説を心がけました。ひとまず第一章をじっくりやってみてください。
Q. Cを覚えたばかりなんだけど、理解できるかな?
A. iPhoneのプログラミングを解説する都合上、どうしてもCocoa Touch(UIKit)フレームワークとObjective-Cの知識が必要になります。一番好みの入門書を買って先に読んでください。ただし、特に難しいことはやらないので、UIViewController, UIButton, UISlider, UISwitchあたりが使えれば大丈夫だと思います。僕的には「基礎からのiPhone SDK」がオススメです。
Q. 音鳴らすの簡単ですか?
A. どういう再生を行うかにもよりますが、簡単だと思います。Core Audioで選択できるすべての再生方法を解説してありますので、その中から望む処理を実現できる方法を選択してください。
Q. Audio Queue、AVAudioPlayerを使わないでMP3を再生したいんだけど
A. Audio Converterを使ってリアルタイムにデコードしながらAudio Unitで再生なんてどうでしょう?リニアPCMに変換しながら再生するので、ボリューム、パンニングとかなんでもできますよ。Audio Queue/AVAudioPlayerだとMP3はパンニングできないでしょ。Ext Audioを使ってもいいし、Audio Queueのオフラインレンダリングで事前にリニアPCMに変換しておく、という手もあります。いろいろ選択肢があるのでお好みの方法を使ってください。
Q. Audio Unitが入ってるらしいけどどうやるの?
A. AUGraphを使って、全部のAudio Unitの使用例を書いてます。たとえばiPodにイコライザーが付いていますよね?あれを自分のアプリでも使えますよ。あとは3D Mixerを使えばOpenALと同じことがAudio Unitでできちゃいますけど、どうですか?
Q. サウンドファイルをAACに変換したいんだけど
A. Ext Audioを使えば簡単にできちゃいますよー。ただしAACに変換できるのはiPhone 3GS/iPod touch 2Gだけです。この辺の変換処理も全ての方法を書いていますので、その中から選択してください。
Q. シンセサイズしたいんだけど
A. Audio Unitを使って最もローレベルなレイヤーでもっとも高速な(レーテンシーの少ない)シンセサイズを解説してます。FMDrumのレスポンスはむちゃくちゃ速いですよ!
Q. よし、オーディオ処理は分かった。で、何作ればいいかな?
A.もしアイディアに困ったら、拙著「iPhone x Music」を読んで、オーディオ・アプリケーションを研究してみてください!
謝辞
サンプルコード内のサウンドファイル(loopと付く名前のファイル)は徳井直生氏に提供いただきました。
氏には原稿チェックもしてもらいました。多謝。
Objective-Audioさんには実際に読んでもらって、いくつか指摘いただいています。
正誤表を用意しますのでお待ちください。
レビュー、推薦のお言葉など、紹介いただいたサイト
O-Planning ゲーム制作のちょっといい話: iPhone Core Audioのバイブル的書籍「iPhone Core Audioプログラミング」発売!!
iPhone Core Audio プログラミング – soundscape out
iPhone Core Audioプログラミング の本が発売になります。|松本昭彦 (Akihiko Matsumoto) Blog Algorithmic Computer Music
ちゃ~り~田中チャンネル – iPhoneCoreAudioプログラミング
iPhone Core Audio プログラミング – 丸井綜研
564ページにわたる熱い/厚い解説。まだ熟読したわけではありませんが、読みやすく仕上がっています。iPhoneプログラマでなく、ただMac OS XのCore Audio開発をしたい僕のような人間にも役だってくれそうです。こういう本は後々入手不可能になる可能性がありますので、興味のある人は今のうちに購入しておくべきでしょう。
書籍紹介「iPhone Core Audio プログラミング」 | POPINO BLOG ( ポピノ ブログ )
実際の信号処理のアルゴリズムとかは奥深いので、まだまだ大丈夫だと思いますが、この本で商売あがったりだよーって思ってる人も、多少はいるんじゃないかと思うくらい充実してるお勧めの一冊です。
記録
出版時期が「iPhone x Music」でもインタビューさせてもらっている津田大介さんのTwitter本と同時期だったため、津田さんの本屋巡り記録に本書も写ってました。以下、拝借。
紀伊国屋南口店 先行発売(2009/11/06)
(画像参照元 http://twitpic.com/olnob)





