JUCE  v5.4.1-191-g0ab5e696f
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::LinearSmoothedValue< FloatType > Class Template Reference

Utility class for linearly smoothed values like volume etc. More...

#include <juce_LinearSmoothedValue.h>

Inheritance diagram for juce::LinearSmoothedValue< FloatType >:
Collaboration diagram for juce::LinearSmoothedValue< FloatType >:

Public Member Functions

 LinearSmoothedValue () noexcept
 Constructor. More...
 
 LinearSmoothedValue (FloatType initialValue) noexcept
 Constructor. More...
 
void applyGain (FloatType *samples, int numSamples) noexcept
 Applies a linear smoothed gain to a stream of samples S[i] *= gain. More...
 
void applyGain (FloatType *samplesOut, const FloatType *samplesIn, int numSamples) noexcept
 Computes output as linear smoothed gain applied to a stream of samples. More...
 
void applyGain (AudioBuffer< FloatType > &buffer, int numSamples) noexcept
 Applies a linear smoothed gain to a buffer. More...
 
FloatType getNextValue () noexcept
 Compute the next value. More...
 
FloatType getTargetValue () const noexcept
 Returns the target value towards which the smoothed value is currently moving. More...
 
bool isSmoothing () const noexcept
 Returns true if the current value is currently being interpolated. More...
 
void reset (double sampleRate, double rampLengthInSeconds) noexcept
 Reset to a new sample rate and ramp length. More...
 
void setValue (FloatType newValue, bool force=false) noexcept
 Set a new target value. More...
 
FloatType skip (int numSamples) noexcept
 Skip the next numSamples samples. More...
 

Private Attributes

int countdown = 0
 
FloatType currentValue = 0
 
FloatType step = 0
 
int stepsToTarget = 0
 
FloatType target = 0
 

Detailed Description

template<typename FloatType>
class juce::LinearSmoothedValue< FloatType >

Utility class for linearly smoothed values like volume etc.

that should not change abruptly but as a linear ramp, to avoid audio glitches.

{Audio}

Constructor & Destructor Documentation

◆ LinearSmoothedValue() [1/2]

template<typename FloatType>
juce::LinearSmoothedValue< FloatType >::LinearSmoothedValue ( )
inlinenoexcept

Constructor.

◆ LinearSmoothedValue() [2/2]

template<typename FloatType>
juce::LinearSmoothedValue< FloatType >::LinearSmoothedValue ( FloatType  initialValue)
inlinenoexcept

Constructor.

Member Function Documentation

◆ applyGain() [1/3]

template<typename FloatType>
void juce::LinearSmoothedValue< FloatType >::applyGain ( FloatType *  samples,
int  numSamples 
)
inlinenoexcept

Applies a linear smoothed gain to a stream of samples S[i] *= gain.

Parameters
samplesPointer to a raw array of samples
numSamplesLength of array of samples

◆ applyGain() [2/3]

template<typename FloatType>
void juce::LinearSmoothedValue< FloatType >::applyGain ( FloatType *  samplesOut,
const FloatType *  samplesIn,
int  numSamples 
)
inlinenoexcept

Computes output as linear smoothed gain applied to a stream of samples.

Sout[i] = Sin[i] * gain

Parameters
samplesOutA pointer to a raw array of output samples
samplesInA pointer to a raw array of input samples
numSamplesThe length of the array of samples

◆ applyGain() [3/3]

template<typename FloatType>
void juce::LinearSmoothedValue< FloatType >::applyGain ( AudioBuffer< FloatType > &  buffer,
int  numSamples 
)
inlinenoexcept

Applies a linear smoothed gain to a buffer.

◆ getNextValue()

template<typename FloatType>
FloatType juce::LinearSmoothedValue< FloatType >::getNextValue ( )
inlinenoexcept

◆ getTargetValue()

template<typename FloatType>
FloatType juce::LinearSmoothedValue< FloatType >::getTargetValue ( ) const
inlinenoexcept

Returns the target value towards which the smoothed value is currently moving.

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

◆ isSmoothing()

template<typename FloatType>
bool juce::LinearSmoothedValue< FloatType >::isSmoothing ( ) const
inlinenoexcept

Returns true if the current value is currently being interpolated.

Referenced by juce::LinearSmoothedValue< Type >::applyGain(), and juce::dsp::Oscillator< SampleType >::process().

◆ reset()

template<typename FloatType>
void juce::LinearSmoothedValue< FloatType >::reset ( double  sampleRate,
double  rampLengthInSeconds 
)
inlinenoexcept

Reset to a new sample rate and ramp length.

Parameters
sampleRateThe sampling rate
rampLengthInSecondsThe duration of the ramp in seconds

Referenced by juce::dsp::Oscillator< SampleType >::reset(), juce::Reverb::setSampleRate(), and juce::dsp::Bias< FloatType >::updateRamp().

◆ setValue()

template<typename FloatType>
void juce::LinearSmoothedValue< FloatType >::setValue ( FloatType  newValue,
bool  force = false 
)
inlinenoexcept

Set a new target value.

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

Referenced by juce::Reverb::setDamping(), juce::dsp::Oscillator< SampleType >::setFrequency(), juce::Reverb::setParameters(), juce::dsp::LadderFilter< Type >::updateCutoffFreq(), and juce::dsp::LadderFilter< Type >::updateResonance().

◆ skip()

template<typename FloatType>
FloatType juce::LinearSmoothedValue< FloatType >::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

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

Member Data Documentation

◆ countdown

◆ currentValue

◆ step

◆ stepsToTarget

template<typename FloatType>
int juce::LinearSmoothedValue< FloatType >::stepsToTarget = 0
private

◆ target


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