Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
(
~def = SynthDef(\gendr, { arg low=0.1, band=0.0, high=0.0, notch=0.0, peak=0.0, out=0, gate=0, fadeTime=0.1,amp=0, pan=0,amp_dist=1, dur_dist=1,ad_param=1.0, dd_param=1.0,hz_min=440, hz_max=660,amp_scale= 0.5, dur_scale=0.5,init_cp= 12,osc_hz=10,mod_osc=0.0, mod_adc=0.0,svf_hz=880, svf_res=0.0,svf_lp=1, svf_bp=0, svf_hp=0, svf_notch=0, svf_peak=0;
var sig, adc, osc, gen, snd, env;
env = EnvGen.ar(Env.asr(attackTime:fadeTime, releaseTime:fadeTime), gate);
adc = SoundIn.ar(0);
osc = SinOsc.ar(osc_hz);
ad_param = K2A.ar(ad_param) + (adc * mod_adc) + (osc * mod_osc);
snd = Gendy2.ar(amp_dist, dur_dist, ad_param, dd_param,hz_min, hz_max, amp_scale, dur_scale, init_cp);
snd = SVF.ar(snd, svf_hz, svf_res, svf_lp, svf_bp, svf_hp, svf_notch, svf_peak);
Out.ar(out, Pan2.ar(snd * env * amp, pan));
//Out.ar(0, sig ! 2);
}).play(addAction: \addToTail);
)
// create the synth
~syn = Synth.new(\gendr);
// create control specs for the parameters
~specs = [
(name: \gate, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \fadeTime, spec: ControlSpec(0, 10, \lin, default: 0, units: "Sec")),
(name: \amp, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \pan, spec: ControlSpec(-1, 1, \lin, default: 0, units: "")),
(name: \amp_dist, spec: ControlSpec(0, 6, \lin, default: 0, units: "")),
(name: \dur_dist, spec: ControlSpec(0, 6, \lin, default: 0, units: "")),
(name: \ad_param, spec: ControlSpec(0.0001, 1, \lin, default: 0, units: "")),
(name: \dd_param, spec: ControlSpec(0.0001, 1, \lin, default: 0, units: "")),
(name: \hz_min, spec: ControlSpec(1, 10000, \exp, default: 220, units: "Hz")),
(name: \hz_max, spec: ControlSpec(1, 10000, \exp, default: 330, units: "Hz")),
(name: \amp_scale, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \dur_scale, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \init_cp, spec: ControlSpec(1, 20, \lin, default: 12, units: "")),
(name: \osc_hz, spec: ControlSpec(0.01, 10000, \exp, default: 10, units: "Hz")),
(name: \mod_osc, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \mod_adc, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \svf_hz, spec: ControlSpec(10, 10000, \exp, default: 880, units: "Hz")),
(name: \svf_res, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \svf_lp, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \svf_bp, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \svf_hp, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \svf_notch, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
(name: \svf_peak, spec: ControlSpec(0, 1, \lin, default: 0, units: "")),
];
// (to generate the above table:)
/*
~def.allControlNames.do({ arg ctl;
post("(name:\\");
post(ctl.name);
postln(", spec: ControlSpec(0, 1, \\lin, default: 0, units: \"\")),");
});
*/
// make a test UI
{
~ui = Window.new("gendr", Rect(0, 0, 840, 800));
~ui.front;
~ui.addFlowLayout(10@10, 10@10);
~specs.do( {
arg spec;
EZSlider(~ui, 800 @ 20, spec.name, spec.spec, { |sl| ~syn.set(spec.name, sl.value); }, labelWidth:80);
});
@shreeswifty

This comment has been minimized.

Copy link
Owner Author

@shreeswifty shreeswifty commented Dec 15, 2019

example from ezra to learn norns stuff

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment