> Which goes back to my original point - I > think a major re-thinking of architecture would be needed, and > therefore a major re-write of code. > > Sounds like SuperCollider 4 to me. the advantage would be, that it is only a major rewrite, not a complete redesign of a computer music system ;) thinking about parallelism in computer music systems, the supercollider-style of distinguishing between a node-graph and a ugen-graph helps a lot, since both dependency tracking and ugen clustering can be exposed to the user. from my experience, an automatic ugen-graph clustering [1] is not feasible, when dealing with resources, especially when applied on declarative (max-like) systems. one could think of a supercollider-style pseudocode like: ~rec = Synth.new('record', recargs); // record buffer ~fx = Synth.new('fx', fxargs); // effect engine ~players = Array.fill(20, { Synth.new('player', playerargs, [~rec, \addAfter, ~fx, \addBefore]) }); // 20 parallel players that would define a graph, described by the adjacency list: ~rec -> ~players[0]..~players[19] ~players[0]..~players[19] -> ~fx one would still need to guard the resources using spin-locks (possibly with reader-writer semantics). i am not very familiar with the internals of scsynth, but if the synthdef/ugen interface is sufficiently generic, i may be able to integrate it with the nova-server and we would have a running prototype... :) best, tim [1] http://www.aes.org/e-lib/browse.cfm?elib=14144 -- tim@xxxxxxxxxx http://tim.klingt.org A good composer does not imitate; he steals. Igor Stravinsky
Attachment:
signature.asc
Description: OpenPGP digital signature