Loading...
Searching...
No Matches
juce::AudioProcessorParameter Class Referenceabstract

## Detailed Description

An abstract base class for parameter objects that can be added to an AudioProcessor.

See also
  AudioProcessor::addParameter

The documentation for this class was generated from the following file:

- juce_audio_processors_headless/processors/juce_AudioProcessorParameter.h

Inheritance diagram for juce::AudioProcessorParameter:

## Classes

class | Listener
| A base class for listeners that want to know about changes to an AudioProcessorParameter. More...

## Public Types

enum | Category { genericParameter = (0 << 16) | 0 , inputGain = (1 << 16) | 0 , outputGain = (1 << 16) | 1 , inputMeter = (2 << 16) | 0 , outputMeter = (2 << 16) | 1 , compressorLimiterGainReductionMeter = (2 << 16) | 2 , expanderGateGainReductionMeter = (2 << 16) | 3 , analysisMeter = (2 << 16) | 4 , otherMeter = (2 << 16) | 5 }

## Public Member Functions

| AudioProcessorParameter () noexcept=default
| AudioProcessorParameter (int versionHint)
| The version hint supplied to this constructor is used in Audio Unit plugins to aid ordering parameter identifiers when JUCE_FORCE_USE_LEGACY_PARAM_IDS is not enabled.
virtual | ~AudioProcessorParameter ()
| Destructor.
virtual float | getValue () const =0
| Called by the host to find out the value of this parameter.
virtual void | setValue (float newValue)=0
| The host will call this method to change the value of a parameter.
void | setValueNotifyingHost (float newValue)
| A processor should call this when it needs to change one of its parameters.
void | beginChangeGesture ()
| Sends a signal to the host to tell it that the user is about to start changing this parameter.
void | endChangeGesture ()
| Tells the host that the user has finished changing this parameter.
virtual float | getDefaultValue () const =0
| This should return the default value for this parameter.
virtual String | getName (int maximumStringLength) const =0
| Returns the name to display for this parameter, which should be made to fit within the given string length.
virtual String | getLabel () const =0
| Some parameters may be able to return a label string for their units.
virtual int | getNumSteps () const
| Returns the number of steps that this parameter's range should be quantised into.
virtual bool | isDiscrete () const
| Returns whether the parameter uses discrete values, based on the result of getNumSteps, or allows the host to select values continuously.
virtual bool | isBoolean () const
| Returns whether the parameter represents a boolean switch, typically with "On" and "Off" states.
virtual String | getText (float normalisedValue, int) const
| Returns a textual version of the supplied normalised parameter value.
virtual float | getValueForText (const String &text) const =0
| Should parse a string and return the appropriate value for it.
virtual bool | isOrientationInverted () const
| This can be overridden to tell the host that this parameter operates in the reverse direction.
virtual bool | isAutomatable () const
| Returns true if the host can automate this parameter.
virtual bool | isMetaParameter () const
| Should return true if this parameter is a "meta" parameter.
virtual Category | getCategory () const
| Returns the parameter's category.
int | getParameterIndex () const noexcept
| Returns the index of this parameter in its parent processor's parameter list.
void | setParameterIndex (int) noexcept
virtual String | getCurrentValueAsText () const
| Returns the current value of the parameter as a String.
virtual StringArray | getAllValueStrings () const
| Returns the set of strings which represent the possible states a parameter can be in.
int | getVersionHint () const
void | setOwner (Listener *listener) noexcept
void | addListener (Listener *newListener)
| Registers a listener to receive events when the parameter's state changes.
void | removeListener (Listener *listener)
| Removes a previously registered parameter listener.
void | sendValueChangedMessageToListeners (float newValue)

## Static Public Member Functions

static int | getDefaultNumParameterSteps () noexcept
| Returns the default number of steps for a parameter.

## Member Enums

## Category

enum juce::AudioProcessorParameter::Category

Enumerator
genericParameter | If your parameter is not a meter then you should use this category.
inputGain | Currently not used.
outputGain |
inputMeter | The following categories tell the host that this parameter is a meter level value and therefore read-only. Most hosts will display these type of parameters as a meter in the generic view of your plug-in. Pro-Tools will also show the meter in the mixer view.
outputMeter |
compressorLimiterGainReductionMeter |
expanderGateGainReductionMeter |
analysisMeter |
otherMeter |

## Constructors and Destructors

## AudioProcessorParameter() [1/2]

juce::AudioProcessorParameter::AudioProcessorParameter | ( |  | ) |

default noexcept

Referenced by AudioProcessorParameter(), and getDefaultNumParameterSteps().

## AudioProcessorParameter() [2/2]

juce::AudioProcessorParameter::AudioProcessorParameter | ( | int | versionHint | ) |

inline explicit

The version hint supplied to this constructor is used in Audio Unit plugins to aid ordering parameter identifiers when JUCE_FORCE_USE_LEGACY_PARAM_IDS is not enabled.

When adding a parameter that is not present in a previous version of the Audio Unit, you must ensure that the version hint supplied is a number higher than that of any parameter in any previous plugin version.

For example, in the first release of a plugin, every parameter was created with "1" as a version hint. If you add some parameters in the second release of the plugin, all of the new parameters should have "2" as a version hint. Additional parameters added in subsequent plugin versions should have "3", "4", and so forth, increasing monotonically.

Note that adding or removing parameters with a version hint that is lower than the maximum version hint of all parameters will break saved automation in some hosts, so be careful!

A version hint of "0" will be treated as though the version hint has not been set explicitly. When targeting the AU format, the version hint may be checked at runtime in debug builds to ensure that it has been set.

Rationale:

According to Apple's Documentation:

> An audio unit parameter is uniquely identified by the combination of its scope, element, and ID.

However, Logic Pro and GarageBand have a known limitation that causes them to use parameter indices instead of IDs to identify parameters. The effect of this is that adding parameters to a later version of a plugin can break automation saved with an earlier version of the plugin if the indices of existing parameters are changed. It is always unsafe to remove parameters from an Audio Unit plugin that will be used in one of these hosts, because removing a parameter will always modify the indices of following parameters.

In order to work around this limitation, parameters in AUv2 plugins are sorted first by their version hint, and then by the hash of their string identifier. As long as the parameters from later versions of the plugin always have a version hint that is higher than the parameters from earlier versions of the plugin, recall of automation data will work as expected in Logic and GarageBand.

Note that we can't just use the JUCE parameter index directly in order to preserve ordering. This would require all new parameters to be added at the end of the parameter list, which would make it impossible to add parameters to existing parameter groups. It would also make it awkward to structure code sensibly, undoing all of the benefits of string-based parameter identifiers.

At time of writing, AUv3 plugins seem to be affected by the same issue, but there does not appear to be any API to control parameter indices in this format. Therefore, when building AUv3 plugins you must not add or remove parameters in subsequent plugin versions if you wish to support Logic and GarageBand.

References AudioProcessorParameter().

## ~AudioProcessorParameter()

virtual juce::AudioProcessorParameter::~AudioProcessorParameter | ( |  | ) |

virtual

Destructor.

## Member Functions

## getValue()

virtual float juce::AudioProcessorParameter::getValue | ( |  | ) | const

pure virtual

Called by the host to find out the value of this parameter.

Hosts will expect the value returned to be between 0 and 1.0.

This could be called quite frequently, so try to make your code efficient. It's also likely to be called by non-UI threads, so the code in here should be thread-aware.

Implemented in juce::LegacyAudioParameter.

## setValue()

virtual void juce::AudioProcessorParameter::setValue | ( | float | newValue | ) |

pure virtual

The host will call this method to change the value of a parameter.

The host may call this at any time, including during the audio processing callback, so your implementation has to process this very efficiently and avoid any kind of locking.

If you want to set the value of a parameter internally, e.g. from your editor component, then don't call this directly - instead, use the setValueNotifyingHost() method, which will also send a message to the host telling it about the change. If the message isn't sent, the host won't be able to automate your parameters properly.

The value passed will be between 0 and 1.0.

Implemented in juce::LegacyAudioParameter.

## setValueNotifyingHost()

void juce::AudioProcessorParameter::setValueNotifyingHost | ( | float | newValue | ) |

A processor should call this when it needs to change one of its parameters.

This could happen when the editor or some other internal operation changes a parameter. This method will call the setValue() method to change the value, and will then send a message to the host telling it about the change.

Note that to make sure the host correctly handles automation, you should call the beginChangeGesture() and endChangeGesture() methods to tell the host when the user has started and stopped changing the parameter.

## beginChangeGesture()

void juce::AudioProcessorParameter::beginChangeGesture | ( |  | ) |

Sends a signal to the host to tell it that the user is about to start changing this parameter.

This allows the host to know when a parameter is actively being held by the user, and it may use this information to help it record automation. If you call this, it must be matched by a later call to endChangeGesture().

## endChangeGesture()

void juce::AudioProcessorParameter::endChangeGesture | ( |  | ) |

Tells the host that the user has finished changing this parameter.

This allows the host to know when a parameter is actively being held by the user, and it may use this information to help it record automation. A call to this method must follow a call to beginChangeGesture().

## getDefaultValue()

virtual float juce::AudioProcessorParameter::getDefaultValue | ( |  | ) | const

pure virtual

This should return the default value for this parameter.

Implemented in juce::AudioProcessorValueTreeState::Parameter, and juce::LegacyAudioParameter.

## getName()

virtual String juce::AudioProcessorParameter::getName | ( | int | maximumStringLength | ) | const

pure virtual

Returns the name to display for this parameter, which should be made to fit within the given string length.

Implemented in juce::AudioProcessorParameterWithID, and juce::LegacyAudioParameter.

## getLabel()

virtual String juce::AudioProcessorParameter::getLabel | ( |  | ) | const

pure virtual

Some parameters may be able to return a label string for their units.

For example "Hz" or "%".

Implemented in juce::AudioProcessorParameterWithID, and juce::LegacyAudioParameter.

## getNumSteps()

virtual int juce::AudioProcessorParameter::getNumSteps | ( |  | ) | const

virtual

Returns the number of steps that this parameter's range should be quantised into.

If you want a continuous range of values, don't override this method, and allow the default implementation to return getDefaultNumParameterSteps().

If your parameter is boolean, then you may want to make this return 2.

The value that is returned may or may not be used, depending on the host. If you want the host to display stepped automation values, rather than a continuous interpolation between successive values, you should override isDiscrete to return true.

See also
  isDiscrete

Reimplemented in juce::AudioProcessorValueTreeState::Parameter, juce::LegacyAudioParameter, and juce::RangedAudioParameter.

## isDiscrete()

virtual bool juce::AudioProcessorParameter::isDiscrete | ( |  | ) | const

virtual

Returns whether the parameter uses discrete values, based on the result of getNumSteps, or allows the host to select values continuously.

This information may or may not be used, depending on the host. If you want the host to display stepped automation values, rather than a continuous interpolation between successive values, override this method to return true.

See also
  getNumSteps

Reimplemented in juce::AudioProcessorValueTreeState::Parameter, and juce::LegacyAudioParameter.

## isBoolean()

virtual bool juce::AudioProcessorParameter::isBoolean | ( |  | ) | const

virtual

Returns whether the parameter represents a boolean switch, typically with "On" and "Off" states.

This information may or may not be used, depending on the host. If you want the host to display a switch, rather than a two item dropdown menu, override this method to return true. You also need to override isDiscrete() to return true and getNumSteps() to return 2.

See also
  isDiscrete getNumSteps

Reimplemented in juce::AudioProcessorValueTreeState::Parameter, and juce::LegacyAudioParameter.

## getText()

virtual String juce::AudioProcessorParameter::getText | ( | float | normalisedValue,
|  | int | ) const

virtual

Returns a textual version of the supplied normalised parameter value.

The default implementation just returns the floating point value as a string, but this could do anything you need for a custom type of value.

Reimplemented in juce::AudioPluginInstance::Parameter, and juce::LegacyAudioParameter.

## getValueForText()

virtual float juce::AudioProcessorParameter::getValueForText | ( | const String & | text | ) | const

pure virtual

Should parse a string and return the appropriate value for it.

Implemented in juce::AudioPluginInstance::Parameter, and juce::LegacyAudioParameter.

## isOrientationInverted()

virtual bool juce::AudioProcessorParameter::isOrientationInverted | ( |  | ) | const

virtual

This can be overridden to tell the host that this parameter operates in the reverse direction.

(Not all plugin formats or hosts will actually use this information).

Reimplemented in juce::AudioProcessorParameterWithID, and juce::LegacyAudioParameter.

## isAutomatable()

virtual bool juce::AudioProcessorParameter::isAutomatable | ( |  | ) | const

virtual

Returns true if the host can automate this parameter.

By default, this returns true.

Reimplemented in juce::AudioProcessorParameterWithID, and juce::LegacyAudioParameter.

## isMetaParameter()

virtual bool juce::AudioProcessorParameter::isMetaParameter | ( |  | ) | const

virtual

Should return true if this parameter is a "meta" parameter.

A meta-parameter is a parameter that changes other params. It is used by some hosts (e.g. AudioUnit hosts). By default this returns false.

Reimplemented in juce::AudioProcessorParameterWithID, and juce::LegacyAudioParameter.

## getCategory()

virtual Category juce::AudioProcessorParameter::getCategory | ( |  | ) | const

virtual

Returns the parameter's category.

Reimplemented in juce::AudioProcessorParameterWithID, and juce::LegacyAudioParameter.

## getParameterIndex()

int juce::AudioProcessorParameter::getParameterIndex | ( |  | ) | const

inline noexcept

Returns the index of this parameter in its parent processor's parameter list.

Referenced by juce::LegacyAudioParameter::getCategory(), juce::LegacyAudioParameter::getCurrentValueAsText(), juce::LegacyAudioParameter::getDefaultValue(), juce::LegacyAudioParameter::getLabel(), juce::LegacyAudioParameter::getName(), juce::LegacyAudioParameter::getNumSteps(), juce::LegacyAudioParameter::getParameterID(), juce::LegacyAudioParameter::getValue(), juce::LegacyAudioParameter::isAutomatable(), juce::LegacyAudioParameter::isDiscrete(), juce::LegacyAudioParameter::isMetaParameter(), juce::LegacyAudioParameter::isOrientationInverted(), juce::LegacyAudioParameter::LegacyAudioParameter(), and juce::LegacyAudioParameter::setValue().

## setParameterIndex()

void juce::AudioProcessorParameter::setParameterIndex | ( | int |  | ) |

noexcept

Referenced by juce::LegacyAudioParameter::LegacyAudioParameter().

## getCurrentValueAsText()

virtual String juce::AudioProcessorParameter::getCurrentValueAsText | ( |  | ) | const

virtual

Returns the current value of the parameter as a String.

This function can be called when you are hosting plug-ins to get a more specialised textual representation of the current value from the plug-in, for example "On" rather than "1.0".

If you are implementing a plug-in then you should ignore this function and instead override getText.

Reimplemented in juce::LegacyAudioParameter.

## getAllValueStrings()

virtual StringArray juce::AudioProcessorParameter::getAllValueStrings | ( |  | ) | const

virtual

Returns the set of strings which represent the possible states a parameter can be in.

If you are hosting a plug-in you can use the result of this function to populate a ComboBox listing the allowed values.

If you are implementing a plug-in then you do not need to override this.

## getVersionHint()

int juce::AudioProcessorParameter::getVersionHint | ( |  | ) | const

inline

See also
  AudioProcessorParameter (int)

## setOwner()

void juce::AudioProcessorParameter::setOwner | ( | Listener * | listener | ) |

noexcept

Referenced by juce::LegacyAudioParameter::LegacyAudioParameter().

## addListener()

void juce::AudioProcessorParameter::addListener | ( | Listener * | newListener | ) |

Registers a listener to receive events when the parameter's state changes.

If the listener is already registered, this will not register it again.

See also
  removeListener

## removeListener()

void juce::AudioProcessorParameter::removeListener | ( | Listener * | listener | ) |

Removes a previously registered parameter listener.

See also
  addListener

## sendValueChangedMessageToListeners()

void juce::AudioProcessorParameter::sendValueChangedMessageToListeners | ( | float | newValue | ) |

## getDefaultNumParameterSteps()

int juce::AudioProcessorParameter::getDefaultNumParameterSteps | ( |  | ) |

static noexcept

Returns the default number of steps for a parameter.

NOTE! This method is deprecated! It's recommended that you use AudioProcessorParameter::getNumSteps() instead.

See also
  getParameterNumSteps

References AudioProcessorParameter().

### Purchase

Get JUCE

### Discover

What's New in JUCE Features

### Learn

Documentaion Tutorials Made with JUCE Resources

### Support

JUCE Forum Newsletter Archive

### About

Contact Us JUCE Legal JUCE Licensing FAQ

### Events

Audio Developer Conference
© Raw Material Software Limited