Hmmm, after testing I found that sadly the following will run (without errors) but won't "fly";
===============
SawOsc s => UGen patchpoint => dac;
second => now;
new LPF @=> patchpoint;
second => now;
========================
It seems that asignment to a UGen doesn't affect the Ugen-graph?
That sounds like the correct behaviour, as you only change the memory address 'patchpoint' is pointing to. The actual graph will know nothing of this event.
I was thinking of a class that achieves what you are aiming for: UGenRepatch - usage would look like:
UGenRepatch repatch;
repatch.ugen(LPF lpf);
repatch.addIn(SawOsc osc);
repatch.addOut(dac);
To setup the basic graph. After this you could repatch by saying:
repatch.ugen(HPF hpf);
Internally it would then unchuck the old LPF and place the HPF in the middle.
Obviously you could also write functions to remove/replace Ins or Outs from the central UGen.
This method adds yet another wrapper around the UGens, but might be worth it for the flexibility it provides.
-Tiemen