Utility class for linearly smoothed values like volume etc. More...
#include <juce_LinearSmoothedValue.h>
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 |
Utility class for linearly smoothed values like volume etc.
that should not change abruptly but as a linear ramp, to avoid audio glitches.
{Audio}
|
inlinenoexcept |
Constructor.
|
inlinenoexcept |
Constructor.
|
inlinenoexcept |
Applies a linear smoothed gain to a stream of samples S[i] *= gain.
samples | Pointer to a raw array of samples |
numSamples | Length of array of samples |
|
inlinenoexcept |
Computes output as linear smoothed gain applied to a stream of samples.
Sout[i] = Sin[i] * gain
samplesOut | A pointer to a raw array of output samples |
samplesIn | A pointer to a raw array of input samples |
numSamples | The length of the array of samples |
|
inlinenoexcept |
Applies a linear smoothed gain to a buffer.
|
inlinenoexcept |
Compute the next value.
Referenced by juce::LinearSmoothedValue< Type >::applyGain(), juce::dsp::Oscillator< SampleType >::process(), juce::Reverb::processMono(), juce::dsp::Oscillator< SampleType >::processSample(), and juce::Reverb::processStereo().
|
inlinenoexcept |
Returns the target value towards which the smoothed value is currently moving.
Referenced by juce::dsp::Oscillator< SampleType >::getFrequency().
|
inlinenoexcept |
Returns true if the current value is currently being interpolated.
Referenced by juce::LinearSmoothedValue< Type >::applyGain(), and juce::dsp::Oscillator< SampleType >::process().
|
inlinenoexcept |
Reset to a new sample rate and ramp length.
sampleRate | The sampling rate |
rampLengthInSeconds | The duration of the ramp in seconds |
Referenced by juce::dsp::Oscillator< SampleType >::reset(), juce::Reverb::setSampleRate(), and juce::dsp::Bias< FloatType >::updateRamp().
|
inlinenoexcept |
Set a new target value.
newValue | The new target value |
force | If 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().
|
inlinenoexcept |
Skip the next numSamples samples.
This is identical to calling getNextValue numSamples times. It returns the new current value.
Referenced by juce::dsp::Oscillator< SampleType >::process().
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by juce::LinearSmoothedValue< Type >::applyGain(), juce::LinearSmoothedValue< Type >::getNextValue(), juce::LinearSmoothedValue< Type >::getTargetValue(), juce::LinearSmoothedValue< Type >::reset(), juce::LinearSmoothedValue< Type >::setValue(), and juce::LinearSmoothedValue< Type >::skip().