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を新規に試しで作ってみて音が鳴るようになるまで四苦八苦しました……。その情報も追々まとめていこうと思います。

2017年11月3日金曜日

AudioUnit V2の作り方を調べる

LogicやGarageBandで使用できるAudioUnitを作ってみたくて、作り方を調べてみてました。情報があまりなかったので、わかったことをまとめておきます。

現在、AudioUnitにはV2とV3の2種類あります。何が違うのかはWWDC2015の動画がわかりやすいです。

今回はV2についてまとめてみます。

AudioUnit V2?

AudioUnit V2は拡張子「.component」を持つファイルです。「/Library/Audio/Plug-Ins/Components」にこのAudioUnitファイルを格納しておくとLogic ProなどのDAWがプラグインとしてロードしてくれます。

各メーカーが販売しているプラグインのほとんどはV2形式のようです。

チュートリアルがあるけれど……

AudioUnit V2には作り方のチュートリアルがあります。簡単なトレモロエフェクターを作る手順が載っています。

説明文は丁寧でわかりやすいのですが、最新のXcodeではAudioUnit V2用のプロジェクトテンプレートは廃止されているため、チュートリアルどおりには作成できません。Xcodeの画面も変わってるから、適宜読み替えも必要です。

作る方法はあるのか?

Xcodeから素直に作ることができないので、AudioUnit V2を作るためには次のどちらかの方法をとるしかなさそうです。

  1. 公式サンプルを改変する
  2. プロジェクトテンプレートを用意する

サンプルコードは下記のサイトで公開されています。V2のAudioUnitを作りたい場合は、ここからダウンロードしたサンプルを改変していくのが手っ取り早いかもしれないです。

プロジェクトテンプレートは、上記のサンプルコードを参考に自作することになります。探してみるとV2のテンプレートを公開してくれている人もいるので、有り難く使わさせていただくのも良いかもしれません。たとえば、こちらのブログとか。