According to the docs \addToTail and \addToHead should work as usual with ParGroups. But this doesn’t:
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?
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?
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
I changed the github issue to documentation. The help should be clear that users should not expect to control node ordering within ParGroup.