Supercolldier ..Hell yeah

Modular Synth design and releases (Reaktor, SynthEdit, Tassman, etc.)
Post Reply New Topic
RELATED
PRODUCTS

Post

Made a mictronic clone in supercollider ( just like I did in reaktor a few years ago :lol: )
But man is supercolldier flexible , elektron syle parameter locks for all arguments etc ..
i have lot to learn , but I love the synthesis options and sequence stuff
here's the code

Code: Select all

(
SynthDef (\Tonic,
{   |oscfreq=50,lfofreq=200,lfoamount=0,penvamount=200,
		decaycurve=(-5),patt=0.001,pdec=0.200,shamount=0,shrate=3,
		ampatt=0.001,ampdec=0.7,ampdecaycurve=(-5),oscwaveform=1,signalout=0.7,pan=0.2,noiseatt=0.001,noisedec=0.164,noiseamp=0.6,xfade=0,nfiltfreq=1800,noisereso=0.2,noisefiltselect=0,
		drive=2|
		var sin,tri,saw,lfo,modsh,penv,ampenv,sh,signal,noisesig,noiseenv,noisesigbp,noisesighp,noisesiglp;
		noisesig=WhiteNoise.ar*noiseamp;
		noiseenv=EnvGen.ar(Env([0,1,0],[noiseatt,noisedec],[0,-5]));
		noisesig=noisesig*noiseenv;
		noisesigbp=BPF.ar(noisesig,nfiltfreq,rq:noisereso);
		noisesighp=RHPF.ar(noisesig,nfiltfreq,rq:noisereso);
		noisesiglp=RLPF.ar(noisesig,nfiltfreq,rq:noisereso);
		noisesig=Select.ar(noisefiltselect,[noisesigbp,noisesighp,noisesiglp]);
		sh=LFNoise0.ar(shrate)*shamount;
		penv=EnvGen.ar(Env([0,1,0],[patt,pdec],[0,decaycurve]),doneAction:0)*penvamount;
		ampenv=EnvGen.ar(Env([0,1,0],[ampatt,ampdec],[0,ampdecaycurve]),doneAction:2);
		lfo=SinOsc.ar(lfofreq)*lfoamount;
		sin=SinOsc.ar(oscfreq+penv+lfo+sh)*ampenv;
		tri=LFTri.ar(oscfreq+ penv +lfo+sh)*ampenv;
		saw=LFSaw.ar(oscfreq+penv+lfo+sh)*ampenv;
		signal=Select.ar(oscwaveform,[sin,tri,saw]);
		signal=XFade2.ar(signal,noisesig,pan:xfade);
		signal=((signal)*drive).tanh;
		signal=Pan2.ar(signal,pos:pan)*signalout;
		Out.ar(0,signal);
	}).add
)



/////
~tonzer=Synth(\Tonic,[
			\oscwaveform,0,////////////0=sine,1=triangle,2=saw
			\oscfreq,50,///////////////Osc frequency
			\lfofreq,100,//////////////Osc pitch lfo frequency
			\lfoamount,0,//////////////Osc pitch lfo amount
			\penvamount,200,///////////Osc pitch envelope amount
			\decaycurve,(-5),//////////Osc decay curve
			\patt,0.001,///////////////Osc pitch envelope attack
			\pdec,0.200,///////////////Osc pitch envelope decay
			\shamount,0,///////////////Osc pitch Sample and hold amount
			\shrate,3,/////////////////Osc pitch Sample and hold rate
			\ampatt,0.001,/////////////Osc amp atack
			\ampdec,0.7,///////////////Osc amp decay
			\ampdecaycurve,(-5),///////Osc amp decay curve
			\noiseamp,0.6,/////////////Noise amp
			\nfiltfreq,1800,///////////Noise filter freq
			\noiseatt,0.001,///////////Noise attack
			\noisedec,0.164,///////////Noise Decay
			\noisefiltselect,0,////////Noise filter select 0=bandpass, 1=Reso highpass, 2= reso Lowpass
			\noisereso,0.5,////////////Noise filter Reso
			\xfade,0,//////////////////Crossfade between   Osc and Noise
			\drive,2,//////////////////Drive amount into Tanh shaper
			\pan,0,////////////////////pan output
			\signalout,0.7,////////////Signal output volume
])

~tonzer.free;
/////////
~fanker=Synth(\Tonic,[\oscfreq,100,\lfofreq,100,\lfoamount,100,])


(
Pdef(\yeah,
	Pbind(\instrument,
		\Tonic,
		\dur,Pseq([1,1/2,1,1/2,1/4,1/2,1/4,1/4,1/2,1,1/4,1/4,1/4,1/4,1/4,1/4],inf),
		\oscwaveform,Pseq([0,0,0,0,0,0,1,1,1,1,1],inf),////////////0=sine,1=triangle,2=saw
		\oscfreq,50,///////////////Osc frequency
		\lfofreq,Pseq([50,100,1000,100],inf),//////////////Osc pitch lfo frequency
		\lfoamount,Pwhite(0,1000,inf),//////////////Osc pitch lfo amount
		\penvamount,200,///////////Osc pitch envelope amount
		\decaycurve,(-5),//////////Osc decay curve
		\patt,0.001,///////////////Osc pitch envelope attack
		\pdec,0.0150,///////////////Osc pitch envelope decay
		\shamount,0,///////////////Osc pitch Sample and hold amount
		\shrate,0,/////////////////Osc pitch Sample and hold rate
		\ampatt,0.001,/////////////Osc amp atack
		\ampdec,0.250,///////////////Osc amp decay
		\ampdecaycurve,(-5),///////Osc amp decay curve
		\noiseamp,0.6,/////////////Noise amp
		\nfiltfreq,Pseq([800,200,1200,400,120,100,1200],inf),///////////Noise filter freq
		\noiseatt,0.001,///////////Noise attack
		\noisedec,Pwhite(0.126,0.464,inf),///////////Noise Decay
		\noisefiltselect,0,////////Noise filter select 0=bandpass, 1=Reso highpass, 2= reso Lowpass
		\noisereso,Pseq([0.5,0.4,0.1,1,1,1,0.2,0.2,],inf),////////////Noise filter Reso
		\xfade,Pseq([-1,-1,-1,-1,-1,0,1,0,1,0,1,0,1,0,1,1,1,1],inf),//////////////////Crossfade between   Osc and Noise
		\drive,4,//////////////////Drive amount into Tanh shaper
		\pan,-0.2,////////////////////pan output
		\signalout,0.3,////////////Signal output volume
	)
)
)
/////
(
Pdef(\bleah,
	Pbind(\instrument,
		\Tonic,
		\dur,Pseq([1],inf),
		\oscwaveform,0,////////////0=sine,1=triangle,2=saw
		\oscfreq,50,///////////////Osc frequency
		\lfofreq,Pseq([50,100,1000,100],inf),//////////////Osc pitch lfo frequency
		\lfoamount,0,//Osc pitch lfo amount
		\penvamount,200,///////////Osc pitch envelope amount
		\decaycurve,(-5),//////////Osc decay curve
		\patt,0.001,///////////////Osc pitch envelope attack
		\pdec,0.2,///////////////Osc pitch envelope decay
		\shamount,0,///////////////Osc pitch Sample and hold amount
		\shrate,0,/////////////////Osc pitch Sample and hold rate
		\ampatt,0.001,/////////////Osc amp atack
		\ampdec,0.650,///////////////Osc amp decay
		\ampdecaycurve,(-5),///////Osc amp decay curve
		\noiseamp,0.6,/////////////Noise amp
		\nfiltfreq,Pseq([800,200,1200,400,120,100,1200],inf),///////////Noise filter freq
		\noiseatt,0.001,///////////Noise attack
		\noisedec,Pwhite(0.126,0.9,inf),///////////Noise Decay
		\noisefiltselect,0,////////Noise filter select 0=bandpass, 1=Reso highpass, 2= reso Lowpass
		\noisereso,Pseq([0.5,0.4,0.1,1,1,1,0.2,0.2],inf),////////////Noise filter Reso
		\xfade,Pseq([-1,1,-1,1,-1,-1,-1,-1],inf),//////////////////Crossfade between   Osc and Noise
		\drive,3,//////////////////Drive amount into Tanh shaper
		\pan,0.3,////////////////////pan output
		\signalout,0.5,////////////Signal output volume
	)
)
)






Pdef(\yeah).play(t);
Pdef(\yeah).stop;

Pdef(\bleah).play(t);
Pdef(\bleah).stop;

t=TempoClock(124/60).permanent_(true)
File two Pbinds controlling the synthdef
https://gearspace.com/board/attachment. ... 1656605832
Eyeball exchanging
Soul calibrating ..frequencies

Post

Looks very concise for the capabilities! Do you have a recommended resource for getting started?

Post

imrae wrote: Thu Jun 30, 2022 8:09 pm Looks very concise for the capabilities! Do you have a recommended resource for getting started?
That's a tough one , if you're like me coming from a non coding background , you're in for a ride and lot's of frustration .
The supercollider forum is a godsend :tu: , and all the tutorials by Eli Fielsteel , the supercollider book and the help file
Supercollider is damn difficult , still learning everyday ..that is the sc language ..it melts my brain :hihi:
I have the advantage of knowing a decent amount of synthesis knowledge in general and once you understand the basic concepts of declaring variables, arguments it's easy to build synthdefs .
Arguments are just like variables but they can be controlled from outside the graph function
The inputs to ugens are inside the brackets
Example SinOsc.ar ( frequency, phase , mul,add )
If you want phase modulation , you insert another sineosc at the location where the phase is .
Like this SinOsc.ar ( frequency:100, phase :SinOsc.ar(freq200)),
Let's give them variables
var modulator ,carrier , env;
modulator=SinOsc.ar(freq:100,mul:0.5);
env=Envgen.ar(Env[0,1,0 ] [0.001,0.250 ] [0,-5 ]),donecation ) //this is an envelope going from 0 to 1 in 0.001 second and from 1 to 0 in 0.250 seconds with an expoential curve
modulator=modulator*env ..remember how we declared varaible modulator , here we decalare it agai but it's also mudltiplied by an envelope which will determine ow much of phase modualtion is going on
carrier=Sinosc.ar(freq:200,phase:modulator),
I didn't give the carrier an envelope
Like I said , the dsp part is easy for me , Im now into exploring the sequencer options ..


Here's some great stuff done by a power user
https://www.youtube.com/watch?v=C2C0nqtIHRg
https://www.youtube.com/watch?v=QU5eJi4KFZE
Eyeball exchanging
Soul calibrating ..frequencies

Post

I'm curious what you mean with 'elektron syle parameter locks'? I've been always intrigued by Supercollider but the learning curve seems so steep. A sequencer to start with and tweaking synth params seems like a good starting point

Post

When you create a synthdef , you're declaring arguments for the parameters you want to control , see this like the knobs on your synth.
If you then sequence this synth with Pdefs, all the arguments (parameters ) can be sequenced
Eyeball exchanging
Soul calibrating ..frequencies

Post Reply

Return to “Modular Synthesis”