> 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