Hatena::ブログ(Diary)

iPhoneアプリケーション開発

2008-06-04

AUGraphも使える!

| 18:48

Audio Unit(AU)を簡単な使いたいという方のために、AUGraphという仕組みがあります。

簡単に言うと、複数のAU(AUGraphの中ではNodeというオブジェクトでラップされます)をチェーン状につなげて、一連の処理を定義することができるというもので、たとえば、音声ファイルを再生するAU -> フィルターのAU -> 出力のAUというAUGraphを作ることで、フィルターをかけてファイルを再生するという処理が実現できます。


AUGraphに関しては、My Codex Lexter http://nagano.monalisa-au.org/?p=40 がまとまっています。 (この人すごいなぁー! リスペクト)


iPhoneでも、このAUGraphの仕組みを使うことができます。ただし、iPhoneとOS 10.5以上から、AUGraphのAPIが変わっているので注意が必要です。


具体的には、上記のMy Codex Lexterで、AUGraphNewNodeで新しいNodeを作っているのに対して、iPhone上では新しいAPI - AUGraphAddNodeを使う必要があります。この辺は、ヘッダ(AudioToolboxフレームワークの、AUGraph.h)をチェックして、どのAPIが変わったのかを調べてみることをオススメします。

iPhoneにおけるAudio Unitのサポート

| 17:38

Audio Unitとは、OS Xから導入されたシステムレベルのオーディオプラグインのアーキテクチャです。平たく言うと、システム全体で使えるVSTプラグインのようなもの。

OS Xだけではなく、そのサブセットであるiPhoneにも同じ仕組みが用意されています。ただ、今のところ、iPhone用のAudio Unitを自作して、インストールすることはできないとのこと。もともとインストールされているものを使うことになります。残念!

iPhoneにインストールされているAudio Unitは、以下の5個ののみのようです。



  • AUConverter

ファイルフォーマットの変換

  • TimePitch

ピッチシフトやタイムストレッチに使える

  • AUiPodEQ

その名の通り、イコライザー (EQ)

  • AU3DMixerEmbedded

オーディオの定位に使える

  • RemoteIO

音声入出力のためのAudio Unit. OS Xで言うところの、AudioDeviceOutputかな。



このうち, TimePitchはかなり使えそうですね。語学学習用に音声のテンポを上下できるアプリケーションなど、いろいろと用途がありそうです。

逆に、AudioFilePlayerなどのGenerator系、DLL Synth(QuickTime音源), パンニング系、エフェクト系などは、iPhoneにはインストールされていません。特に、ディレイ/リバーブ/フィルタなどのエフェクト系がごっそり抜けているのが残念。せめてフィルタくらいつけて欲しかったなぁ。

やまやま 2010/01/22 19:36 はじめまして、サイトの内容興味深く読ませて頂いてました。
再生のテンポを制御するアプリ作ってるんですが、
TimePitchこれを使って制御ができなかったのですが、
何か情報ご存知でしょうか?
私も「My Codex Leicester」こちらのサイト参考にしてました。
渡すパラメータがおかしいのかな。。

かわかわ 2010/03/26 19:26 iPhoneにTimePitchというAUはありますか?
AudioComponentFindNextで探してみたけど,出てこなかったです。