«Detuneable fat-saw with a pattern» by moncrey
on 14 Dec'13 23:47 in1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
( SynthDef(\fatsaw, { arg freq=440, amp=0.3, fat=0.0033, ffreq=2000, atk=0.001, dec=0.3, sus=0.5, rls=0.1,gate=1; var f1,f2,f3,f4,synth; f1=freq-(freq*fat); f2=freq-(freq*fat/2); f3=freq+(freq*fat/2); f4=freq+(freq*fat); synth = LFSaw.ar([f1,f2,f3,f4],[0,0.001,0.002,0.004,0.008]); synth = synth * EnvGen.kr(Env([0,1,sus,0],[atk,dec,rls],'lin',2),gate,doneAction:0); synth=Splay.ar(synth,0.7); synth=RLPF.ar(synth,ffreq*Linen.kr(gate,0.1,0.4,0.2,0),0.4); Out.ar([0,1],synth*amp); },[0.1,0.3,4,2]).add; ) ( TempoClock.default = TempoClock.new(2); fork{ z = Synth(\fatsaw,[\gate,0,\ffreq,500,\fat,0.5]); a=Pseq([0,7,12,5],inf).asStream; // musical degrees c = Pseq([40,38,45,47],inf).asStream; // root midi notes e = Pseq([0.825,0.375,0.25,0.25],inf).asStream; // note durations f = Pseq([1000,1500,2000,2500],inf).asStream; // filter freq value 0.1.wait; z.set(\gate,1); //set first root note d = c.next; 8.do{ // move filter freq once every 4 notes z.set(\ffreq, f.next); 4.do { z.set(\gate,1); z.set(\freq,(a.next + d).midicps); x=[0.451,0.45,0.449].choose; x.wait; z.set(\gate,0); e.next.wait; }; d = c.next; }; 2.wait; z.free; }; )
reception
Just learned about +.x adverb, could be used instead of the nested do
nice, but i would say this is wrong... Out.ar([0,1],synth*amp);
you're outputting to 3 channels (check with s.scope). 'synth' is already stereo so better to write it like this... Out.ar(0,synth*amp);
aha, much thanks for the tip.
for some reason i get no sound on this example, if i add "hello".postln; to the beggining of the fork it only gets executed once, and fails silently : (
If you don't set 'doneAction' to a value of '2' in your synth envelopes and you're using this SynthDef to play a tune (say, with a Pbind), you'll need adding nodes with each note which will eventually overload and crash the SC server...
*you'll be adding nodes