JUCE  v6.1.6 (6.0.8-1114)
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::AudioParameterBool Class Reference

Provides a class of AudioProcessorParameter that can be used as a boolean value. More...

#include <juce_AudioParameterBool.h>

Inheritance diagram for juce::AudioParameterBool:
Collaboration diagram for juce::AudioParameterBool:

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

 AudioParameterBool (const ParameterID &parameterID, const String &parameterName, bool defaultValue, const AudioParameterBoolAttributes &attributes={})
 Creates a AudioParameterBool with the specified parameters. More...
 
 AudioParameterBool (const ParameterID &parameterID, const String &parameterName, bool defaultValue, const String &parameterLabel, std::function< String(bool value, int maximumStringLength)> stringFromBool=nullptr, std::function< bool(const String &text)> boolFromString=nullptr)
 Creates a AudioParameterBool with the specified parameters. More...
 
 ~AudioParameterBool () override
 Destructor. More...
 
void addListener (Listener *newListener)
 Registers a listener to receive events when the parameter's state changes. More...
 
 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. More...
 
 AudioProcessorParameterWithID (const ParameterID &parameterID, const String &parameterName, const AudioProcessorParameterWithIDAttributes &attributes={})
 The creation of this object requires providing a name and ID which will be constant for its lifetime. More...
 
 AudioProcessorParameterWithID (const ParameterID &parameterID, const String &parameterName, const String &parameterLabel, Category parameterCategory=AudioProcessorParameter::genericParameter)
 The creation of this object requires providing a name and ID which will be constant for its lifetime. More...
 
void beginChangeGesture ()
 Sends a signal to the host to tell it that the user is about to start changing this parameter. More...
 
float convertFrom0to1 (float v) const noexcept
 Denormalises and snaps a value based on the normalisable range. More...
 
float convertTo0to1 (float v) const noexcept
 Normalises and snaps a value based on the normalisable range. More...
 
void endChangeGesture ()
 Tells the host that the user has finished changing this parameter. More...
 
bool get () const noexcept
 Returns the parameter's current boolean value. More...
 
virtual StringArray getAllValueStrings () const
 Returns the set of strings which represent the possible states a parameter can be in. More...
 
Category getCategory () const override
 Returns the parameter's category. More...
 
virtual String getCurrentValueAsText () const
 Returns the current value of the parameter as a String. More...
 
String getLabel () const override
 Some parameters may be able to return a label string for their units. More...
 
String getName (int) const override
 Returns the name to display for this parameter, which should be made to fit within the given string length. More...
 
const NormalisableRange< float > & getNormalisableRange () const override
 Returns the range of values that the parameter can take. More...
 
String getParameterID () const override
 Returns an ID that is unique to this parameter. More...
 
int getParameterIndex () const noexcept
 Returns the index of this parameter in its parent processor's parameter list. More...
 
int getVersionHint () const
 
bool isAutomatable () const override
 Returns true if the host can automate this parameter. More...
 
bool isMetaParameter () const override
 Should return true if this parameter is a "meta" parameter. More...
 
bool isOrientationInverted () const override
 This can be overridden to tell the host that this parameter operates in the reverse direction. More...
 
 operator bool () const noexcept
 Returns the parameter's current boolean value. More...
 
AudioParameterBooloperator= (bool newValue)
 Changes the parameter's current value to a new boolean. More...
 
void removeListener (Listener *listener)
 Removes a previously registered parameter listener. More...
 
void sendValueChangedMessageToListeners (float newValue)
 
void setValueNotifyingHost (float newValue)
 A processor should call this when it needs to change one of its parameters. More...
 

Public Attributes

const Category category
 Provides access to the parameter's category. More...
 
const String label
 Provides access to the parameter's label. More...
 
const String name
 Provides access to the parameter's name. More...
 
const String paramID
 Provides access to the parameter's ID string. More...
 

Protected Member Functions

virtual void valueChanged (bool newValue)
 Override this method if you are interested in receiving callbacks when the parameter value changes. More...
 

Private Member Functions

float getDefaultValue () const override
 This should return the default value for this parameter. More...
 
int getNumSteps () const override
 Returns the number of steps that this parameter's range should be quantised into. More...
 
String getText (float, int) const override
 Returns a textual version of the supplied normalised parameter value. More...
 
float getValue () const override
 Called by the host to find out the value of this parameter. More...
 
float getValueForText (const String &) const override
 Should parse a string and return the appropriate value for it. More...
 
bool isBoolean () const override
 Returns whether the parameter represents a boolean switch, typically with "On" and "Off" states. More...
 
bool isDiscrete () const override
 Returns whether the parameter uses discrete values, based on the result of getNumSteps, or allows the host to select values continuously. More...
 
void setValue (float newValue) override
 The host will call this method to change the value of a parameter. More...
 

Private Attributes

bool automatable = true
 
std::function< bool(const String &)> boolFromStringFunction
 
bool inverted = false
 
bool isPerformingGesture = false
 
CriticalSection listenerLock
 
Array< Listener * > listeners
 
bool meta = false
 
int parameterIndex = -1
 
AudioProcessorprocessor = nullptr
 
const NormalisableRange< floatrange { 0.0f, 1.0f, 1.0f }
 
std::function< String(bool, int)> stringFromBoolFunction
 
std::atomic< floatvalue
 
const float valueDefault
 
StringArray valueStrings
 
int version = 0
 

Detailed Description

Provides a class of AudioProcessorParameter that can be used as a boolean value.

See also
AudioParameterFloat, AudioParameterInt, AudioParameterChoice

@tags{Audio}

Member Enumeration Documentation

◆ 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 

Constructor & Destructor Documentation

◆ AudioParameterBool() [1/2]

juce::AudioParameterBool::AudioParameterBool ( const ParameterID parameterID,
const String parameterName,
bool  defaultValue,
const AudioParameterBoolAttributes attributes = {} 
)

Creates a AudioParameterBool with the specified parameters.

Note that the attributes argument is optional and only needs to be supplied if you want to change options from their default values.

Example usage:

auto attributes = AudioParameterBoolAttributes().withStringFromValueFunction ([] (auto x, auto) { return x ? "On" : "Off"; })
.withLabel ("enabled");
auto param = std::make_unique<AudioParameterBool> ("paramID", "Parameter Name", false, attributes);
Parameters
parameterIDThe parameter ID to use
parameterNameThe parameter name to use
defaultValueThe default value
attributesOptional characteristics

◆ AudioParameterBool() [2/2]

juce::AudioParameterBool::AudioParameterBool ( const ParameterID parameterID,
const String parameterName,
bool  defaultValue,
const String parameterLabel,
std::function< String(bool value, int maximumStringLength)>  stringFromBool = nullptr,
std::function< bool(const String &text)>  boolFromString = nullptr 
)
inline

Creates a AudioParameterBool with the specified parameters.

Parameters
parameterIDThe parameter ID to use
parameterNameThe parameter name to use
defaultValueThe default value
parameterLabelAn optional label for the parameter's value
stringFromBoolAn optional lambda function that converts a bool value to a string with a maximum length. This may be used by hosts to display the parameter's value.
boolFromStringAn optional lambda function that parses a string and converts it into a bool value. Some hosts use this to allow users to type in parameter values.

◆ ~AudioParameterBool()

juce::AudioParameterBool::~AudioParameterBool ( )
override

Destructor.

Member Function Documentation

◆ addListener()

void juce::AudioProcessorParameter::addListener ( Listener newListener)
inherited

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

◆ AudioProcessorParameter() [1/2]

juce::AudioProcessorParameter::AudioProcessorParameter
defaultnoexceptinherited

◆ AudioProcessorParameter() [2/2]

juce::AudioProcessorParameter::AudioProcessorParameter
inlineexplicitinherited

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.

◆ AudioProcessorParameterWithID() [1/2]

juce::AudioProcessorParameterWithID::AudioProcessorParameterWithID
inherited

The creation of this object requires providing a name and ID which will be constant for its lifetime.

Given that AudioProcessorParameterWithID is abstract, you'll probably call this constructor from a derived class constructor, e.g.

MyParameterType (String paramID, String name, String label, bool automatable)
: AudioProcessorParameterWithID (paramID, name, AudioProcessorParameterWithIDAttributes().withLabel (label)
.withAutomatable (automatable))
{
}
Parameters
parameterIDSpecifies the identifier, and optionally the parameter's version hint.
parameterNameThe user-facing parameter name.
attributesOther parameter properties.

◆ AudioProcessorParameterWithID() [2/2]

juce::AudioProcessorParameterWithID::AudioProcessorParameterWithID
inlineinherited

The creation of this object requires providing a name and ID which will be constant for its lifetime.

Parameters
parameterIDUsed to uniquely identify the parameter
parameterNameThe user-facing name of the parameter
parameterLabelAn optional label for the parameter's value
parameterCategoryThe semantics of this parameter

◆ beginChangeGesture()

void juce::AudioProcessorParameter::beginChangeGesture ( )
inherited

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().

◆ convertFrom0to1()

float juce::RangedAudioParameter::convertFrom0to1 ( float  v) const
noexceptinherited

Denormalises and snaps a value based on the normalisable range.

◆ convertTo0to1()

float juce::RangedAudioParameter::convertTo0to1 ( float  v) const
noexceptinherited

Normalises and snaps a value based on the normalisable range.

Referenced by juce::ParameterAttachment::normalise().

◆ endChangeGesture()

void juce::AudioProcessorParameter::endChangeGesture ( )
inherited

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().

◆ get()

bool juce::AudioParameterBool::get ( ) const
inlinenoexcept

Returns the parameter's current boolean value.

References juce::gl::value.

◆ getAllValueStrings()

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

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.

◆ getCategory()

Category juce::AudioProcessorParameterWithID::getCategory ( ) const
overridevirtualinherited

Returns the parameter's category.

Reimplemented from juce::AudioProcessorParameter.

◆ getCurrentValueAsText()

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

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.

◆ getDefaultValue()

float juce::AudioParameterBool::getDefaultValue ( ) const
overrideprivatevirtual

This should return the default value for this parameter.

Implements juce::AudioProcessorParameter.

◆ getLabel()

String juce::AudioProcessorParameterWithID::getLabel ( ) const
overridevirtualinherited

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

For example "Hz" or "%".

Implements juce::AudioProcessorParameter.

◆ getName()

String juce::AudioProcessorParameterWithID::getName ( int  maximumStringLength) const
overridevirtualinherited

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

Implements juce::AudioProcessorParameter.

◆ getNormalisableRange()

const NormalisableRange<float>& juce::AudioParameterBool::getNormalisableRange ( ) const
inlineoverridevirtual

Returns the range of values that the parameter can take.

Implements juce::RangedAudioParameter.

References juce::gl::range.

◆ getNumSteps()

int juce::AudioParameterBool::getNumSteps ( ) const
overrideprivatevirtual

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 AudioProcessor::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 from juce::AudioProcessorParameter.

◆ getParameterID()

String juce::AudioProcessorParameterWithID::getParameterID ( ) const
inlineoverridevirtualinherited

Returns an ID that is unique to this parameter.

Parameter indices are unstable across plugin versions, which means that the parameter found at a particular index in one version of a plugin might move to a different index in the subsequent version.

Unlike the parameter index, the ID returned by this function should be somewhat stable (depending on the format of the plugin), so it is more suitable for storing/recalling automation data.

Implements juce::HostedAudioProcessorParameter.

◆ getParameterIndex()

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

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

◆ getText()

String juce::AudioParameterBool::getText ( float  normalisedValue,
int   
) const
overrideprivatevirtual

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 from juce::AudioProcessorParameter.

◆ getValue()

float juce::AudioParameterBool::getValue ( ) const
overrideprivatevirtual

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.

Implements juce::AudioProcessorParameter.

◆ getValueForText()

float juce::AudioParameterBool::getValueForText ( const String text) const
overrideprivatevirtual

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

Implements juce::AudioProcessorParameter.

◆ getVersionHint()

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

◆ isAutomatable()

bool juce::AudioProcessorParameterWithID::isAutomatable ( ) const
inlineoverridevirtualinherited

Returns true if the host can automate this parameter.

By default, this returns true.

Reimplemented from juce::AudioProcessorParameter.

◆ isBoolean()

bool juce::AudioParameterBool::isBoolean ( ) const
overrideprivatevirtual

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 from juce::AudioProcessorParameter.

◆ isDiscrete()

bool juce::AudioParameterBool::isDiscrete ( ) const
overrideprivatevirtual

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 from juce::AudioProcessorParameter.

◆ isMetaParameter()

bool juce::AudioProcessorParameterWithID::isMetaParameter ( ) const
inlineoverridevirtualinherited

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 from juce::AudioProcessorParameter.

◆ isOrientationInverted()

bool juce::AudioProcessorParameterWithID::isOrientationInverted ( ) const
inlineoverridevirtualinherited

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 from juce::AudioProcessorParameter.

◆ operator bool()

juce::AudioParameterBool::operator bool ( ) const
inlinenoexcept

Returns the parameter's current boolean value.

References juce::dsp::get().

◆ operator=()

AudioParameterBool& juce::AudioParameterBool::operator= ( bool  newValue)

Changes the parameter's current value to a new boolean.

◆ removeListener()

void juce::AudioProcessorParameter::removeListener ( Listener listener)
inherited

Removes a previously registered parameter listener.

See also
addListener

◆ sendValueChangedMessageToListeners()

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

◆ setValue()

void juce::AudioParameterBool::setValue ( float  newValue)
overrideprivatevirtual

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.

Implements juce::AudioProcessorParameter.

◆ setValueNotifyingHost()

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

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.

◆ valueChanged()

virtual void juce::AudioParameterBool::valueChanged ( bool  newValue)
protectedvirtual

Override this method if you are interested in receiving callbacks when the parameter value changes.

Member Data Documentation

◆ automatable

bool juce::AudioProcessorParameterWithID::automatable = true
privateinherited

◆ boolFromStringFunction

std::function<bool (const String&)> juce::AudioParameterBool::boolFromStringFunction
private

◆ category

const Category juce::AudioProcessorParameterWithID::category
inherited

Provides access to the parameter's category.

◆ inverted

bool juce::AudioProcessorParameterWithID::inverted = false
privateinherited

◆ isPerformingGesture

bool juce::AudioProcessorParameter::isPerformingGesture = false
privateinherited

◆ label

const String juce::AudioProcessorParameterWithID::label
inherited

Provides access to the parameter's label.

◆ listenerLock

CriticalSection juce::AudioProcessorParameter::listenerLock
privateinherited

◆ listeners

Array<Listener*> juce::AudioProcessorParameter::listeners
privateinherited

◆ meta

bool juce::AudioProcessorParameterWithID::meta = false
privateinherited

◆ name

const String juce::AudioProcessorParameterWithID::name
inherited

Provides access to the parameter's name.

◆ parameterIndex

int juce::AudioProcessorParameter::parameterIndex = -1
privateinherited

◆ paramID

const String juce::AudioProcessorParameterWithID::paramID
inherited

Provides access to the parameter's ID string.

◆ processor

AudioProcessor* juce::AudioProcessorParameter::processor = nullptr
privateinherited

◆ range

const NormalisableRange<float> juce::AudioParameterBool::range { 0.0f, 1.0f, 1.0f }
private

◆ stringFromBoolFunction

std::function<String (bool, int)> juce::AudioParameterBool::stringFromBoolFunction
private

◆ value

std::atomic<float> juce::AudioParameterBool::value
private

◆ valueDefault

const float juce::AudioParameterBool::valueDefault
private

◆ valueStrings

StringArray juce::AudioProcessorParameter::valueStrings
mutableprivateinherited

◆ version

int juce::AudioProcessorParameter::version = 0
privateinherited

The documentation for this class was generated from the following file:
juce::AudioProcessorParameterWithID::paramID
const String paramID
Provides access to the parameter's ID string.
Definition: juce_AudioProcessorParameterWithID.h:161
juce::gl::x
GLdouble x
Definition: juce_gl.h:939
juce::AudioProcessorParameterWithID::label
const String label
Provides access to the parameter's label.
Definition: juce_AudioProcessorParameterWithID.h:167
juce::AudioProcessorParameterWithID::AudioProcessorParameterWithID
AudioProcessorParameterWithID(const ParameterID &parameterID, const String &parameterName, const AudioProcessorParameterWithIDAttributes &attributes={})
The creation of this object requires providing a name and ID which will be constant for its lifetime.
juce::AudioProcessorParameterWithID::automatable
bool automatable
Definition: juce_AudioProcessorParameterWithID.h:182
juce::gl::param
GLenum GLfloat param
Definition: juce_gl.h:646
juce::AudioProcessorParameterWithID::name
const String name
Provides access to the parameter's name.
Definition: juce_AudioProcessorParameterWithID.h:164