「VSTe VSTGUI inline UI Editor 基本的な使用方法」の版間の差分
77行目: | 77行目: | ||
*sub-pixmaps | *sub-pixmaps | ||
:フレーム連結ビットマップにおけるフレーム数(ビットマップ全体の高さ÷1フレームの高さ)基本的には自動で計算されます。指定する必要があるときに設定します。 | :フレーム連結ビットマップにおけるフレーム数(ビットマップ全体の高さ÷1フレームの高さ)基本的には自動で計算されます。指定する必要があるときに設定します。 | ||
*angle-start | |||
:ノブの角度値の開始位置(半時計周りが正方向)。通常は135(90+45)[°]が開始位置になる。 | |||
*angle-range | |||
:ノブの角度値の終了位置(開始位置基準で時計周りが正方向)。通常は270(90*3)[°]が開始位置になる。 | |||
*value-inset | |||
:調査中 | |||
*zoom-factor | *zoom-factor | ||
:マウスでドラッグしたときの移動量によるパラメータの増減値の大きさ。指定した値が大きいほど微動で小さいほど粗動になる。 | :マウスでドラッグしたときの移動量によるパラメータの増減値の大きさ。指定した値が大きいほど微動で小さいほど粗動になる。 | ||
=== '''Controlタグを使うViewsの共通のパラメータ''' === | |||
*control-tag | |||
:Tagsパラメータで登録している値から選択して制御対象を決める部分。Tagsはメニュー[Edit]-[Sync Parameter Tags]でプログラム中でパラメータとして登録している値と同期をとることができる。 | |||
Tags値はプログラムでは以下の部分と同期している。 | |||
<syntaxhighlight lang="cpp"> | |||
tresult PLUGIN_API (任意のクラス名)::initialize(FUnknown* context) | |||
{ | |||
… | |||
tresult result = EditController::initialize(context); | |||
… | |||
if (result == kResultTrue) | |||
{ | |||
… | |||
RangeParameter* param1 = new RangeParameter(STR16("変数名"), 列挙番号, STR16(""), 0.0, 1.0, 0.8); | |||
parameters.addParameter(param1); | |||
… | |||
} | |||
} | |||
</syntaxhighlight> | |||
上記により、変数名と列挙番号の対になる値を取得する。列挙番号はパラメータ毎に唯一となるユニークな整数が付与すること。 | |||
*default-value | |||
:規定値を設定する。以下に示す。min-valueとmax-valueの中の値を設定する。 | |||
*min-value | |||
:最小値を設定する。規定値は0 | |||
*max-value | |||
:最大値を設定する。規定値は1 | |||
*wheel-inc-value | |||
:UI上でマウスホイールを動かした時の増減値。小さいほど微動、大きいほど粗動 | |||
=== '''全てのViewsの共通のパラメータ''' === | |||
*origin | |||
:UIを配置するx座標,y座標の値。 | |||
*size | |||
:UIの大きさを表すx座標量,y座標量。 | |||
*opacity | |||
:下地と重ね合わせる場合の不透明度。 | |||
*[ ]transparent 規定値 Off | |||
: | |||
*[ ]mouse-enable 規定値 on | |||
: | |||
*[ ]wants-focus 規定値 Off | |||
: | |||
*bitmap | |||
:各UIの主要な外観となる画像をBitmapsで定義したものから選択。Animation系ViewとOnOffButtonとKickButtonは垂直フレーム連結画像を指定。 | |||
*disabled-bitmap | |||
: | |||
*auto-size([ ]left/[ ]top/[ ]bottom/[ ]right) | |||
: | |||
*tooltip | |||
: | |||
*custom-view-name | |||
: | |||
*sub-controller | |||
: | |||
*uidesc-label | |||
: | |||
[[プラグイン VST#VSTeプログラミング初歩|VSTeプログラミング初歩]]に戻る。 | [[プラグイン VST#VSTeプログラミング初歩|VSTeプログラミング初歩]]に戻る。 |
2023年5月30日 (火) 16:21時点における版
VSTeプログラミング初歩に戻る。
プラグイン開発 概要
VSTGUI inline UI Editorの項目一覧にVSTGUI inline UI Editorの全貌をまとめましたので、これについてひとつづづ確認してみようとする記事です。
アニメーションノブ AnimationKnob について
VSTGUI inline UI EditorでKnobを作るときに、Animation Knob、OnOffButton、Kick Buttonという方式を使う場合、同一pngファイル内にアニメーションするように画像を並べて読み込ませるような連続フレーム画像が必要になります。Animation Knobでもノブ以外にスライダーやUVメータのようなデザインを割り当てることで、動作を表現できます。ノブとは回転させるようなつまみの操作部分です。OnOffButtonは、0と1を切り替えるような2値で、0のときの図柄と1のときの図柄を連続フレームのように同じ画像内で並べるような形で表現します。Kick Buttonは、押した瞬間。つまりクリックした瞬間だけ1になって一瞬図柄が変わるようなパターンです。連続フレームとは例えば、以下のような画像です。
https://www.g200kg.com/en/webknobman/gallery.php?m=p&p=2006
一から作るとなるとかなりのデザインセンスが問われるところですが、数千にもおよぶフリーのノブが提供されているWebSiteがあります。
■KnobAnimation g200kg ギャラリー
です。しかも独自に開発されたJKnnobMAN 1.3というツールを使うと少しカスタマイズまでできてしまう形式で提供されています。JKnnobMAN 1.3はWebアプリとしても提供されていて、Web版はWebKnobMANという名前です。
にアクセスすることで、使えます。でも最初は、Mac OR Winのアプリケーション版で使い方をマスターしてから、使うとよいでしょう。ギャラリーから納得のいくノブをみつけたらクリックすると3つのアクションが選べます。
- *.knobファイルとしてダウンロード
- 簡単png形式変換
- WebKnobMANで開く
の3つです。真ん中を選んで、遷移する画面で画像の大きさと回転のステップ数(Rendering Frame)を数値で指定して Export Exec(エクスポートを実行)ボタンを押すと*.pngとして出力されたものがダウンロードできます。
JKnobMANでさらなるカスタマイズを覚えるには、一番目の*.knobファイルをダウンロードして、ツールで読み込んでいろいろ操作してみるのが楽しいです。このツールのチカラも借りながら、自分で唯一のKnobファイルを作るのも楽しいです。Knobマニアは3Dモデリングツールでノブをデザインしてみたりしてリアルなものを作ったりもします。ギャラリーにはそういった過程を経たすごいものもあります。
上達してきたらWeb版を使ってみるのもよいでしょう。
自分はこのギャラリーから一つを選らんで使い続けてみることにします。まず、選んだこのノブは64[px]x64[px]の32個分です。縦は64[px]*32で2048[px]です。では選んだ画像を以下に一覧してみましょう。
https://www.g200kg.com/en/webknobman/gallery.php?m=p&p=1558
- 143[px]×64[px]
https://www.g200kg.com/en/webknobman/gallery.php?m=p&p=2006
- 64[px]x64[px]
https://www.g200kg.com/en/webknobman/gallery.php?m=p&p=1596
- 64[px]x64[px]
- 64[px]x64[px]
inline UI Editorのパラメータ
AnimationKnobのパラメータ
- inverse-bitmap
- フレーム連結ビットマップの反転(下側に配置したものが0、上側が1になる。)
- height-of-one-image
- 1フレームあたりの高さピクセル数
- sub-pixmaps
- フレーム連結ビットマップにおけるフレーム数(ビットマップ全体の高さ÷1フレームの高さ)基本的には自動で計算されます。指定する必要があるときに設定します。
- angle-start
- ノブの角度値の開始位置(半時計周りが正方向)。通常は135(90+45)[°]が開始位置になる。
- angle-range
- ノブの角度値の終了位置(開始位置基準で時計周りが正方向)。通常は270(90*3)[°]が開始位置になる。
- value-inset
- 調査中
- zoom-factor
- マウスでドラッグしたときの移動量によるパラメータの増減値の大きさ。指定した値が大きいほど微動で小さいほど粗動になる。
Controlタグを使うViewsの共通のパラメータ
- control-tag
- Tagsパラメータで登録している値から選択して制御対象を決める部分。Tagsはメニュー[Edit]-[Sync Parameter Tags]でプログラム中でパラメータとして登録している値と同期をとることができる。
Tags値はプログラムでは以下の部分と同期している。
tresult PLUGIN_API (任意のクラス名)::initialize(FUnknown* context)
{
…
tresult result = EditController::initialize(context);
…
if (result == kResultTrue)
{
…
RangeParameter* param1 = new RangeParameter(STR16("変数名"), 列挙番号, STR16(""), 0.0, 1.0, 0.8);
parameters.addParameter(param1);
…
}
}
上記により、変数名と列挙番号の対になる値を取得する。列挙番号はパラメータ毎に唯一となるユニークな整数が付与すること。
- default-value
- 規定値を設定する。以下に示す。min-valueとmax-valueの中の値を設定する。
- min-value
- 最小値を設定する。規定値は0
- max-value
- 最大値を設定する。規定値は1
- wheel-inc-value
- UI上でマウスホイールを動かした時の増減値。小さいほど微動、大きいほど粗動
全てのViewsの共通のパラメータ
- origin
- UIを配置するx座標,y座標の値。
- size
- UIの大きさを表すx座標量,y座標量。
- opacity
- 下地と重ね合わせる場合の不透明度。
- [ ]transparent 規定値 Off
- [ ]mouse-enable 規定値 on
- [ ]wants-focus 規定値 Off
- bitmap
- 各UIの主要な外観となる画像をBitmapsで定義したものから選択。Animation系ViewとOnOffButtonとKickButtonは垂直フレーム連結画像を指定。
- disabled-bitmap
- auto-size([ ]left/[ ]top/[ ]bottom/[ ]right)
- tooltip
- custom-view-name
- sub-controller
- uidesc-label
VSTeプログラミング初歩に戻る。