Audio Unit Instrumentを作る

MacのAudio Unitの作り方を調べていて、サンプルを動かすところまでこぎつけたのでメモ。

開発環境

まず現在の開発環境ですが、

です。

サンプルコードをビルド

Xcodeではずいぶん前のバージョンからAudio Unitプラグインのプロジェクトテンプレートが削除されているので、デベロッパサイトからサンプルコードを持ってきてそれを雛形とします。
https://developer.apple.com/library/mac/samplecode/sc2195/Introduction/Intro.html
(上部の「Download Sample Code」ボタン)

zipを展開してAudioUnitInstrumentExampleのプロジェクトをXcodeで開きます。

この状態でそのまま「Product -> Build」を実行すると、

/Users/(username)/Library/Developer/Xcode/DerivedData/SinSynth-xxxxx/Build/Products/Development/SinSynth.component

のような場所にSinSynth.componentが出力されると思います。
これを

/Users/(username)/Library/Audio/Plug-Ins/Components

にコピーして、LogicなどのDAWを起動すると……

AU Instruments -> Apple Sample Code -> Sin Synth (Instrument AU)」として選択できるようになり、適当にMIDIノートを入力してみると、無事サイン波が再生されました。

デバッグ環境

ビルド時にComponentsディレクトリへのコピーとAUホストを自動で立ち上げてデバッグできるようにします。

まずTARGETS SinSynthのBuild Phasesに、SinSynth.componentをプラグインディレクトリにコピーする「Copy Files」を追加します

Destination : Absolute Path
Path : $(USER_LIBRARY_DIR)/Audio/Plug-Ins/Components/

次に「Product -> Scheme -> Edit Scheme」を選択して、「Run」の「Executable」をAU Lab.appに変更します。

で、「Product -> Run」すると、AU Labが起動します。初回起動時はAU Labのドキュメントの新規作成ダイアログが表示されると思いますので、ドキュメントを新規作成して「Edit -> Add Audio Unit Instrument...」からSInSynthのトラックを追加します。

あとはAU LabのPreferencesの「Document -> When Launching AU Lab」を「Open a specific document」にして、開発中のプラグインを読み込んだ状態のドキュメントを指定しておけば、次回実行時はすぐさま動作確認できる状態で立ち上がってくれます。
開発中にMIDIキーボードを繋げるのが面倒な場合は、MidiKeysなどの仮想キーボードを使えば、Macだけで手軽にデバッグできますね。

MAC OS X COCOAプログラミング 第4版

MAC OS X COCOAプログラミング 第4版