0

解決すべき新しい問題。

私の setParameter() では、値を「実際の値」まで設定するために使用します。私はvalue * (max - min) + min eg:value of 1.0 == 20000Hzまたはでそれらをフォーマットしていますvalue of 0.0 == -30dB

VSTGUI が 0 ~ 1 の値のみを受け入れるように見えるという問題があります。setParameter() 内のすべてのコードを書き直すよりも良い解決策はありますか?

sprintf() のようなものでしょうか?

編集: CAnimKnob クラスを使用しています。

4

2 に答える 2

0

aardvarkのコメントは正しいです、逆のオプションはあなたがここで望むものです。過去にvstguiを使用したことがあるので、これが機能することを確認できます。

このような周波数のアルゴリズムを使用している場合、ユーザーにとっては非常に難しいことを付け加えたいと思います。代わりに対数目盛を使用して、より高い周波数を選択しやすくする必要があります。そうしないと、ノブを1ステップ押すだけで、20kHzに近づくにつれて数百ヘルツの差が生じます。

于 2013-03-01T06:47:39.630 に答える
0

このアドバイスをありがとう。VSTGUI でリバース演算子を使用する方法を知っていれば、これが最初に行うことです。VSTGUI CAnimKnob は、0.0 から 1.0 までの float 値のみを受け入れます。線形か対数かは関係ありません。理解を深めるために、いくつかのコード フラグメントを次に示します。

次のようにプロセス関数を呼び出します。

case kFreq1: fFreq1 = value * (fFreqMax - fFreqMin) + fFreqMin;break;
case kGain1: fGain1 = value * (fGainMax - fGainMin) + fGainMin;break;
case kQ1 : fQ1 = value * (fQMax - fQMin) + fQMin;break;

これは、私のフィルタ コードが周波数の値 20 ~ 20000、ゲインの値 -30 ~ 30 で機能するためです。

VSTGUI のノブは、0 から 1 までの値のみを提供し、0 から 1 までの値のみを取得します。

したがって、主な質問は次のとおりです。コード内でfloat values 0-1fromをどこに戻すか?20 - 20000

于 2013-03-01T12:10:03.170 に答える