On Tue, Mar 19, 2013 at 2:15 PM, Tim Goetze <tim@quitte.de> wrote:
[Fons Adriaensen]
>Exactly the same with the form I proposed, w, a, b need to be computed
>just once, not for every gain change. In fact only w depends on the
>sample rate, a and b are fixed constants.

Ah yes, sorry, I see that now.

If that extra operation comes around to bite hard enough, I'll be sure
to chain two 1st-order lowpass filters.

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 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.  Your problem might be that you're trying to ramp the volume too fast.  Adding a filter just slows down the response anyway.

I think you should figure out a different shape of ramp that doesn't have discontinuities in the first derivative, such as:

0.5-0.5*cos(pi*n/N)
where N is the number of samples in the ramp

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.

Chuck