dsp::Oscillator uses a linear ramp for the frequencies, but this is not how it works for frequencies, obviously

wrong (lin) -> 10, 20, 30, 40, 50, 60

right (log) -> 10, 14, 20, 29, 42, 60

LinearSmoothedValue, needs a sister class, **LogSmoothedValue** which could be used by dsp::Oscilliator

Here are the most important building blocks for this class

```
void reset (double sampleRate, double fadeLengthSeconds) noexcept
{
jassert (sampleRate > 0 && fadeLengthSeconds >= 0);
stepsToTarget = (int) std::floor (fadeLengthSeconds * sampleRate);
currentValue = target;
countdown = 0;
}
bool setValue (float newValue) noexcept
{
if (newValue<minimumVal)
{
newValue=minimumVal;
};
if (target != newValue)
{
target = newValue;
countdown = stepsToTarget;
if (countdown <= 0)
currentValue = target;
else
step = exp(( log(target) - log(currentValue) ) / (float) countdown );
return true;
}
return false;
}
float getNextValue() noexcept
{
if (countdown <= 0)
return target;
--countdown;
currentValue *= step;
return currentValue;
}
```