W3C home > Mailing lists > Public > public-audio@w3.org > April to June 2013

Re: The output of ConvolverNode in the absence of a convolution buffer

From: Chris Wilson <cwilso@google.com>
Date: Tue, 11 Jun 2013 16:58:58 -0700
Message-ID: <CAJK2wqUcWD8aOJg5wvLrjaaqr+6sg0PbGvkmDofy3+865qxySA@mail.gmail.com>
To: Ehsan Akhgari <ehsan.akhgari@gmail.com>
Cc: "public-audio@w3.org" <public-audio@w3.org>
On Tue, Jun 11, 2013 at 4:44 PM, Ehsan Akhgari <ehsan.akhgari@gmail.com>wrote:

> On Tue, Jun 11, 2013 at 7:30 PM, Chris Wilson <cwilso@google.com> wrote:
>
>> Why would passing through the input make more sense to you?
>>
>
> Because that's what many of the other processing nodes (such as GainNode,
> DelayNode, etc) do by default, so it seems more consistent.
>

Not exactly.  GainNode and DelayNode simply initialize their parameters to
a given value that happens to result in a pass-through.  Gain obviously is
set to unity as a default; delay has zero as the initial delayTime.
 Convolver isn't initialized to a buffer that results in pass-through -
it's essentially still in an uninitialized state.

[Constructor(AudioBuffer buffer)]
>>
> interface ConvolverNode : AudioNode {
>   boolean normalize;
> };
>
> And that would eliminate the question of what to do with a null
> AudioBuffer altogether.
>

True, although it's handy to be able to change the buffer later.


> If I was using the convolver as an effects node in a mixer, passing
>> through the input until I set the buffer would "double up" the original
>> signal if the effects mix were set to 50%.  That seems like odd behavior.
>>
>
> I'm not quite sure what that means...  Can you please clarify?
>

If I'm using Convolver to get reverb on an effect send, I'd kind of expect
no original signal bleed-through until I initialize it.


> Also, does this behavior for other node types surprise you in the same
> way?  Really what's more interesting to me is consitency, one way or
> another.
>

I see what you're saying, but from using the nodes, I don't think it's
actually consistency in the way you'd expect.  BiquadFilter and
DynamicsCompressor don't work this way, for example; however, I note that
Waveshaper does (explicitly just pass through), and it's the only other
"through" node with a buffer, so perhaps that is the best approach.

Since Chris already agreed, go for it.  I think it's slightly odd from the
usage side, but not that big a deal.
Received on Tuesday, 11 June 2013 23:59:29 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:03:18 UTC