RE: Handling cycles with no DelayNode

I am quite naïve about all of this, having some very rudimentary understanding of how graphs can be used in musical arrangement (based on what a friend of mine showed me on his Yamaha keyboard about 30 years ago), but how complex really are these graphs? Hundreds of nodes? Thousands? I am sometimes happy doing things in graph theory, when I can get things down to O(n^4), so O(n^2) seems maybe not so big an issue? I wrote a little simulation thingy some decades ago (sort of like Stella) and cycle detection was not that big an issue, but I was working with only hundreds of nodes. It seems like a breadth first search from any start node ought to terminate pretty quickly.

 

Robert, when you are talking about synchronous cycle detection, is the connectivity of the graph varying in real time (as in http://srufaculty.sru.edu/david.dailey/svg/graphs30.svg ? I suppose, when dealing with little tiny musical events that happen inside milliseconds, big funky searches could get expensive, but if the graph connectivity is constant throughout the composition then it seems not a big thing.

 

Again, apologies for the naiveté of my question, but I am intrigued to know more. It sounds fun.

 

Cheers

David

 

 

 

From: rocallahan@gmail.com [mailto:rocallahan@gmail.com] On Behalf Of Robert O'Callahan
Sent: Thursday, August 29, 2013 9:12 PM
To: public-audio@w3.org
Subject: Handling cycles with no DelayNode

 

The spec for connect() currently says "This is allowed only if there is at least one DelayNode in the cycle or an exception will be thrown" but it doesn't say what kind of exception. More importantly, I don't think we should throw an exception here. Synchronous cycle detection can get expensive when you're creating large graphs; it's likely to make graph construction O(N^2) for certain kinds of graphs.

I think instead we should say that cycles containing no DelayNodes simply produce silence. If browsers want to help developers find such bugs, they can provide developer tool assistance to do so --- and that could be much more useful than just an exception, for example it could report all the nodes in the cycle. (Efficient asynchronous cycle detection --- e.g. checking for cycles every Nms --- is easy.)

 

Rob

-- 

Jtehsauts  tshaei dS,o n" Wohfy  Mdaon  yhoaus  eanuttehrotraiitny  eovni le atrhtohu gthot sf oirng iyvoeu rs ihnesa.r"t sS?o  Whhei csha iids  teoa stiheer :p atroa lsyazye,d  'mYaonu,r  "sGients  uapr,e  tfaokreg iyvoeunr, 'm aotr  atnod  sgaoy ,h o'mGee.t"  uTph eann dt hwea lmka'n?  gBoutt  uIp  waanndt  wyeonut  thoo mken.o w  

Received on Friday, 30 August 2013 20:02:30 UTC