On Tue, Mar 19, 2013 at 05:26:27PM -0500, Charles Z Henry wrote:
You guys are splitting hairs... kind of misses the
forest for the trees.
Here's my nit to pick: two identical 1st-order lowpass filters in series
are only equivalent to a 2nd-order lowpass filter when the quality factor
is 0.5. So that's not the same thing.
The same thing as what ?
In this case we don't want overshoot so Q must be <= 0.5.
The form I posted actually has a little bit of feedback,
so Q is jusst above 0.5. This makes it reach its target
value in finite time, bit still with an overhsoot of less
than 1/1000 dB. The same code can do any Q value you want,
just use the righr value for the feedabck term (a).
The best way to avoid "zipper noise" is not
to create it in the first
place. Ramps not good enough for ya? Why not? Any "slow enough" ramp
will do.
'Slow enough' might be too slow. A fader should still 'feel' like
it has no delay.
I think you should figure out a different shape of
ramp that doesn't have
discontinuities in the first derivative
That is precisely what a second order lowpass is doing.
0.5-0.5*cos(pi*n/N)
Raised cosine, indeed better than a linear ramp.
Ideally you'd want the higher derivatives to be continuous
as well. A raised hyperbolic tangent will do that, or at least
come close to the ideal in finite time.
The problem with all thoe programmed ramps is that they require
extra logic to handle the case where the requested gain changes
during the ramp. A linear filter solves that problem neatly with
much less code. And in fact *any* system that handles that case
well will be a low pass filter is some disguise.
If simple guesses like that are not good enough,
you'll have to figure out
how to make a bandlimited step function that cuts out the problematic
frequencies.
Again that is exactly what a lowpass filter does.
Ciao,
--
FA
A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)