Re: [web-audio-api] AudioNode.disconnect() needs to be able to disconnect only one connection (#6)

> [Original comment](https://www.w3.org/Bugs/Public/show_bug.cgi?id=17793#0) by Chris Rogers on W3C Bugzilla. Mon, 30 Jul 2012 20:16:50 GMT

(In reply to comment #0)
> (Summary of email conversation in list)
> 
> There is currently no way to disconnect node A's connection to node B without
> disconnecting all connections from node A to other nodes.  This makes it
> impossible to disconnect node B from the graph without potential side effects,
> as you have to:
> 
> - call disconnect() on node A (which disconnects all its outputs)
> - reconnect every connection that node A used to have, EXCEPT the connection to
> node B.
> 
> Not only is this cumbersome, it will be problematic in the future when we solve
> the related issue of unconnected streams - which is currently exhibiting
> incorrect behavior in Chrome (it pauses the audio stream), but is
> underspecified in the spec today.  (filing separate bug).  Disconnecting then
> reconnecting would have to have no side effects.  (It works okay today, but not
> ideal - can click.)
> 
> Recommended solution:
> - there should be a way to remove a single connection (by supplying the
> destination node to be disconnected, since there can only be one connection to
> a given destination node [tested]).
> 
> E.g.: the IDL for disconnect should read:
> 
>         void disconnect(in [Optional] AudioNode destination, in [Optional]
> unsigned long output = 0)
>             raises(DOMException);
> 
> this lets us keep most compatibility - node.disconnect() will still remove all
> connections.

I agree we need to extend disconnect() with more optional parameters to allow disconnecting specific connections.

I think we'll also need to add an "input" parameter similar to the connect() method to be able to say *which* specific input to disconnect:

void disconnect(in AudioNode destination, in [Optional] unsigned long output = 0, in [Optional] unsigned long input = 0)
            raises(DOMException);

This would make the API look the same as connect(), and allow disconnecting an exact connection.

---
Reply to this email directly or view it on GitHub:
https://github.com/WebAudio/web-audio-api/issues/6#issuecomment-24244071

Received on Wednesday, 11 September 2013 14:31:54 UTC