On Sat, Mar 01, 2003 at 03:03:37AM +0000, Simon Jenkins wrote:
In ssm I sort
the network each time a connection is made/destroyed, and
generate a ordered list of modules to process from the root up to the
leaves. It has to cope with circular sections, which unavoidably introduce
latency, but it works. It also automatically means unconnected modules
don't get processed, which is nice.
[...]
SSM and amble both ignore unconnected nodes which is nice if that's what you
want, but not if its not. A general solution to the graph sorting
problem would
need to at least allow for the possibility that an unconnected node
might need
to be processed.
That's easily solved... but here's a problem that's not:
A general solution to the graph sorting problem would have to know about the
I/O dependencies *inside* the nodes. This isn't usually a problem on
the scale
where a node represents, for example, a simple filter or oscillator. But
what about
the scale where a node represents a quad noise gate or a reasonably
well-featured
mixer (ie with inserts etc)? Nodes like that aren't just difficult to
place correctly
in the execution order... they can be *impossible* to place correctly in
a very large
number of perfectly reasonable graphs: Different parts of their
internals need to
be executed at different times!
then these components must be built of other components...
i dont see a reason why one wants a big complex component
if it could be built from smaller components...
(other than performace)
at least we all like UNIX, dont we ? :)
and to reduce the performace penalty of building complex components
out of many small components is the goal of XAP as i see it...
--
torben Hohn
http://galan.sourceforge.net -- The graphical Audio language