OpenShot Audio Library | OpenShotAudio 0.3.2
Loading...
Searching...
No Matches
juce::SmoothedValue< FloatType, SmoothingType > Class Template Reference

#include <juce_SmoothedValue.h>

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

Public Types

template<typename T >
using MultiplicativeVoid = (void setValue(FloatType newValue, bool force=false) noexcept, { if(force) { this->setCurrentAndTargetValue(newValue);return;} setTargetValue(newValue);}) private typename std::enable_if< std::is_same< T, ValueSmoothingTypes::Multiplicative >::value, void >::type
 
- Public Types inherited from juce::SmoothedValueBase< SmoothedValueType >
using FloatType = typename FloatTypeHelper< SmoothedValueType >::Type
 

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
 
template<typename T = SmoothingType>
LinearVoid< TsetStepSize () noexcept
 
template<typename T = SmoothingType>
MultiplicativeVoid< TsetStepSize ()
 
template<typename T = SmoothingType>
LinearVoid< TsetNextValue () noexcept
 
template<typename T = SmoothingType>
MultiplicativeVoid< TsetNextValue () noexcept
 
template<typename T = SmoothingType>
LinearVoid< TskipCurrentValue (int numSamples) noexcept
 
template<typename T = SmoothingType>
MultiplicativeVoid< TskipCurrentValue (int numSamples)
 
- Public Member Functions inherited from juce::SmoothedValueBase< SmoothedValueType >
 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
 
void applyGain (FloatType *samplesOut, const FloatType *samplesIn, int numSamples) noexcept
 
void applyGain (AudioBuffer< FloatType > &buffer, int numSamples) noexcept
 

Public Attributes

FloatType step = FloatType()
 
int stepsToTarget = 0
 

Additional Inherited Members

- Protected Attributes inherited from juce::SmoothedValueBase< SmoothedValueType >
FloatType currentValue = 0
 
FloatType target = currentValue
 
int countdown = 0
 

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.

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

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 228 of file juce_SmoothedValue.h.

Member Typedef Documentation

◆ MultiplicativeVoid

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
template<typename T >
using juce::SmoothedValue< FloatType, SmoothingType >::MultiplicativeVoid = (void setValue (FloatType newValue, bool force = false) noexcept, { if (force) { this->setCurrentAndTargetValue (newValue); return; } setTargetValue (newValue); }) private typename std::enable_if <std::is_same <T, ValueSmoothingTypes::Multiplicative>::value, void>::type

THIS FUNCTION IS DEPRECATED.

Use setTargetValue (float) and setCurrentAndTargetValue() instead:

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

Parameters
newValueThe new target value
forceIf true, the value will be set immediately, bypassing the ramp

Definition at line 360 of file juce_SmoothedValue.h.

Constructor & Destructor Documentation

◆ SmoothedValue() [1/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
juce::SmoothedValue< FloatType, SmoothingType >::SmoothedValue ( )
inlinenoexcept

Constructor.

Definition at line 233 of file juce_SmoothedValue.h.

◆ SmoothedValue() [2/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
juce::SmoothedValue< FloatType, SmoothingType >::SmoothedValue ( FloatType  initialValue)
inlinenoexcept

Constructor.

Definition at line 239 of file juce_SmoothedValue.h.

Member Function Documentation

◆ getNextValue()

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
FloatType juce::SmoothedValue< FloatType, SmoothingType >::getNextValue ( )
inlinenoexcept

◆ reset() [1/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
void juce::SmoothedValue< FloatType, SmoothingType >::reset ( double  sampleRate,
double  rampLengthInSeconds 
)
inlinenoexcept

Reset to a new sample rate and ramp length.

Parameters
sampleRateThe sample rate
rampLengthInSecondsThe duration of the ramp in seconds

Definition at line 254 of file juce_SmoothedValue.h.

Referenced by juce::dsp::Convolution::prepare(), juce::dsp::Oscillator< SampleType >::reset(), juce::SmoothedValue< FloatType, SmoothingType >::reset(), and juce::Reverb::setSampleRate().

◆ reset() [2/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
void juce::SmoothedValue< FloatType, SmoothingType >::reset ( int  numSteps)
inlinenoexcept

Set a new ramp length directly in samples.

Parameters
numStepsThe number of samples over which the ramp should be active

Definition at line 263 of file juce_SmoothedValue.h.

◆ setNextValue() [1/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
template<typename T = SmoothingType>
LinearVoid< T > juce::SmoothedValue< FloatType, SmoothingType >::setNextValue ( )
inlinenoexcept

Definition at line 377 of file juce_SmoothedValue.h.

◆ setNextValue() [2/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
template<typename T = SmoothingType>
MultiplicativeVoid< T > juce::SmoothedValue< FloatType, SmoothingType >::setNextValue ( )
inlinenoexcept

Definition at line 383 of file juce_SmoothedValue.h.

◆ setStepSize() [1/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
template<typename T = SmoothingType>
MultiplicativeVoid< T > juce::SmoothedValue< FloatType, SmoothingType >::setStepSize ( )
inline

Definition at line 370 of file juce_SmoothedValue.h.

◆ setStepSize() [2/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
template<typename T = SmoothingType>
LinearVoid< T > juce::SmoothedValue< FloatType, SmoothingType >::setStepSize ( )
inlinenoexcept

Definition at line 364 of file juce_SmoothedValue.h.

◆ setTargetValue()

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
void juce::SmoothedValue< FloatType, SmoothingType >::setTargetValue ( FloatType  newValue)
inlinenoexcept

Set the next value to ramp towards.

Parameters
newValueThe new target value

Definition at line 273 of file juce_SmoothedValue.h.

Referenced by juce::dsp::Oscillator< SampleType >::setFrequency(), and juce::Reverb::setParameters().

◆ skip()

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
FloatType juce::SmoothedValue< FloatType, SmoothingType >::skip ( int  numSamples)
inlinenoexcept

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.

Referenced by juce::dsp::Oscillator< SampleType >::process().

◆ skipCurrentValue() [1/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
template<typename T = SmoothingType>
MultiplicativeVoid< T > juce::SmoothedValue< FloatType, SmoothingType >::skipCurrentValue ( int  numSamples)
inline

Definition at line 396 of file juce_SmoothedValue.h.

◆ skipCurrentValue() [2/2]

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
template<typename T = SmoothingType>
LinearVoid< T > juce::SmoothedValue< FloatType, SmoothingType >::skipCurrentValue ( int  numSamples)
inlinenoexcept

Definition at line 390 of file juce_SmoothedValue.h.

Member Data Documentation

◆ step

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
FloatType juce::SmoothedValue< FloatType, SmoothingType >::step = FloatType()

Definition at line 402 of file juce_SmoothedValue.h.

◆ stepsToTarget

template<typename FloatType , typename SmoothingType = ValueSmoothingTypes::Linear>
int juce::SmoothedValue< FloatType, SmoothingType >::stepsToTarget = 0

Definition at line 403 of file juce_SmoothedValue.h.


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