JUCEで簡単なソフトシンセを作る（準備編）

##目的
ほぼほぼ自分用のメモ、いわゆる備忘録。表題とは裏腹に、AUv3ってどうやれば作れるんだろーなーという疑問を解決するためのものです。なんでAUv3かって？それはAUv3ならApp Storeで売れるものが（簡単に？）作れるから。Mac用に書いてるけど、iOS用のAUv3にもたぶんそのまま適用可（未検証→動きました）。

##前提条件
- macOS Mojave (10.14.x)
- AudioUnit v3
- Xcode
- JUCE 5.4.1（執筆時）
- VST 3.6.7 SDK（VSTSDKは3.6.12が最新だが、それを使うとリンクエラーが出ることがわかっている）
- Logic Pro XとMainStage (AUv3のテスト用）
- Studio One 3（VSTのテスト用。個人的には割とどーでもいい）

##環境整備
###Xcode
App Storeからインストール。特に設定はいらないはず。
###JUCE
[JUCE](https://shop.juce.com/get-juce)のサイトからJUCEをダウンロードし、展開してホームディレクトリ直下に置く。別の場所に置いても良いがその場合はGlobal PathsでPath to JUCEを変更の必要あり。Projucerはアプリケーションフォルダの中にコピーしておく。
###VST SDK
3.6.7を使う必要がある。今どこからダウンロードできるか不明。ファイル名はvstsdk367_03_03_2017_build_352.zip。ダウンロードしたらホームディレクトリの下にSDKsというディレクトリを作って、その中にVST3_SDKを置いておく。Projucerを起動して、Global Pathsの中でVST SDKのディレクトリを設定しておく。
<img width="601" alt="JuceGlobalPaths.png" src="https://qiita-image-store.s3.amazonaws.com/0/107818/740162c8-3526-5a31-71ed-03d8367371dc.png">

##Developer IDとかProvisioningとか…
俺的に超めんどくさいので後で…。普通にMacのアプリ作れてる人はスキップ可能（たぶん）。iOSのアプリ作ってる人は同じようなことをMacのアプリに対しても行えばOK。AU/VST3はこれ無くてもいいけど、AUv3はこれが無いとプラグインが認識されない。

##プロジェクトを作成
Projucerを起動し、メニューのFile -> New Project...を選択。出てきたダイアログでAudio Plug-inを選択。Project NameにSimpleSynthと入力してCreate...ボタンをクリック。スクショではUse global module pathにチェックが入ってるが、実際には外さないとエラーで作成できなかった。<img width="900" alt="スクリーンショット 2018-12-29 22.24.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/107818/229798bb-6374-0bdf-f012-1488d535fa6c.png">
作成したプロジェクトが表示されたら、おもむろに左上の方にある設定アイコンをクリック。<img width="945" alt="スクリーンショット 2018-12-29 22.36.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/107818/571f315b-b17e-6cdd-8cde-e15a2f4b75e8.png">

- Project NameはそのままでOK。変えたきゃ変える。
- Project Version、Company Name、Company Copyright、Company Website、Company E-mailは適宜設定。
- Bundle Identifierはドメインの逆順で適宜設定。
- Plugin FormatsはVST3、AUv3、Standaloneにチェックを入れる。
- Plugin CharacteristicsはPlugin is a Synth、Plugin MIDI Inputにチェックを入れる。
- Plugin NameからPlugin Codeまでは適宜設定。
- Plugin Channel Configurationsに {0, 2} と記述。
- Plugin AU is sandbox safeをEnabledに。

と、ここまで設定したら一旦保存して、ウィンドウ上部にあるXcodeのアイコンをクリックするとXcodeでプロジェクトが開く。そのままCmd+Bでビルドすると、たぶんWarningが3つ出てビルドが成功するはず。<img width="444" alt="スクリーンショット 2018-12-29 22.51.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/107818/a86bb07a-3bd9-3ce3-4c29-486ee9fa3f96.png">

##Warningの解決
最初のUnable to recommended settingsは、クリックするとビルド設定変える？的なダイアログ出るのでそのままPerform Changesをクリックして閉じると解決。
2番目のはAUv3に対してcode signが設定されていないから。ウィンドウ一番上の左上のフォルダみたいなアイコンをクリックして、一番上のSimpleSynthのプロジェクトを選択してから、ターゲットをSimpleSynth - AppExtension AUv3にしてから、Build Settingsタブをクリックして、Signingまでスクロール。Code Signing IdentityをAutomatic - Mac Developerに、Development Teamを自分のチームに設定。
<img width="855" alt="スクリーンショット 2018-12-29 22.58.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/107818/0e490375-8ab9-1e5f-4489-95a82d0ed358.png">
この状態でビルドするとWarningは1つに減るはず。最後のは未使用変数なので後でコードいじるときに解決する。ビルドした後、**Standaloneのアプリを起動するとAUv3がシステムに登録される**。←ココ重要<img width="412" alt="スクリーンショット 2018-12-29 23.08.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/107818/b8c58e2a-218c-6673-3d6a-b8ab102a764e.png">
その後、Logic Pro XかMainStageを起動して、プラグインマネージャを開いてビルドしたプラグインが認識されていればひとまずOK。
<img width="1125" alt="スクリーンショット 2018-12-29 23.09.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/107818/d8778d05-d9de-9219-2394-82ad71dfc202.png">
AUv3はこれまでのAUと違ってビルトインのプラグインと同じようにメニューの上の方に出てきます（なんでだろう？）。
<img width="795" alt="スクリーンショット 2018-12-29 23.12.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/107818/5ac857e8-18e3-0678-381a-793be74e64f7.png">
このままでは全く何も音は出ないけど、たぶん今までプラグインを作ってた人（←俺）ならここまでで必要な情報は網羅できてると思う。