ProxySpace NodeProxies let you rewrite a running synthesis graph mid-performance with an automatic crossfade
ProxySpace, from SuperCollider’s JITLib, provides a namespace where each tilde-prefixed variable (~x, ~y) becomes a NodeProxy: a placeholder for something running on the server (a synth graph or an event stream) that writes to a limited set of buses. Because proxies can be replaced and recombined while they play, reassigning a new function or Pbind to a named proxy does not stop the sound — ProxySpace crossfades from the old content to the new over a configurable fadeTime, with no gap or dropout. Proxies can reference one another by name (~z = { SinOsc.ar(~x * ~y) }), so rewriting ~x automatically propagates to every dependant, which is what makes modulation routing and modular patching possible. This continuous rewriting of named, running modules — rather than launching fixed structures — is the architectural foundation of live coding in SuperCollider.
Examples
p = ProxySpace.push;
~x = { SinOsc.kr(4) };
~y = { SinOsc.kr(13) };
~z = { SinOsc.ar(~x * ~y % 0.4 * 500 + 600) * 0.2 };
~z.play;
// rewrite live, no dropout:
~x = { SinOsc.kr(0.4) };
Assessment
Explain how a NodeProxy differs from a plain SynthDef, and describe what happens to the audio when you re-evaluate a proxy assignment during a performance. Boot ProxySpace, play a synth in a proxy, swap its oscillator mid-performance without stopping, and change fadeTime to hear the difference in the crossfade.