したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

C++でVST作りの指摘・質問

1管理人:2010/12/10(金) 18:06:52
「C++でVST作り」内の誤記やサンプルコードのバグ、指摘・質問等がございましたらこちらへお願いいたします。

C++でVST作り→http://www39.atwiki.jp/vst_prog/

157管理人★:2018/02/13(火) 21:57:22
ちなみに…
タイマーの使い方はVSTGUIEditorクラスのnotify関数をオーバライドして使います。

下記のような方法で実装すればオートメーションに伴ってGUIが更新されるはずです。
(動作確認したわけではないので、動かなかったら教えてください。)
なお、インデントは全角スペースになっているのでご注意ください。

①VST GUIクラス(VSTGUIEditorを継承したクラス)でコントロール用の変数を定義
 (ここではつまみ(ノブ)コントロールとしています。)
【例】
CKnob* knob1;

②notify関数をオーバーライド
【例】
public:
 CMessageResult notify(CBaseObject *sender, const char *message);

③open関数でコントロールを作成した際にポインタを保存しておく
【例】
bool PLUGIN_API MyVSTGUIEditor::open(void* parent, const PlatformType& platformType)
{
// GUIウィンドウが開かれたときに、UIを作成する
  〜〜 中略 〜〜

  // つまみ(ノブ)コントロールを作成( createKnob関数は http://vstcpp.wpblog.jp/?p=1550 参照)
  knob1 = (CKnob*)createKnob(1, 20, 20);

  〜〜 中略 〜〜
}

④notify関数でタイマーイベントを受け取り、コントロールを更新
 (コントロールの更新はsetDirty関数を使います。)
【例】
CMessageResult MyVSTGUIEditor::notify(CBaseObject *sender, const char *message)
{
  if (message == CVSTGUITimer::kMsgTimer)
  {
    if (knob1 != nullptr)
    {
      knob1 ->setDirty(); // 表示を更新
    }
  }

  return VSTGUIEditor::notify(sender, message);
}

158管理人★:2018/02/13(火) 22:15:27
すいません…。
「④notify関数でタイマーイベントを受け取り、コントロールを更新」で
パラメーターの値を取得する必要がありそうです。

CMessageResult MyVSTGUIEditor::notify(CBaseObject *sender, const char *message)
{
  if (message == CVSTGUITimer::kMsgTimer)
  {
    if (knob1 != nullptr)
    {
       // 現在の値をパラメーター操作クラスから取得し反映する
      ParamID tag = 1;
      ParamValue value = controller->getParamNormalized(tag);
      knob1->setValueNormalized(value);

      knob1->setDirty(); // 表示を更新
    }
  }

  return VSTGUIEditor::notify(sender, message);
}


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板