- From: Alex Russell <slightlyoff@google.com>
- Date: Thu, 25 Jul 2013 11:47:36 -0700
- To: Janessa Det <jandet@gmail.com>
- Cc: "www-tag@w3.org List" <www-tag@w3.org>
- Message-ID: <CANr5HFW=TrQjgNeeCvayOgKUNcYucadyi+T2KQAw_Qr3wkiGZA@mail.gmail.com>
On Wed, Jul 24, 2013 at 11:05 PM, Janessa Det <jandet@gmail.com> wrote: > Thank you for the detailed responses -- excited to see how this feedback > document could affect the Web Audio specs (yay Open Standards!). A quick > clarification re: the .connect chaining response below: > > > I feel like I don't have a great proposal here. Returning from connect > seems like it's not exactly what you want; although returning both and > allowing you to use destructuring in ES6 to get closer to the mark might be > better. > > The simple solution of returning the destination node (as you propose) > would be a huge first step for cleaning up graph composition code. As an > example: > > Currently connecting up nodes often looks something like this: > > oneShotSound.connect(lowpass); > lowpass.connect(panner); > panner.connect(gainNode2); > gainNode2.connect(compressor); > compressor.connect(destination); > > With chaining it could look like this -- a one liner -- formatted here for > extra clarity: > > oneShotSound > .connect(lowpass) > .connect(panner) > .connect(gainNode2) > .connect(compressor) > .connect(destination); > > This is a huge win in expressiveness and readability. > And a great example. Adding it to the document. Thanks so much! > Admittedly, things may still remain a bit complex for more complex audio > graphs with many diverging paths, although being able to at least chain up > linear paths would contribute to simplifying & modularly organizing the > definition of these complex graphs as well. > Right. I think I get a bit worried that the JQuery experience might convince you that you're dealing in terms of "oneShotSound" the whole time, but I don't think it matters here; and honestly I wish DOM returned appended nodes in the same way. > I have to give it a little more thought, but I am not sure that ES6 > destructuring will help in cleaning up the connection of audio graphs. > First, for code clarity, I think it is important to encourage separation > of the node creation and graph construction imo. Second, if we are trying > to simplify the definition of branches in a complex audio graph via use of > destructuring, I feel like it would not really address the problem as > neatly as we'd hope. As an example: > > var [branch1, branch2] = [ > node1.connect(node1b), > node2.connect(node2b) > ]; > > My instinct here would be then wanting to connect the source node to all > these branches I have defined which doesn't work as branch1 and branch2 now > represent the destination nodes node1b and node2b, respectively. In this > case I would have wanted .connect to return the source then, which is > rather arbitrary and specific to only this use case. We could use this to > connect to the destination, however, as in: branch1.connect(dest) and > branch2.connect(dest), but this could be done in each of the branch > definitions anyways. It does not simplify the code or clarify it imo. > I think I was going for something more like: { node1.in, node1.out } = node1b.someOperation(node2b); It's not much better and you're right, I don't think it helps. In/out props would need to be getter/setter pairs and it's not great. What we really want, I think, are hierarchy properties: "children", "parents", or similar. > If we return both source and destination nodes to solve this > unidirectional problem, I agree that it could possibly enable a more > powerful solution for being able to connect complex audio graphs in one > fell swoop. > Right > However, I think it would be overly complex and would make the simple > chaining demonstrated above impossible. It would be more of a confusing > lose than a win. > > Please do correct me if I misunderstand what you were thinking in terms of > ES6 destructuring helping in this context. > > > ~Janessa >
Received on Thursday, 25 July 2013 18:48:34 UTC