LoginSignup
2
2

More than 5 years have passed since last update.

JUCEを使ったVST製作におけるファクトリープリセットの作り方

Last updated at Posted at 2018-11-02

概要

Juceライブラリを使ってVSTを開発したい.
一般のプログラムのようにファクトリープリセットを搭載したい.
VSTライブラリの側の関数をオーバーライドする.

結果

Studio One 2にて確認.ファクトリープリセットをこのようにして実装できた.
無題.png

やり方

VSTライブラリで,ファクトリープリセット用の関数があるのでオーバーライドして呼ぶ.
Juceを使う場合だと,AudioProcessorクラスが継承している.なのでプラグインの本体で呼び出すのが自然だと思う.

プリセットに関しては,JuceやVSTライブラリでも〇〇programといった呼び名で管理しているもよう.このキーワードで検索すると周辺情報も得られるだろう.

実際の記述.Juceのサンプルプラグインの例に従う場合には以下のように記述.
https://github.com/WeAreROLI/JUCE/tree/master/examples/Plugins

JuceDemoPluginAudioProcessor.h
class JuceDemoPluginAudioProcessor : public AudioProcessor
{
//変更点以外の関数記述は省略しています.

public:
   //プリセットの数を定義
   int getNumPrograms () override
   {
      return NUM_OF_PRESETS;
   }
   //現在のプリセットインデクス
   int getCurrentProgram () override
   {
      return currentProgIndex;
   }
   //プリセットのパラメータをハードコーディングする
   void setCurrentProgram (int index) override
   {
      switch(index) 
      {
      case 0:
         param1 = x;
         param2 = y;
         param3 = z;
         break;
      case 1:
         param1 = xx;
         param2 = yy;
         param3 = zz;
         break;
      case default:
         break;
      }
      //現在のプリセットインデクスはクラス内に記憶する
      currentProgIndex = index;
   }
   //プリセットの名前を記述していく
   const String getProgramName (int index) override
   {
      switch(index) 
      {
      case 0:
         return(PRESEST_NAME_00);
         break;
      case 1:
         return(PRESEST_NAME_01);
         break;
      case default:
         return("");
         break;
      }
   }

private:
   //現在のプリセットを変数として保持する
   int currentProgIndex = 0;
}

参考

プリセットのあるエフェクターを作成する | C++でVST作り

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2