Projucerパート3:アプリケーションに適したProjucerテンプレートの選択
アプリケーションに適切なテンプレートを選択することは、最初のうちは厄介な作業かもしれませんが、最初から適切なクラスを継承することで、生産性が飛躍的に向上します このチュートリアルでは、Projucerが提供するさまざまなテンプレート・プロジェクトと、アプリケーションを作成する際に注意すべき主なクラスについて説明します。
レベル:初級
プラットフォーム:Windows, macOS, Linux, iOS, Android
クラス:JUCEApplication, Component, AudioAppComponent, AnimatedAppComponent, OpenGLAppComponent, AudioProcessor, AudioProcessorEditor
はじめる
Projucerをよく理解し、Projucerプロジェクトの構造を基本的に理解していることを確認してください。
このステップで助けが必要な場合は、 Projucerパート1:Projucerを始める を参照してください
適切なプロジェクトに適切なテンプレートを
開発するプロジェクトによっては、Projucerウィザードから別のテンプレート・プロジェクトを選びたくなるかもしれません。 以下のグラフは、プロジェクトに最適なテンプレートを選択するための視覚的な質問表です:
すぐに対応するプロジェクトタイプに移動することもできますし、 JUCEプロジェクトがどのように構成されているかについての説明を読むこともできます。
GUIプロジェクト
全てのGUIプロジェクトテンプレートは、開発を始めるためのソースファイルを提供します。 アプリケーションはグラフィカル・ユーザー・インターフェースを表示するので、テンプレートは JUCEApplication から派生したクラスが作成された Main.cpp ファイルを提供します。
JUCEApplication クラスは、アプリケーションのスタートアップとシャットダウンの機能を提供する抽象基底クラスです。 また、Main.cpp ファイルは GUI が存在するアプリケーション・ウィンドウを作成します。
GUIアプリケーション
GUIアプリケーション・プロジェクトは、すべてのGUIプロジェクトの中で最も汎用的であり、Main.cppファイルに加え、 Component クラスから派生したMainComponentクラスも作成します。
Component クラスは、JUCEの全てのユーザインタフェースオブジェクトの基底クラスです。すべてのGUI要素は、MainComponentクラスに定義して配置する必要があります。
GUIアプリケーション・プロジェクトが作成されると、ソース・フォルダーに以下のファイルが あります:
- Main.cpp:JUCEApplication クラスから派生したもので、アプリケーションとウィンドウの初期化コードを提供します
- MainComponent.h:Component クラスから派生したMainComponentのヘッダーファイル
- MainComponent.cpp:Component クラスから派生した MainComponent の実装ファイル
このプロジェクト・タイプは、アプリケーションにGUIが必要であることはわかっているが、アプリケーションの機能について確信が持てない、あるいは柔軟性が必要な場合に使用します。
GUIアプリケーション・プロジェクトの詳細については、 チュートリアル:アプリケーション・ウィンドウ をご参照ください。
オーディオアプリケーション
オーディオアプリケーションはGUIアプリケーションと似ていますが、MainComponentが Component クラスから派生するのではなく、 AudioAppComponent クラスから派生します。
AudioAppComponentクラスは、 Component と AudioSource の機能を組み合わせた抽象的な基本クラスで、オーディオ入出力を処理するための便利な出発点を提供します。
Audio Applicationプロジェクトが作成されると、ソースフォルダに以下のファイルがあります:
- Main.cpp:JUCEApplication クラスから派生したもので、アプリケーションとウィンドウの初期化コードを提供します。
- MainComponent.cpp:AudioAppComponent クラスから派生したMainComponentのヘッダーと実装ファイルです。
このプロジェクトタイプは、アプリケーションにGUIを備えたオーディオ入出力機能が必要な場合に使用します。
Audio Application プロジェクトの詳細については、 チュートリアル:ホワイトノイズジェネレーターを作る を参照してください。
アニメーションアプリケーション
アニメーション・アプリケーションはGUIアプリケーションと似ていますが、MainComponentが Component クラスから派生するのではなく、 AnimatedAppComponent クラスから派生します。
AnimatedAppComponent クラスは、 Component と Timer の機能を組み合わせた抽象ベースクラスで、 アニメーションを表示するための便利なスタートポイントを提供します。
アニメーションアプリケーションプロジェクトが作成されると、ソースフォルダに以下のファイルがあります:
- Main.cpp:JUCEApplication クラスから派生したもので、アプリケーションとウィンドウの初期化コードを提供します。
- MainComponent.cpp:AnimatedAppComponent クラスから派生したMainComponentのヘッダーと実装ファイルです。
アプリケーションの GUI に簡単なアニメーションを作成する場合にこのプロジェクトタイプを使用します。
Animated Applicationプロジェクトの詳細については、チュートリアルの チュートリアル:ジオメトリのアニメーション を参照してください。
OpenGLアプリケーション
OpenGLアプリケーションはGUIアプリケーションに似ているが、MainComponentが Component クラスから派生する代わりに、 OpenGLAppComponent クラスから派生する。
OpenGLAppComponent クラスは、 Component と OpenGLRenderer の機能を組み合わせた抽象基底クラスで、複雑なグラフィックスをレンダリングするための便利な出発点を提供します。
OpenGLアプリケーション・プロジェクトが作成されると、ソース・フォルダーに以下のフ ァイルがあります:
- Main.cpp:JUCEApplication クラスから派生したもので、アプリケーションとウィンドウの初期化コードを提供します。
- MainComponent.cpp:OpenGLAppComponent クラスから派生した MainComponent のヘッダーと実装ファイルです。
アプリケーションのGUIでOpenGLを使用して複雑なグラフィック要素をレンダリングしたい場合にこのプロジェクトタイプを使用します。
OpenGLアプリケーション・プロジェクトの詳細については、チュートリアルの チュートリアル:OpenGLアプリケーションのビルド を参照してください。
コマンドラインプロジェクト
コンソールアプリケーション
コンソールアプリケーションのプロジェクトが作成されると、ソースフォルダに以下のファイルがあります:
Main.cpp:Main.cpp:Cスタイルの main() 関数を提供し、対応するコマンドライン引数でアプリケーションを実行します。 バイナリがコマンドラインで実行されると、以下の関数が呼び出されます
int main (int argc, char* argv[])
{
// ..your code goes here!
return 0;
}
このプロジェクト・タイプでは、Main.cpp ファイルにクラスは作成されず、
ベース・クラスも継承されませんが、.jucer
ファイルと JUCE ライブラリ・コード・フォル ダが作成されます。
このプロジェクト・タイプは、アプリケーションにGUIを必要とせず、コマンドライン・コンソールでアプリケーションを実行したい場合に使用します。
プラグインプロジェクト
オーディオプラグイン
Audio Pluginプロジェクトは、Projucerが提供する他のテンプレート・プロジェクトと比較して、全体的に異なるプロジェクト構造を持っており、 AudioProcessor と AudioProcessorEditor を作成します。
AudioProcessor クラスは、 オーディオプラグインのオーディオ処理を処理する抽象的な基本クラスです。 ロードされたプラグインのインスタンスを表し、VST、AU、RTAS、AAXなどの異なるプラグインフォーマットによってラップされます。
AudioProcessorEditor クラスは Component クラスから派生した基底クラスで、 オーディオプラグインのGUI機能を保持します。
Audio Pluginプロジェクトが作成されると、ソースフォルダに以下のファイルがあります:
- PluginProcessor.h:AudioProcessor クラスから派生したPluginProcessorのヘッダーファイル。
- PluginProcessor.cpp:AudioProcessor クラスから派生したPluginProcessorの実装ファイル。
- PluginEditor.h:AudioProcessorEditor クラスから派生した PluginEditor のヘッダーファイル。
- PluginEditor.cpp:AudioProcessorEditor クラスから派生したPluginEditorの実装ファイル。
このプロジェクト・タイプは、DAWまたはGUIを備えたスタンドアロン・アプリケーションでホストできるプラグインを作成する場合に使用します。
Audio Pluginプロジェクトの詳細については、チュートリアル 基本的なAudio/MIDIプラグインを作る パート1:セットアップ をご参照ください。
ライブラリープロジェクト
静的/動的ライブラリ
他のプロジェクトで使用するライブラリを作成することに興味がある場合、Projucerは静的および動的ライブラリを作成するオプションを提供します。
このプロジェクトタイプでは、ソースファイルは作成されませんが、.jucerファイルとJUCEライブラリコードフォルダが作成されます。
そして、いつでもJUCEモジュールにアクセスできる利便性と共に、ファイルを自由に追加することができます。
概要
このチュートリアルでは、さまざまなタイプのProjucerテンプレートプロジ ェクトについて学びました。特に
- 各テンプレートがどのように特定のタイプのプロジェクトを呼び出しているかを学んだ。
- JUCEの様々なクラスは、そのような様々なプロジェクトを促進する。
- JUCEフレームワークの基本的な仕組みを理解。