19 #ifndef __VOLTOCTAVETAPERDELEGATE_H 20 #define __VOLTOCTAVETAPERDELEGATE_H 22 #include "AAX_ITaperDelegate.h" 23 #include "AAX_UtilsNative.h" 28 template <
typename T,
int32_t RealPrecision=1000>
52 T GetMinimumValue()
const {
return mMinValue; }
53 T GetMaximumValue()
const {
return mMaxValue; }
54 T ConstrainRealValue(T value)
const;
55 T NormalizedToReal(
double normalizedValue)
const;
56 double RealToNormalized(T realValue)
const;
59 T Round(
double iValue)
const;
62 inline double calcVoltOctaveParameter(
double fCookedParam)
const 64 double dOctaves = log2(getMax()/getMin());
65 return log2( fCookedParam/getMin() )/dOctaves;
70 inline double calcVoltOctavePluginValue(
double fPluginValue)
const 72 double dOctaves = log2(getMax()/getMin());
73 float fDisplay = getMin()*exp2(fPluginValue*dOctaves);
74 float fDiff = getMax() - getMin();
75 return (fDisplay - getMin())/fDiff;
78 double getMin()
const {
return (
double)mMinValue;}
79 double getMax()
const {
return (
double)mMaxValue;}
86 template <
typename T,
int32_t RealPrecision>
89 double precision = RealPrecision;
91 return static_cast<T
>(floor(iValue * precision + 0.5) / precision);
92 return static_cast<T
>(iValue);
95 template <
typename T,
int32_t RealPrecision>
103 template <
typename T,
int32_t RealPrecision>
109 template <
typename T,
int32_t RealPrecision>
113 value = Round(value);
115 if (value > mMaxValue)
117 if (value < mMinValue)
122 template <
typename T,
int32_t RealPrecision>
125 normalizedValue = calcVoltOctavePluginValue(normalizedValue);
126 double doubleRealValue = normalizedValue*(mMaxValue - mMinValue) + mMinValue;
127 T realValue = (T) doubleRealValue;
129 return ConstrainRealValue(realValue);
132 template <
typename T,
int32_t RealPrecision>
135 return calcVoltOctaveParameter(realValue);
138 #endif // __VOLTOCTAVETAPERDELEGATE_H Definition: VoltOctaveTaperDelegate.h:45