横型スライダーの実装

VST GUIにおける横型スライダーコントロールの実装

VST GUIにおいて横型スライダーコントロールを実装する方法を説明いたします。
なお、VST GUIの基本的な作成方法として下記をご理解いただいている前提で進めさせていただきます。

横型スライダーコントロールは下記のようなコントロールです。横型スライダーはドラッグしながら左右に動かすことで操作します。
横型スライダーは右にハンドルがある時に値が0.0、左にハンドルがある時に値が1.0になります。

似たようなコントロールで縦型スライダーコントロールもあります。

まず、横型スライダーコントロールを作成するにあたって、横型スライダーコントロール用の背景画像とハンドル画像を用意します。
ここでは下記の画像を使用しています。利用できる画像形式はPNGのみとなりますのでご注意ください。

【横型スライダーコントロール 背景画像】

【横型スライダーコントロール ハンドル画像】

次に上記の画像をプロジェクトで利用できるように、リソースファイルに追記します。

【resource.rc】

リソースファイルの記載方法はこちらもご参照ください。 → 最小構成のVST GUI

そして、VST GUIクラスのopen()関数内で、横型スライダーコントロールを生成する処理を追記いたします。
コントロールを生成する処理は関数にしております。関数作成自体は必須ではありませんが、複数のコントロールを作る場合などに便利なためです。

【guieditor.cpp】

createHSlider()関数の引数には、パラメータIDと座標(x、y)を指定するようにしています。
コントロールはパラメーターと関連付けるので、パラメータIDが必要になります。また、フレーム(描画領域)上の位置を指定するための座標(x、y)が必要になります。

createHSlider()関数ではまず、横型スライダーコントロールの背景画像とハンドル画像を読み込んでいます。

次に画像から横型スライダーコントロールのサイズを背景画像から取得し、CRect sizeにそのサイズを設定します。
このsizeはコントロールサイズだけでなくフレーム上の配置位置も兼ねています。CRectのoffset()関数を使用して位置を設定します。

各画像と配置位置・サイズが決まれば、CHorizontalSliderクラスを作成します。
CHorizontalSliderクラスのコンストラクタには、「サイズ」「VST GUIクラスのポインタ」「パラメータID」「最大時のハンドル位置」「最小時のハンドル位置」「ハンドル画像」「背景画像」の順に指定します。
※「最大時のハンドル位置」、「最小時のハンドル位置」や画像のマージンの関係は後述いたします。

これで横型スライダーコントロールが作成できるので、パラメータの現在の値を横型スライダーコントロールに反映し、フレームに登録すれば表示させることができます。

横型スライダーコントロール用の背景画像とハンドル画像はCHorizontalSlider側に設定され不要となるため解放しておきます。

作成したコントロール生成処理関数がコントロールのポインタを返すのは、後で他のコントロールと同期させたりするのに利用するためです。

また、VST GUIクラスのopen()関数内での呼び出しは下記のようにします。
【guieditor.cpp】

以上で横型スライダーコントロールを追加することができます。

createHSliderクラス コンストラクタの引数に指定する「最大時のハンドル位置」「最小時のハンドル位置」の変数名は間違いやすいのでご注意ください。

  • iMinPos → 最大時のハンドル位置
  • iMaxPos → 最小時のハンドル位置

また、「最大時のハンドル位置」「最小時のハンドル位置」の関係については下記のとおりとなります

ここでご紹介した横型スライダーコントロール用の画像はご自由にご利用いただいてかまいません。

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

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

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


コメントを残す