公式サイトのJUCEチュートリアルの並び順通りに進めるとこれ何なの?という状態を保留しながら進めないといけなくて気持ち悪かったので進めながらのメモを共有。
1.基本のProjucer操作
- Getting started with the Projucer
- Manage your Projucer projects
- Choosing the right Projucer template for your application
JUCE操作の基本となるProjucerアプリケーションの使い方についてとそれぞれのProjucerテンプレートについての説明を最初に。
Getting Startedのプラグイン関連についてはそもそもプラグイン作る予定がないというのと、現状でチュートリアル進めてもコード通りにやったらよくわからないプラグインが出来た程度の満足度しか無いので飛ばしましたがとりあえず自前のコードがDAWで読める感を得ることでモチベーションにつながる可能性もあるのでそのあたりはご判断ください。
早く音を出したいところですがここからしばらく(Audio/Synth/MIDI/Plugins/DSP)飛ばします
2.テンプレートのcppファイルを解読するために突然Graphicsカテゴリへ
JUCEに置けるメインのクラスであるJUCEApplication
およびmain Component
についてようやく出てくる。これがわからない状態でオーディオ出してもそもそもこれ何という状態が続く。
3.コンポーネントについてもう少し詳しく知る+UI関連の基本
Graphicは上記2記事で飛ばしていきなりInterface Designへ。
アプリケーションの見た目や色クラス、簡単なDraw系のチュートリアルなどをスルーしながら今後必要になるいくつかのチュートリアルを選択。マストなのは以下3件。
まだ音が出ないが音を出すチュートリアルに突然スライダーとか出てくる。
それぞれネストされたコンポーネントを作る方法、UIクラスのイベントをどうやって利用するか、具体的なUIパーツについての詳細チュートリアルになっている。スライダーに追加してLabel
, ComboBox
, RadioButton
あたりを進めてもいいがこれをやっているとウェブのフロントやってる気持ちになるので注意。
4.やっと音が出る。
- Synth > Build a white noise generator
- Synth > Control audio levels
- Synth > Control audio levels using decibels
- Synth > Build a sine wave synthesiser
1つ目のノイズジェネレーターのサンプルコードは2つ目の記事でこうすると良いよというコードが入っていて1つ目の記事では全く触れられていないので読み飛ばしていいです(スライダー変更時にクリックノイズが出なくするような実装)
ただしここら辺からbufferに書き込む系の作業が入ってくるため他にAudioUnit等でオーディオバッファごとの処理をやった経験がないと若干躓く可能性ありでこの辺りはJUCE外に何らかの情報を求める必要があるかもしれない。あと使用する各クラスについての詳細はないのでAudioBuffer
クラス、AudioSampleBuffer
クラス、AudioSourceChannelInfo
、あたりのリファレンスは一通り確認しておいたほうがここの行を読みやすい。
オーディオの加工優先であればAudioカテゴリを優先でも問題ないかと思う。
その他
その他ランダムクラス、ファイル操作、プラグイン関係、MIDIなどはそれぞれ必要だと思われるものを選択。個人的にはInternalクロックで動くシーケンサー実装について知る必要があったがそれについてのチュートリアルがなかったためそういうのはGithubとかでコード探してTimerクラスのリファレンス読みながらどうにかするしかない感じでした。