プラグイン状態の保存と読み込み
プラグインパラメーターの自動管理パラメーターの保存とアクセスが簡単になり、特に効果的なユーザーインターフェースの構築がより簡単になります。
レベル:中級
プラットフォーム: Windows, macOS, Linux
クラス:AudioProcessorValueTreeState, ValueTree, XmlElement,
はじめる
このチュートリアルのデモ・プロジェクトのダウンロードはこちらから:PIP | ZIP。 プロジェクトを解凍し、Projucerで最初のヘッダーファイルを開きます。
このステップでヘルプが必要な場合は、チュートリアルを参照してください:Projucerパート1:Projucerを使い始める。
また、JUCE を使ってオーディオプラグインを構築し、これをお好みのオーディオホスト(Digital Audio Workstation など)にロードする方法も知っておく必要があります。 基本的なAudio/MIDIプラグインを作る パート1:セットアップ を参照してください。 オーディオプロセッサーのパラメーターの入門として、チュートリアル:プラグインパラメータの追加 も読んでおくのが理想的です。
デモプロジェクト
このデモ・プロジェクトは、JUCE/examples/Plugins
ディレクトリにあるGainPluginプロジェクトに大まかに基づいています
このプラグインは、1つのパラメータを使って入力信号のゲインを変更します。
これに加えて、入力信号の位相を反転させる phase invert* パラメータも持っています。
ゲインプロセッサー
TutorialProcessor
クラスのコードのほとんどは、Audio Plug-In プロジェクト・テンプレートを使用したときにProjucerによって生成されるものと同じです。
簡単にするために、プロセッサーのコードを.cppファイルと.hファイルに分けるのではなく、1つの.hファイルにまとめました。
プロセッサー用のエディターはGenericEditorクラスにあります。
プラグインのパラメータ管理に AudioProcessorValueTreeState クラスを使うことに は、いくつかの利点があります:
- ValueTree クラスは、本質的にアンドゥをサポートしています。
- ValueTree オブジェクトは、すでに(XMLへの)シリアライズとデシリアライズをサポートしています。
- ValueTree オブジェクトは、リスナーをアタッチすることができます。 つまり、AudioProcessorValueTreeState クラスは、ほぼ自動的にスライダーやボタンに接続し、スレッドセーフな方法でUIとプロセッサの状態を最新の状態に保つことができます。
AudioProcessorValueTreeState オブジェクトを使用するには、プロセッサクラスに1つ格納します:
private:
//==============================================================================
juce::AudioProcessorValueTreeState parameters;
AudioProcessorValueTreeState オブジェクトを別の場所に保存してもかまいませんが、各 AudioProcessorValueTreeState オブジェクトが必ずそうでなければならないことに注意してください:
1つのプロセッサにのみアタッチされていること。 プロセッサと同じライフタイムであること(お互いに依存関係があるため)。 AudioProcessorValueTreeState オブジェクトをプロセッサクラスに格納することで、これらの要件を満たすことが容易になります。
AudioProcessorValueTreeState コンストラクタには、アタッチする AudioProcessor サブクラスへの参照、UndoManager オブジェクトへのポインタ、 ValueTree の Identifier 、管理するパラメータを含む AudioProcessorValueTreeState::ParameterLayout が必要です。
AudioProcessorValueTreeState (AudioProcessor& processorToConnectTo,
UndoManager* undoManagerToUse,
const juce::Identifier& valueTreeType,
ParameterLayout parameterLayout);
このチュートリアルではアンドゥを実装しないので、UndoManager オブジェクトにはnullptr値を使います。nullptr値は、アンドゥのサポートを使用しないことを示します。