home/ atoms/ sc-synth-node-tree

Every running synth is a node in the server's Node Tree; .free removes one node, ctrl+. frees them all

The SuperCollider server maintains a tree of running synth nodes. Each {...}.play or Synth("name") call adds a node, given a temporary name (temp_101, etc.) when anonymous; s.plotTree opens a GUI showing all active nodes. A node persists even while it generates silence — it does not free itself unless told to, so it must be removed with .free or by a UGen with doneAction: 2 that auto-frees the synth when it finishes. To free selectively, store the result of .play in a variable (x = {SinOsc.ar}.play) which gives a handle: x.free removes only that synth. ctrl+. (equivalently s.freeAll) is the blunt panic button that frees every node at once. Nodes left running that produce nothing but still consume server resources are called ‘zombie synths’.

Examples

s.plotTree;
w = {SinOsc.ar(60.midicps,0,0.1)}.play;
x = {SinOsc.ar(64.midicps,0,0.1)}.play;
w.free; // remove only w
// ctrl+. frees all remaining nodes

Assessment

Run three synths without storing their references and explain why you can’t free them individually. Repeat storing each in a variable a, b, c, and stop only b without affecting a or c; then free all in reverse order.

“Eachrunningsynthintheserverisrepresentedbyanode.Wecan takeap eekatthistreeofno deswiththecommands.plotTree.”
corpus · a-gentle-introduction-to-supercollider-bruno-ruviaro · chunk 13
“Each running synth in the server is represented by anode. We can take a peek 84 at this tree of nodes with the commands.plotTree.”
corpus · a-gentle-introduction-to-supercollider-ruviaro-archive-org-c · chunk 14