Loading...
Searching...
No Matches
juce::SmoothedValue< FloatType, SmoothingType > Class Template Reference

`#include <juce_SmoothedValue.h>`

Inheritance diagram for juce::SmoothedValue< FloatType, SmoothingType >:

## Public Member Functions

| SmoothedValue () noexcept
| SmoothedValue (FloatType initialValue) noexcept
void | reset (double sampleRate, double rampLengthInSeconds) noexcept
void | reset (int numSteps) noexcept
void | setTargetValue (FloatType newValue) noexcept
FloatType | getNextValue () noexcept
FloatType | skip (int numSamples) noexcept
void | setValue (FloatType newValue, bool force=false) noexcept
Public Member Functions inherited from juce::SmoothedValueBase< SmoothedValue< FloatType, ValueSmoothingTypes::Linear > >
| SmoothedValueBase ()=default
bool | isSmoothing () const noexcept
FloatType | getCurrentValue () const noexcept
FloatType | getTargetValue () const noexcept
void | setCurrentAndTargetValue (FloatType newValue)
void | applyGain (FloatType *samples, int numSamples) noexcept

## Additional Inherited Members

Public Types inherited from juce::SmoothedValueBase< SmoothedValue< FloatType, ValueSmoothingTypes::Linear > >
using | FloatType
Protected Attributes inherited from juce::SmoothedValueBase< SmoothedValue< FloatType, ValueSmoothingTypes::Linear > >
FloatType | currentValue
FloatType | target
int | countdown

## Detailed Description

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>
class juce::SmoothedValue< FloatType, SmoothingType >

A utility class for values that need smoothing to avoid audio glitches.

A ValueSmoothingTypes::Linear template parameter selects linear smoothing, which increments the SmoothedValue linearly towards its target value.

SmoothedValue<float, ValueSmoothingTypes::Linear> yourSmoothedValue;
juce::SmoothedValue::SmoothedValue
SmoothedValue() noexcept
Definition juce_SmoothedValue.h:231

A ValueSmoothingTypes::Multiplicative template parameter selects multiplicative smoothing increments towards the target value.

SmoothedValue<float, ValueSmoothingTypes::Multiplicative> yourSmoothedValue;

Multiplicative smoothing is useful when you are dealing with exponential/logarithmic values like volume in dB or frequency in Hz. For example a 12 step ramp from 440.0 Hz (A4) to 880.0 Hz (A5) will increase the frequency with an equal temperament tuning across the octave. A 10 step smoothing from 1.0 (0 dB) to 3.16228 (10 dB) will increase the value in increments of 1 dB.

Note that when you are using multiplicative smoothing you cannot ever reach a target value of zero!

Definition at line 226 of file juce_SmoothedValue.h.

## Constructor & Destructor Documentation

## SmoothedValue() [1/2]

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>

juce::SmoothedValue< FloatType, SmoothingType >::SmoothedValue | ( |  | ) |

inline noexcept

Constructor.

Definition at line 231 of file juce_SmoothedValue.h.

## SmoothedValue() [2/2]

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>

juce::SmoothedValue< FloatType, SmoothingType >::SmoothedValue | ( | FloatType | initialValue | ) |

inline noexcept

Constructor.

Definition at line 237 of file juce_SmoothedValue.h.

## Member Function Documentation

## getNextValue()

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>

FloatType juce::SmoothedValue< FloatType, SmoothingType >::getNextValue | ( |  | ) |

inline noexcept

Compute the next value.

Returns
  Smoothed value

Definition at line 297 of file juce_SmoothedValue.h.

## reset() [1/2]

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>

void juce::SmoothedValue< FloatType, SmoothingType >::reset | ( | double | sampleRate,
|  | double | rampLengthInSeconds )

inline noexcept

Reset to a new sample rate and ramp length.

Parameters

  sampleRate | The sample rate
  rampLengthInSeconds | The duration of the ramp in seconds

Definition at line 253 of file juce_SmoothedValue.h.

Referenced by juce::SmoothedValue< FloatType, ValueSmoothingTypes::Linear >::reset().

## reset() [2/2]

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>

void juce::SmoothedValue< FloatType, SmoothingType >::reset | ( | int | numSteps | ) |

inline noexcept

Set a new ramp length directly in samples.

Parameters

  numSteps | The number of samples over which the ramp should be active

Definition at line 262 of file juce_SmoothedValue.h.

## setTargetValue()

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>

void juce::SmoothedValue< FloatType, SmoothingType >::setTargetValue | ( | FloatType | newValue | ) |

inline noexcept

Set the next value to ramp towards.

Parameters

  newValue | The new target value

Definition at line 272 of file juce_SmoothedValue.h.

Referenced by juce::SmoothedValue< FloatType, ValueSmoothingTypes::Linear >::setValue().

## setValue()

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>

void juce::SmoothedValue< FloatType, SmoothingType >::setValue | ( | FloatType | newValue,
|  | bool | force = false )

inline noexcept

Using the new methods:

lsv.setValue (x, false); -> lsv.setTargetValue (x); lsv.setValue (x, true); -> lsv.setCurrentAndTargetValue (x);

Parameters

  newValue | The new target value
  force | If true, the value will be set immediately, bypassing the ramp

Definition at line 343 of file juce_SmoothedValue.h.

## skip()

template<typename FloatType, typename SmoothingType = ValueSmoothingTypes::Linear>

FloatType juce::SmoothedValue< FloatType, SmoothingType >::skip | ( | int | numSamples | ) |

inline noexcept

Skip the next numSamples samples. This is identical to calling getNextValue numSamples times. It returns the new current value.

See also
  getNextValue

Definition at line 318 of file juce_SmoothedValue.h.

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

- juce_SmoothedValue.h