W3C home > Mailing lists > Public > public-audio@w3.org > October to December 2011

Re: TPAC F2F and Spec Proposals

From: Anthony Bowyer-Lowe <anthony@lowbroweye.com>
Date: Tue, 18 Oct 2011 09:47:43 +0100
Message-ID: <CAMCSOPXnnXGr1KQ22x4f76Maa09n_=_Kb+Av_-yByYNCru2J_A@mail.gmail.com>
To: public-audio@w3.org
On 18 October 2011 09:19, Olli Pettay <Olli.Pettay@helsinki.fi> wrote:

>
>>  They have very mathematically precise algorithms.
>>
> I don't see them in the spec.
>
> Even simple thing like DelayNode doesn't say in which way "implementation
> must make the transition smoothly".
> And if implementations don't provide the exactly the same
> output, using the API in music production would be pretty unreliable.
> One couldn't play the same audio data the same way in different
> browser.


Indeed. Even something as conceptually simple as the GainNode can have
audibly different results according to how implementations deal with numeric
accuracy, unity overflow and order of operations.

[Which tangentially reminds me, I'd love the GainNode to handle negative
gains in order to provide signal phase inversion without requiring an
expensive JavaScript processing node. But that's just the modular synthesist
in me.]

And whilst biquad filters are very well defined mathematically, variations
in their numeric implementation can lead to all sorts of different phase and
frequency responses. E.g. bit length of floats used in the calculations, and
coefficient manipulation.

This is not a big deal right now - what is currently in the Web Audio API is
a great starting foundation - but these issues should be noted as a
consideration for future specification refinement and reference
implementations. Conversely, maybe it'll be healthy for browser vendors to
compete on providing the best sounding native effects. (But what if the user
prefers the convolution in browser whilst their favourite filter is provided
by another?)


Regards,
Anthony.
Received on Tuesday, 18 October 2011 08:48:27 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 18 October 2011 08:48:28 GMT