[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sc-users] Re: will there ever be real multiprocessor support?



> 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