NodeProxyEditor

an editor for nodeproxies that provides

sliders for numerical settings,

mapping of kr proxies to parameters,

and optional monitor/play control.

p = ProxySpace.push(s);

n = NodeProxyEditor(extras: [\scope, \reset, \doc], monitor: true, sinks: false);

NodeProxyEditor(extras: [], monitor: false) // barebones

n.proxy_(~test).pxKey_(\test);

(

~test = { |freq=300, dens=20, amp=0.1, pan|

Pan2.ar(Ringz.ar(Dust.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2), pan)

};

)

// gets specs for slider ranges from Spec.specs:

Spec.add(\dens, [0.1, 100, \exp, 0.01, 10]);

n.fullUpdate;

~test.set(\freq, exprand(100.0, 2000.0));

ProxyMixer(p);

~test.playN;

s.scope;

( // keys go away if not needed

~test = { |freq=300, dens=20, amp=0.1|

Pan2.ar(Ringz.ar(Dust.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2))

};

)

( // and are added in order if needed

~test = { |freq=300, intv=0, dens=20, amp=0.1|

Pan2.ar(

Ringz.ar(

Dust.ar(dens ! 2, amp / (dens.max(1).sqrt)),

freq * [intv, intv.neg].midiratio, 0.2))

};

)

~test.lag(\intv, 0.1);

~lfo = { LFNoise0.kr(8, 4) };

~test.map(\intv, ~lfo); // mapping is shown

~test.unmap(\intv);

Spec.specs.put(\intv, ControlSpec(0, 24, \lin, 0.01, 0)); n.fullUpdate;

~test.set(\freq, rrand(200, 500), \intv, rrand(-5.5, 5.5));