情弱

情弱のVST作製メモ

JUCE-AudioProcessorParameter Classを使ったパラメータ管理あれこれ 1

AudioProcessorParameter Class

 JUCEには、パラメータを管理するクラスとしてAudioProcessorParameter Classが用意されている。どうやら、利用したいパラメータの数だけこのオブジェクトを用意してやれば、簡単にパラメータの数を追加できるっぽい。

 

パラメータの追加

 今回は、整数値を取り扱うパラメータを追加してみる。int型のパラメータを取り扱うためのAudioParameterInt Classのオブジェクト (AudioProcessorParameterの派生Class)を作製し登録すると、パラメータが追加される (Source 1 and Fig. 1)。

f:id:aogiri_m2d:20170115144648j:plain

 Fig. 1: 1 ~ 3の値が設定できるパラメータparamAが追加された

 

パラメータテキストに設定した数値以外の値を返す

 ここから本題。このパラメータ管理、デフォルトだとパラメータテキストの欄に設定した数値がそのまま返ってくる。すなわち、オブジェクト作製時に指定した、最小値1から最大値3までの整数しか表示されない。地味に困る。

 そこで、雑なやり方ではあるが設定したパラメータ(値)に対応した文字列を返す方法をメモしておく。試しにparamA = 1のとき "a"、paramA = 2のとき"b"、paramA = 3のとき"c"の文字列を返すということを行ってみる(Source 2 and Fig. 2)

  1. 各パラメータの表示用文字列を格納する配列textDeta[n]を用意。nは全パラメータ数。
  2. パラメータテキストをホストに伝える関数String getParameterText(int index, int)をoverrideし、指定されたパラメータ番号(index)に対応した、textDetaの要素をホストに返すようにする
  3. textDeta[index]に要素を代入する。paramObjPtr->get()で、paramObjPtrの現在の値が取得できる。また、paramObjPtr-> getParameterIndex()で、paramObjPtrのindex番号が取得できるので、この辺使えば何とかなる。

f:id:aogiri_m2d:20170115153925j:plain

Fig. 2: スライダーの位置に応じた文字列を返す。

getParameterIndex()のおかげで、パラメータ数が増えてもいけるはず。