VST GUIにおける「ファイルを開く」ダイアログの実装

「ファイルを開く」ダイアログの実装

VSTでファイルを読み込む際に必要なファイル読み込み用の”「ファイルを開く」ダイアログ”の実装方法を説明いたします。

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

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


「ファイルを開く」ダイアログを開くにはCNewFileSelectorクラスとnotify()関数を使用します。

まず、VST GUIクラスにnotfy()関数を定義します。あわせて、「ファイルを開く」ダイアログを開くためのキックボタン用のメンバー変数も定義します。

【guieditor.h】

キックボタンはVST GUIクラスのopen()関数内で作成します。キックボタンの作成は「キックボタンの実装方法」で説明しています。
タグは実際にパラメーターと関連付ける必要はないので、適当な値を指定します。(むしろ関連付けてしまうとそのパラメーター値が変わるので、使用していないタグ番号を割り当てます。)

【guieditor.cpp】

GUIでキックボタンが押された際に「ファイルを開く」ダイアログを開くよう処理を追加します。
valueChanged()関数でキックボタンが押されたかどうかをチェックします。キックボタンが押された場合、CNewFileSelectorクラスを作成して「ファイルを開く」ダイアログを開きます。

「ファイルを開く」ダイアログのタイトルや拡張子の設定は下記の通りとなります。

「ファイルを開く」ダイアログでファイルのパスが取得できた場合、VST GUIクラスのnotify()関数が呼び出されます。
notify()関数でメッセージの内容を確認し、「ファイルを開く」ダイアログのパス取得メッセージであった場合にファイルの読込などの処理を行います。

【guieditor.cpp】

以上でファイル読み込み用の「ファイルを開く」ダイアログの利用ができます。

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

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

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


One thought on “VST GUIにおける「ファイルを開く」ダイアログの実装

  1. うつぼかずら様

    大変お世話になっております。超初歩的な質問で大変失礼いたします(CもC++も素人です。)。
    ここで紹介いただいた方法で、ファイルのパス(UTF8StringPtr str)を取得し、「Wavファイルのフォーマットと読込」で紹介いただいているreadWavFileでwavファイルデータを読み込みたいと考えております。その際、readWavFile(str, …)とすると、「VSTGUI::UTF8StringPtrからchar[]へ変換できません」というコンパイルエラーが発生します。UTF8StringPtrからchar[]に変換するにはどのようにすればよいでしょうか?
    お手すきの時間がございましたらご教示いただけますと幸いです。

    1. sagamatさん

      UTF8StringPtrはconst char*なので、いくつか方法があるかと思います。
      1.strcpyなどでconst char*からchar*にコピーしてからreadWavFile()に渡す。
      2.readWavFile()の引数を「const char filename[]」にする。
       (合わせてCRiffLoaderのコンストラクタの引数も「const char filename[]」にする。)

  2. うつぼかずら様

    ご対応いただきまして、感謝申し上げます。後者のご提案を採用してみることにいたします。読み込み自体はまだうまくいっておりませんが、少なくともコンパイルエラーはなくなりました。お手数をおかけして申し訳ございません。ありがとうございました。

コメントを残す