2017年11月4日土曜日

AudioUnit V3の作り方を調べる

AudioUnit V2の作り方をまとめたので、今度はV3についても調べたことをまとめてみます。

AudioUnit V3?

AudioUnit V3は拡張子「.appex」を持つファイルで、「App Extension」という拡張機能を利用しています。V2とは違い特定のディレクトリーに格納しておかなくてもDAWが認識してくれます。

「どうやってインストールするのか?」というと、AudioUnit V3を含むアプリケーションを起動することで勝手にインストールされます。V2ではプラグイン単体で存在できていたのですが、V3からはアプリケーションの付属品という扱いに変わっているようです。1度起動してしまえば、他のアプリケーションからも参照できるようになります。

AudioUnit V3をアンイストールしたいときは、AudioUnit V3を含んでいたアプリケーションと合わせて削除しないといけないってことになります。

V2との違いはWWDC2015の動画で述べられています。

大きな変更点は次の2つでしょうか?

  1. macOS、iOSのどちらでも共通して使用できる
  2. プラグインが異常終了してもホストを巻き込まない

異常時にプラグインだけを終了できるって良いことですよね!

V3(App Extension)の詳細は公式ドキュメントが一番詳しいような気がします。

開発するには?

Xcodeでプロジェクト作成後、AudioUnitのApp Extensionを追加することでプロジェクトテンプレートが開きます。このテンプレートに追記してプラグインを開発します。

AudioUnit V3については、開発チュートリアルがとくにありません。

基本的には下記にあるサンプルコードを参考にプログラミングをするしかありません。サンプルコードはmacOSとiOSの両方のコードを含んでいるので、正直なところ読みづらいです……。

AudioUnit(App Extension)のテンプレートには、AudioUnitとして必要な処理すらも書かれていない状態です。テンプレート選択直後にビルドしてDAWに認識させることもできましたが、音が一切鳴りません。in/outやチャンネルの設定も開発者が書き込む必要があります。

テンプレート選択時には「これから作るのはエフェクターなのか、インストゥルメントなのか」を設定しますが、インストゥルメントを選んでもMIDIを扱うライブラリーを設定してくれるわけでもないようでした……。

読みづらいけれどサンプルコードを改変してAudioUnitを作ったほうが、新規で作るよりも簡単かもしれません。

AudioUnit V3を新規に試しで作ってみて音が鳴るようになるまで四苦八苦しました……。その情報も追々まとめていこうと思います。