えー、AudioUnitですが、まぁ情報が少ない。
あってもiOSの話が多いのですが、Logicで使えるプラグインが作りたいわけですよ。
ソフトシンセとかサチュレーションエフェクトとかMIDIエフェクトのアルペジエーターとか。
まぁ本当はチャンネルストリップみたいなの作りたいんですよね。
分かりやすい3バンドぐらいのEQとCompで微妙に歪んで倍音が出る感じの作りたいなー。
真空管とテープのシミュレータも作りたいんだけど、どういう挙動なのか実はあまり良くわかってないです。
真空管って非対称に歪むらしいんだけど、どう非対称なんだ?っていうね。
テープはEQで上下ゆるくカットしてコンプ掛かる感じですかね。
Xcode
まずはXcodeが必要です。
昔はプラグイン用のテンプレートがあったみたいなんだけどなくなったらしいのでサンプルコードをいじってみようと。
オーディオの入力信号処理するのがかったるいので、まずはシンセを作ってみようということで、AudioUnitInstrumentExampleをコピー。
AUPublic, PublicUtilityというディレクトリにAUを使うためのコードが入ってるので、同じ階層にコピーしないと参照解決のために面倒なことになります。
そして、名前を変えるのだけど、まずファイル名は右側のペインで変えるっていうのがXcodeのUIの直観的じゃないところです。
Command+Shift+Fでファイル横断検索ができるっぽいので、これでSinSynthという文字を片っ端から置き換えました。
プロジェクトファイルをクリックすると出て来るinfoタブ(info.plistの内容を編集できるっぽい。ちょっとUIがバグってる)のnameってところが軽くミソです。
hoge:fuga
とやると、プラグイン選択のところでhogeが親ディレクトリ的な感じでまとまります。
製作者名:プラグイン名
みたいにするとクールですね。
左上の再生ボタンっぽいのを押すとbuildが走ってエラーがなければコンポーネントファイル(実体はディレクトリ)が出来ます。
左ペインの一番左のアイコン、Project navigatorからProductsっていうディレクトリを開けると入ってます。
実体はわけわからないところに入ってるので気にしないことにします。
プラグインをインストール
で、一回これをデスクトップ辺りにコピって来て、~/Library/Audio/Plug-Ins/Components/ にコピーしました。
自分のホームじゃなくて、 /Library/Audio/Plug-Ins/Components/ に入れても良いっぽいです。
これでインストールされたはず。
AU lab
AU labっつーツールが比較的手軽にプラグインの挙動を確認できるので良かったです。
なんですが、上記リンクのを入れ直したら認識しなくなったんですよね。
どうもバージョンが2.3系から2.2系に落ちてるっぽい。
からDLしても2.2系です。
このタイミングでゴミ箱が上書きされて復帰できない。
詰んだか……?
GUI
とりあえず置いておいてここからは記憶で書きます。
GUIはCocoaで書く方法もありますが、オーディオ処理するだけならデフォルトのUIが勝手に?出来ます。
サンプルだとコンストラクタの中でやってる Globals()->UseIndexedParameters() が読み書きするパラメータの数を表しています。
Globals()->SetParameter() がindex, valueという構造みたいですね。
で、サンプルを読む限り GetParameterInfo() ってのがUI側から呼ばれてくるのでここにいろいろ突っ込んで返してあげる感じになります。
ここで値の型とか限界値とか表示名とかを決めるみたいです。
ってここまで動いてたんですけどね、認識しなくなってしまったので終了です。
サンプルのSinSynthも認識しない(GarageBandでも……Logicは別のマシンに入ってるので試してない)ので何か根本的におかしいのかもしれません。
つづく(願望)……というかHelp Me!