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));