[LAD] Mixing audio: Noiseless volume changes

James Morris james at jwm-art.net
Mon Mar 18 23:28:24 UTC 2013


On 18/03/13 "Tim E. Real" <termtech at rogers.com> wrote:
>On March 18, 2013 06:47:16 PM you wrote:
>
>
>
>
>On Mon, Mar 18, 2013 at 5:50 PM, Tim E. Real <termtech at rogers.com>
>wrote:
>
>Hi again. Looking for any advice, tips, tricks, anecdotes etc.
>
>I want to eliminate or reduce 'zipper' noise on volume changes.
>So I'm looking at two techniques:
>Zero-crossing / zero-value signal detection, and slew-rate limiting.
>Code is almost done, almost ready to start testing each technique.
>Each technique has some advantages and disadvantages.
>
>If I use a slew-rate limiter, I figure for a sudden volume factor
>change
> from 0.0 to 1.0, if I limit the slew rate to say 0.01 per sample then
> after 100 samples the ramp will be done.
>But even with a fine ramp, this still might introduce artifacts in the
>audio.
>
>
>You cannot avoid artifacts in the audio. The only question is what is
>the nature of the artifacts.  
>
> 
>If I use a zero-crossing/zero-value detector and apply volume changes
>
>
>Zero crossing stuff is a completely bogus idea that needs to be
>eliminated from the lexicon of audio software. You will not be
>accomplishing anything trying to use such a technique, other than
>introduce even more artifacts (and rather horrendous ones at that).
>Even zero-valued samples are not particularly useful 
>- keep in mind that what defines transducer (read: speaker) behaviour
>is power, not instantaneous volume.  
>
>Just use sensibly short ramped changes. For the record, Ardour uses 64
>or a JACK period size, whichever is, hmm, larger or smaller, can't
>recall.
>
>--p
>
>
>Wow, surprising answer. 
>Can you elaborate a wee bit on the bogus point? What worse artifacts?
>Popping noise will be heard if sudden volume change is applied while
> the signal data value is currently non-zero.
>Is it not better to apply (register) the changes during zero or
>near-zero
> signal data values?
>
>After all, some electronic systems employ it: 
>http://en.wikipedia.org/wiki/Zero_crossing
>http://electronicdesign.com/analog/digital-volume-control-eliminates-zipper-
>noise
>
>Thanks.
>Tim.

Not that my opinion should hold any weight...

For Wav Composer Not Toilet's sampler module, I created a zero-crossing
"detector" which would look N samples either side of loop points etc
for the nearest sample to zero. It never really worked as well as I
expected, always always needed x-fades as well...

then there was bi-directional looping which you could specify N samples
to jump hopefully to prefent than phase mirroring which is even worse.

I think the only time zero-crossings are any good is in hand-crafted
cutting of (very) simple waveforms.




More information about the Linux-audio-dev mailing list