Hmm…
In my processor class I have a private member:
LinearSmoothedValue<double> m_dVolume;
and a public method:
void setVolume (double newVolume);
In the constructor of the class I set the default sample rate:
setSampleRate (44100.0);
and I have:
void CVolumeAndMuteProcessor::setSampleRate (const double dSampleRate)
{
const double dSmoothTime = 0.0001;
m_dVolume.reset (dSampleRate, dSmoothTime);
}
void CVolumeAndMuteProcessor::prepareToPlay (double dSampleRate, int estimatedSamplesPerBlock)
{
setSampleRate (dSampleRate);
BaseProcessor::prepareToPlay (dSampleRate, estimatedSamplesPerBlock);
}
void CVolumeAndMuteProcessor::setVolume (const double newVolume)
{
m_dVolume.setValue (juce::jlimit (0.0, getMaximum(), newVolume));
updateHostDisplay();
}
double CVolumeAndMuteProcessor::getVolume()
{
return m_dVolume.getNextValue();
}
void CVolumeAndMuteProcessor::processBlock (juce::AudioSampleBuffer& buffer, juce::MidiBuffer& /* midiMessages */)
{
:
if (! isBypassed())
{
const float localVolume = (float) m_dVolume.getNextValue();
buffer.applyGain (0, buffer.getNumSamples(), localVolume);
}
}
Rail