Ndef(\t, \default).play
Ndef(\t).set(\freq, 220) // fine
Ndef(\lo, {LFNoise0.kr(8).range(220,440)})
Ndef(\t).set(\freq, Ndef(\lo)) // fine
or in one line:
Ndef(\t).set(\freq, Ndef(\lo, {LFNoise0.kr(8).range(220,440)}))
but why can’t I do this?
Ndef(\lo, {LFNoise0.kr(8)}) // no .range here
Ndef(\t).set(\freq, Ndef(\lo).range(220,440)) // message 'range' not understood
Second question, why do I need the Ndef(\lo) at all? Is not possible to do something like:
Ndef(\t).set(\freq, LFNoise0.kr(8)) // 'can't set a control to a UGen'
or
Ndef(\t).set(\freq, {LFNoise0.kr(8)}) // either silence or crashes the server
this is ok though, in one line:
Ndef(\t).set(\freq, Ndef(\lo, {LFNoise0.kr(8).range(220,440)}))
or one of these:
Ndef(\t).set(\freq, NodeProxy.new(inputs: {LFNoise0.kr(8).range(220,440)} ))
Ndef(\t).set(\freq, NodeProxy.new.source_({LFNoise0.kr(8).range(220,440)} ))
So I guess, answering own question, that’s just the way it works?