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