Supernova ParGroups and addActions


#1

According to the docs \addToTail and \addToHead should work as usual with ParGroups. But this doesn’t:

Server.supernova;
s.boot;
x = ParGroup(s);
y = ParGroup(x, \addToTail);
z = ParGroup(x, \addToTail);

The groups seems to be added to the head. \addBefore and \addAfter seems to work though. Is this intended behavior (i.e. the docs are wrong) or should it be considered a bug?


#2

Found this: https://github.com/supercollider/supercollider/issues/3100
Seems related. This is not fixed yet, right?


#3

Supernova appears to have found everywhere in scsynth’s feature spec that was not absolutely 100% unambiguously stated, and interpreted it differently from scsynth. It’s damn annoying.

Yes, it’s a bug. Not the same bug. Can you file an issue at github?

hjh


#4

Thanks for confirming. I filed an issue. https://github.com/supercollider/supercollider/issues/4306


#5

Actually, as I think about it again, my analysis was incorrect. I don’t think this is really a bug.

ParGroup assumes that there are no node-ordering dependencies among its children – that is, all of its children should be able to evaluate in any order without breaking signal flow.

If there are any node-ordering dependencies (e.g., source --> effect) within a ParGroup, then it’s impossible to distribute the children among different DSP threads (thus CPU cores).

Therefore, the ordering of children within a ParGroup is arbitrary. It doesn’t matter if y or z is at the tail. (If it does matter, then ‘x’ should be a regular Group – in which case, supernova does respect \addToTail.)

I changed the github issue to documentation. The help should be clear that users should not expect to control node ordering within ParGroup.

hjh