13 #ifndef _PluginParameter_H_ 14 #define _PluginParameter_H_ 55 PluginParameter(
int _controlID,
const char* _controlName,
const char* _controlUnits,
57 taper _controlTaper = taper::kLinearTaper, uint32_t _displayPrecision = 2);
60 PluginParameter(
int _controlID,
const char* _controlName, std::vector<std::string> _stringList, std::string _defaultString);
63 PluginParameter(
int _controlID,
const char* _controlName,
const char* _commaSeparatedList, std::string _defaultString);
66 PluginParameter(
int _controlID,
const char* _controlName,
double _meterAttack_ms,
double _meterRelease_ms,
67 uint32_t _detectorMode,
meterCal _meterCal = meterCal::kLinearMeter);
212 return actualParamValue;
258 case taper::kLinearTaper:
261 case taper::kLogTaper:
264 case taper::kAntiLogTaper:
267 case taper::kVoltOctaveTaper:
284 case taper::kLinearTaper:
287 case taper::kLogTaper:
290 case taper::kAntiLogTaper:
293 case taper::kVoltOctaveTaper:
315 case taper::kLinearTaper:
319 case taper::kLogTaper:
323 case taper::kAntiLogTaper:
327 case taper::kVoltOctaveTaper:
350 if(
controlType == controlVariableType::kTypedEnumStringList)
371 return (
int)std::distance(
stringList.begin(), it);
392 if (normalizedValue == 1.0)
396 aln = fmin(1.0, aln);
439 double smoothedValue = 0.0;
456 if(dataType == boundVariableType::kDouble)
457 boundVariableDouble = (
double*)boundVariable;
458 else if(dataType == boundVariableType::kFloat)
459 boundVariableFloat = (
float*)boundVariable;
460 else if(dataType == boundVariableType::kInt)
461 boundVariableInt = (
int*)boundVariable;
462 else if(dataType == boundVariableType::kUInt)
463 boundVariableUInt = (uint32_t*)boundVariableUInt;
483 if (boundVariableUInt)
488 else if (boundVariableInt)
493 else if (boundVariableFloat)
498 else if (boundVariableDouble)
513 if (boundVariableUInt)
518 else if (boundVariableInt)
523 else if (boundVariableFloat)
528 else if (boundVariableDouble)
553 if (
this == &aPluginParameter)
653 if (normalizedValue == 0)
656 return minValue*pow(2.0, normalizedValue*octaves);
772 uint32_t* boundVariableUInt =
nullptr;
773 int* boundVariableInt =
nullptr;
774 float* boundVariableFloat =
nullptr;
775 double* boundVariableDouble =
nullptr;
777 typedef std::map<uint32_t, AuxParameterAttribute*> auxParameterAttributeMap;
778 auxParameterAttributeMap auxAttributeMap;
void setAtomicControlValueFloat(float value)
get atomic variable as float
Definition: pluginparameter.h:599
double getNormalizedVoltOctaveDefaultValue()
get volt/octave default value in normalized form
Definition: pluginparameter.h:762
bool getParameterSmoothing()
query parameter smoothing flag
Definition: pluginparameter.h:143
double getControlValue()
the main function to access the underlying atomic double value
Definition: pluginparameter.h:167
bool isMeterParam()
query: meter param?
Definition: pluginparameter.h:115
void setParameterSmoothing(bool value)
set inverted meter flag
Definition: pluginparameter.h:144
void setSmoothedTargetValue(double value)
set atomic TARGET smoothing variable with double
Definition: pluginparameter.h:605
void setControlVariableType(controlVariableType ctrlVarType)
set variable type associated with parameter
Definition: pluginparameter.h:91
uint32_t detectorMode
meter detector mode
Definition: pluginparameter.h:624
double setControlValueNormalized(double normalizedValue, bool applyTaper=true, bool ignoreParameterSmoothing=false)
the main function to set the underlying atomic double value using a normalized value; this is the ope...
Definition: pluginparameter.h:196
double minValue
the min for the parameter
Definition: pluginparameter.h:589
bool isDiscreteSwitch
flag for switches (not currently used in ASPiK)
Definition: pluginparameter.h:619
std::atomic< float > controlValueAtomic
the underlying atomic variable
Definition: pluginparameter.h:596
AuxParameterAttribute * getAuxAttribute(uint32_t attributeID)
get aux data
Definition: pluginparameter.cpp:331
double getVoltOctaveControlValueFromNormValue(double normalizedValue)
get volt/octave control value from a normalized value
Definition: pluginparameter.h:650
double getSmoothingTimeMsec()
query smoothing time
Definition: pluginparameter.h:146
bool protoolsGRMeter
meter is a Pro Tools gain reduction meter
Definition: pluginparameter.h:627
Interface for VST3 parameter value update queue (sample accurate automation)
Definition: pluginstructures.h:1329
bool isLinearTaper()
query: linear taper
Definition: pluginparameter.h:109
void initParamSmoother(T smoothingTimeInMs, T samplingRate, T initValue, T minControlValue, T maxControlValue, smoothingMethod smoother=smoothingMethod::kLPFSmoother)
Definition: guiconstants.h:329
double getMaxValue()
get maximum value
Definition: pluginparameter.h:96
std::atomic< float > smoothedTargetValueAtomic
the underlying atomic variable TARGET for smoothing
Definition: pluginparameter.h:604
bool smoothParameter(T in, T &out)
Definition: guiconstants.h:353
bool getInvertedMeter()
query inverted meter flag
Definition: pluginparameter.h:137
void setEnableVSTSampleAccurateAutomation(bool value)
set VST3 sample accurate automation
Definition: pluginparameter.h:156
smoothingMethod smoothingType
param smoothing type
Definition: pluginparameter.h:631
double antiLogNormToNorm(double aLogNormalizedValue)
Definition: pluginparameter.h:401
int findStringIndex(std::string searchString)
find a string in the list of a string-list parameter
Definition: pluginparameter.h:361
double getControlValueNormalized()
get control value as normalied value
Definition: pluginparameter.h:279
bool getIsWritable()
query writable control (meter)
Definition: pluginparameter.h:152
void setBoundVariable(void *boundVariable, boundVariableType dataType)
save the variable for binding operation
Definition: pluginparameter.h:452
void setIsDiscreteSwitch(bool _isDiscreteSwitch)
get is switch (not used)
Definition: pluginparameter.h:103
double logNormToNorm(double logNormalizedValue)
Definition: pluginparameter.h:384
std::string controlUnits
the units string for the parameter
Definition: pluginparameter.h:585
double getNormalizedVoltOctaveControlValue()
get get volt/octave control value in normalized form
Definition: pluginparameter.h:681
uint32_t getControlID()
get ID value
Definition: pluginparameter.h:81
bool appendUnits
flag to append units in GUI controls (use with several built-in custom views)
Definition: pluginparameter.h:617
smoothingMethod
Use this strongly typed enum to easily set the smoothing type.
Definition: guiconstants.h:222
bool isLogTaper()
query: log taper
Definition: pluginparameter.h:110
std::string getControlValueAsString()
the main function to access the underlying atomic double value as a string
Definition: pluginparameter.cpp:227
bool getIsDiscreteSwitch()
set is switch (not used)
Definition: pluginparameter.h:102
uint32_t displayPrecision
sig digits for display
Definition: pluginparameter.h:610
double getGUIMin()
Definition: pluginparameter.h:345
void setSmoothingTimeMsec(double value)
set inverted meter flag
Definition: pluginparameter.h:147
void setMeterAttack_ms(double value)
set meter attack time (ballistics)
Definition: pluginparameter.h:126
PluginParameter()
simple constructor - you can always use this and then use the massive number of get/set functions to ...
Definition: pluginparameter.cpp:169
double normToAntiLogNorm(double normalizedValue)
Definition: pluginparameter.h:390
void setControlID(uint32_t cid)
set ID value
Definition: pluginparameter.h:82
double normToLogNorm(double normalizedValue)
Definition: pluginparameter.h:378
globally utilized structures and enumerations
boundVariableType boundVariableDataType
bound data type
Definition: pluginparameter.h:636
meterCal
Use this strongly typed enum to easily set meter calibration.
Definition: guiconstants.h:252
bool updateInBoundVariable()
perform the variable binding update (change the value)
Definition: pluginparameter.h:481
uint32_t getDetectorMode()
get meter detect mode
Definition: pluginparameter.h:131
bool isAntiLogTaper()
query: antilog taper
Definition: pluginparameter.h:111
void setDisplayPrecision(uint32_t precision)
set sig digits
Definition: pluginparameter.h:123
double getSmoothedTargetValue() const
set atomic TARGET smoothing variable with double
Definition: pluginparameter.h:606
void setControlTaper(taper ctrlTaper)
set taper
Definition: pluginparameter.h:106
double getNormalizedControlValue()
get control value as normalized value (helper)
Definition: pluginparameter.h:705
bool isDoubleParam()
query: double param?
Definition: pluginparameter.h:118
PluginParameter & operator=(const PluginParameter &aPluginParameter)
Definition: pluginparameter.h:551
void initParamSmoother(double sampleRate)
initialize or reset the parameter smoother object
Definition: pluginparameter.h:411
uint32_t setAuxAttribute(uint32_t attributeID, const AuxParameterAttribute &auxParameterAtribute)
set aux data
Definition: pluginparameter.cpp:314
double getNormalizedDefaultValue()
get default value as a normalized value (helper)
Definition: pluginparameter.h:730
bool isVoltOctaveTaper()
query: volt/octave taper
Definition: pluginparameter.h:112
void setControlUnits(const char *units)
set units as const char*
Definition: pluginparameter.h:88
std::string getStringByIndex(uint32_t index)
get string-list string by index
Definition: pluginparameter.cpp:281
bool enableVSTSampleAccurateAutomation
VST3 sample accurate flag.
Definition: pluginparameter.h:642
double getDefaultValue()
get default value
Definition: pluginparameter.h:99
ParamSmoother< double > paramSmoother
param smoothing object
Definition: pluginparameter.h:633
void setCommaSeparatedStringList()
convert the string-list into a comma-separated list (during construction)
Definition: pluginparameter.cpp:293
controlVariableType
Use this strongly typed enum to easily set the control's behavior; this tells the PluginParameter obj...
Definition: guiconstants.h:270
double getMinValue()
get minimum value
Definition: pluginparameter.h:93
double getNormalizedAntiLogDefaultValue()
get anti-log default value in normalized form
Definition: pluginparameter.h:752
boundVariableType getBoundVariableType()
get the datatype of the bound variable
Definition: pluginparameter.h:474
bool isProtoolsGRMeter()
query pro tools GR meter flag
Definition: pluginparameter.h:140
double getControlValueWithNormalizedValue(double normalizedValue, bool applyTaper=true)
get the new control value as if it were set with a normalized value
Definition: pluginparameter.h:305
bool logMeter
meter is log
Definition: pluginparameter.h:625
bool updateOutBoundVariable()
perform the variable binding update on meter data
Definition: pluginparameter.h:511
std::vector< std::string > stringList
string list
Definition: pluginparameter.h:613
double meterAttack_ms
meter attack time in milliseconds
Definition: pluginparameter.h:622
smoothingMethod getSmoothingMethod()
query smoothing method
Definition: pluginparameter.h:149
void setInvertedMeter(bool value)
set inverted meter flag
Definition: pluginparameter.h:138
bool useParameterSmoothing
enable param smoothing
Definition: pluginparameter.h:630
double getMeterRelease_ms()
get meter release time (ballistics)
Definition: pluginparameter.h:128
IParameterUpdateQueue * getParameterUpdateQueue()
retrieves the update queue for VST3 sample accuate automation; note this is only used during actual D...
Definition: pluginparameter.h:548
double getControlValueFromNormalizedValue(double normalizedValue)
get control value with a normalized value (helper)
Definition: pluginparameter.h:718
bool isFloatParam()
query: float param?
Definition: pluginparameter.h:117
const double kCTCoefficient
concave and/or convex transform correction factor
Definition: guiconstants.h:117
const char * getControlName()
get name as const char*
Definition: pluginparameter.h:84
bool isNonVariableBoundParam()
query: non-bound param?
Definition: pluginparameter.h:120
size_t getStringCount()
get the number of individual strings in a string-list control
Definition: pluginparameter.h:227
std::string commaSeparatedStringList
string list a somma separated string
Definition: pluginparameter.h:614
void setControlValue(double actualParamValue, bool ignoreSmoothing=false)
the main function to set the underlying atomic double value
Definition: pluginparameter.h:175
bool invertedMeter
meter is inverted
Definition: pluginparameter.h:626
double getGUIMax()
Definition: pluginparameter.h:348
taper getControlTaper()
get taper
Definition: pluginparameter.h:105
void setParameterUpdateQueue(IParameterUpdateQueue *_parameterUpdateQueue)
stores the update queue for VST3 sample accuate automation; note this is only used during actual DAW ...
Definition: pluginparameter.h:541
double getDefaultValueNormalized()
get default value as normalied value
Definition: pluginparameter.h:253
void updateSampleRate(double sampleRate)
change any sample-rate dependent members
Definition: pluginparameter.h:426
bool isIntParam()
query: int param?
Definition: pluginparameter.h:119
globally utilized constants and enumerations
boundVariableType
Use this strongly typed enum to easily set the control's linked variable datatype (for automatic vari...
Definition: guiconstants.h:286
controlVariableType getControlVariableType()
get variable type associated with parameter
Definition: pluginparameter.h:90
void setIsProtoolsGRMeter(bool value)
set inverted meter flag
Definition: pluginparameter.h:141
double maxValue
the max for the parameter
Definition: pluginparameter.h:590
void setDefaultValue(double value)
set default value
Definition: pluginparameter.h:100
double getAtomicControlValueDouble() const
set atomic variable with double
Definition: pluginparameter.h:601
void setAtomicControlValueDouble(double value)
get atomic variable as double
Definition: pluginparameter.h:602
Information about auxilliary parameter details - purely customizeable. This uses the attributeValue u...
Definition: pluginstructures.h:688
void setStringList(std::vector< std::string > _stringList)
set the string-list using a vector of strings
Definition: pluginparameter.h:244
virtual ~PluginParameter()
only need to clean out the aux parameters - everything else is self deleting
Definition: pluginparameter.cpp:211
void setSmoothingMethod(smoothingMethod smoothingMethod)
set smoothing method
Definition: pluginparameter.h:150
controlVariableType controlType
the control type
Definition: pluginparameter.h:586
bool smoothParameterValue()
perform smoothing operation on data
Definition: pluginparameter.h:436
void setMinValue(double value)
set minimum value
Definition: pluginparameter.h:94
The PluginParameter object stores all of the data needed for any type of plugin parameter. It is a large object, but it is not complex as it really just stores LOTS of information about plugin parameters.
Definition: pluginparameter.h:51
int controlID
the ID value for the parameter
Definition: pluginparameter.h:583
void setMaxValue(double value)
set maximum value
Definition: pluginparameter.h:97
double getNormalizedControlValueWithActual(double actualValue)
convert actual control value into normalized value (helper)
Definition: pluginparameter.h:695
const char * getControlUnits()
get units as const char*
Definition: pluginparameter.h:87
float getAtomicControlValueFloat() const
set atomic variable with float
Definition: pluginparameter.h:598
std::string controlName
the name string for the parameter
Definition: pluginparameter.h:584
const char * getCommaSeparatedStringList()
get the strings in a string-list control as a comma separated list
Definition: pluginparameter.h:234
IParameterUpdateQueue * parameterUpdateQueue
interface for VST3 sample accurate updates
Definition: pluginparameter.h:639
bool isStringListParam()
query: string list para,?
Definition: pluginparameter.h:116
double getNormalizedControlValueWithActualValue(double actualValue)
get the new normalized control value as if it were set with an actual value
Definition: pluginparameter.h:342
double getNormalizedLogDefaultValue()
get log default value in normalized form
Definition: pluginparameter.h:742
double getNormalizedAntiLogControlValue()
get get anti-log control value in normalized form
Definition: pluginparameter.h:672
void setControlName(const char *name)
set name as const char*
Definition: pluginparameter.h:85
void setLogMeter(bool value)
set log meter flag
Definition: pluginparameter.h:135
double getMeterAttack_ms()
get meter attack time (ballistics)
Definition: pluginparameter.h:125
bool getLogMeter()
query log meter flag
Definition: pluginparameter.h:134
void setSampleRate(T samplingRate)
Definition: guiconstants.h:309
double getNormalizedLogControlValue()
get get log control value in normalized form
Definition: pluginparameter.h:663
const uint32_t ENVELOPE_DETECT_MODE_RMS
SQRT((1/N)|x|^2)
Definition: guiconstants.h:183
bool getEnableVSTSampleAccurateAutomation()
query VST3 sample accurate automation
Definition: pluginparameter.h:155
void setMeterRelease_ms(double value)
set meter release time (ballistics)
Definition: pluginparameter.h:129
double smoothingTimeMsec
param smoothing time
Definition: pluginparameter.h:632
void setIsWritable(bool value)
set writable control (meter)
Definition: pluginparameter.h:153
bool isWritable
flag for meter variables
Definition: pluginparameter.h:618
uint32_t getDisplayPrecision()
get sig digits
Definition: pluginparameter.h:122
void setMeterDetectorMode(uint32_t value)
set meter detect mode
Definition: pluginparameter.h:132
taper controlTaper
the taper
Definition: pluginparameter.h:609
double defaultValue
the default value for the parameter
Definition: pluginparameter.h:591
double meterRelease_ms
meter release time in milliseconds
Definition: pluginparameter.h:623
taper
Use this strongly typed enum to easily set the control taper.
Definition: guiconstants.h:237