Consensus gathering for the Dezippering issue

Hello,

In our last teleconference we discussed the issue of de-zippering[1],
which is the effect observed in some current implementations when a
developer sets a parameter using one of the setters, e.g.

   context = new AudioContext;
   osc = context.createOscillator()
   osc.connect(context.destination)
   osc.start(0)
   osc.frequency = 1000 // Will have an audible portamento or "slide" effect.

Dezippering is designed to prevent audio glitches when parameters are
changed. For more detail see there are two open issues[2-3] and a
recent thread on this list[4].

On the call we noted that:
1) Dezippering (especially of frequency on oscillators and playback
rate of audio buffers) was somewhat surprising to developers
2) Removing it would indeed result in some audible glitches
3) A lot of the confusion is due to people setting parameters using
the setters on AudioParam rather than by using the scheduled parameter
change functions (e.g. setValueAtTime), when the latter would in fact
be better for their application.
4) Chrome in particular already implements this and has done for some time.

On the call the participants reached a consensus to:

 1) Keep dezippering in the spec
 2) Apply it universally to all parameters (such that there are no
"edge cases" in the spec
 3) Define it in terms of one of the other methods (probably
exponentialRampToValueAtTime) to simplify the spec and also to
indicate to developers how to achieve parameter changes without
dezippering by using those methods directly.

We didn't have any representatives from Mozilla on the call, so it
would be great to get their input.

I think Olivier would like to consider this a Call for Consensus, so
if I've missed anything, please say so. Otherwise, if we agree on the
above approach then we can start turning this into a PR against the
current spec.

(Personally, I'd quite like to change the wording from dezippering to
"parameter smoothing", as I'm not sure how familiar people are with
the former term, but we can probably save that discussion for the PR)

Cheers,

Chris


[1] http://www.w3.org/2013/11/21-audio-minutes.html#item03
[2] https://github.com/WebAudio/web-audio-api/issues/48
[3] https://github.com/WebAudio/web-audio-api/issues/76
[4] http://lists.w3.org/Archives/Public/public-audio/2013OctDec/thread.html#msg242

Received on Tuesday, 3 December 2013 19:58:29 UTC