VST GUIにおけるコントロールの定期更新

VST GUIにおけるコントロールの定期更新

音声処理クラスからパラメータ情報のフィードバックを受け取った場合やアニメーション行う場合など、コントロールを定期的に更新したい場合があります。今回はその実装方法を説明いたします。

なお、VST GUIの基本的な作成方法として下記をご理解いただいている前提で進めさせていただきます。

また、こちらのTipsで紹介している各コントロールを作成する関数も使用しています。

コントロールを定期的に更新するには、タイマーを使います。
タイマーはVST GUIに標準で組み込まれており、0.1秒ごとに動作します。
(タイマーの動作する間隔は変更できます。変更する方法は別途記載予定です。)

まず、定期的に更新したいコントロールをVST GUIクラスのopen()関数内で作成します。サンプルではつまみ(ノブ)コントロールを作成しています。(参考:「つまみ(ノブ)の実装」)
コントロール作成時に作成したコントロールのポインタをあらかじめ定義したメンバー変数に保存しておきます。メンバー変数はあらかじめ定義しておきます。

【guieditor.h】

【guieditor.cpp】

タイマーは動作したときにkMsgTimerメッセージをVST GUIクラスに通知します。
このkMsgTimerメッセージを受け取れるよう、notify()関数を新たにVSTGUIEditorクラスから継承して定義します。

【guieditor.h】

最後にnotify()関数の中身を記載します。

タイマーが動作したときmessageにkMsgTimerが設定されてnotify()関数が呼び出されるので、それに合わせてパラメータ操作クラスからパラメータ値を取得し、つまみ(ノブ)コントロールに設定しています。そして、つまみ(ノブ)コントロールのsetDirty()関数を呼び出し、画像を更新しています。

returnで値を返す際は、必ず継承元(VSTGUIEditorクラス)のnotify()関数を呼び出しておいてください。

以上でコントロールの定期更新ができます。

上記以外にもVST3.6についての情報があります。下記をご参照ください。

また、質問やご指摘はコメント欄や掲示板Twitterでいただけばとおもいます。

掲示板
■Twitterアカウント:@vstcpp   URL:https://twitter.com/vstcpp


コメントを残す