class:: Fdef summary:: lazy function proxy categories:: Libraries>JITLib>Patterns, Live Coding related:: Classes/Pdef, Classes/Tdef, Classes/Pdefn, Classes/Ndef description:: Placeholder for functions to calculate with. See also: link::Classes/Maybe:: and the link::Overviews/JITLib:: overview. ClassMethods:: private::initClass method::new argument::key if no instance exists with this name, create a new one, otherwise return the existing one. argument::val If a link::Classes/Function:: is given, replace the old function with the new one. Examples:: code:: Fdef(\x, { 8 + 9 }); Fdef(\y, Fdef(\x) - 3); Fdef(\y).value; Fdef(\x, 3); Fdef(\y).value; Fdef(\x, { |x=0| x }); Fdef(\x).value(8); Fdef(\y).value(8); z = Fdef(\x) * Fdef(\y) + { 1.0.rand }; z.value; z.value(400); :: code:: // sound example ( s.boot; SynthDef("gpdef", { arg out=0, freq=440, sustain=0.05, amp=0.1; var env; env = EnvGen.kr(Env.perc(0.01, sustain), doneAction: Done.freeSelf) * amp; Out.ar(out, SinOsc.ar(freq, 0, env)) }).add; ) // fork a thread that plays some sounds ( Fdef(\freq, 440); Fdef(\dur, 0.2); fork { loop { s.sendMsg("/s_new", "gpdef", -1, 1,1, \freq, Fdef(\freq).value); Fdef(\dur).value.wait; } }; ) // some modifications Fdef(\freq, Fdef(\midinote, 60).midicps); Fdef(\midinote, { [67, 64, 65].choose }); Fdef(\midinote, { [67, 64, 65].choose } + Fdef(\offset)); Fdef(\offset, { 4.rand }); Fdef(\dur, 0.23); ::